开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 11128|回复: 26
收起左侧

[分享] 易语言VST宿主开发支持库来了 玩音频的朋友有福利啦 用易语言也可以编写自己的机架

[复制链接]
发表于 2018-7-26 11:30:49 | 显示全部楼层 |阅读模式   河北省沧州市


分享一个可以编写VST机架的调用支持库 可以调用ASIO接口和VST接口 这个支持库是由本人亲自编写的 花了很长时间 看了很久ASIO和VST的开发文档花了我两个多月时间才编写出来的 易语言完美调用 支持静态编译 我这也算为咱易语言做了一个贡献吧 这个支持库我提供了两个版本 一个是C++版本 (asio.h和asio.lib)另一个是易语言支持库(asio.fne和asio.lib)玩音频软件的朋友有福利了 有了这个支持库 你可以用很少的代码快速开发一个VST机架 这个支持库在开发阶段时 由麻拐博客 野狼音效 工号音效 渡口音频苏阳 测试过BUG 现在BUG已全部排除 已非常稳定 目前支持库已授权给野狼音效网 现在他们正在开发自己的机架 核心就是我写的这个支持库 DTI88NI66H2_PU1H.png _2T[O`8MB[ZO87E)_~2`VCS.png


需要支持库的朋友如果有兴趣可以加我的QQ:615588190 提供源码 例程 提供技术支持






下面是支持库C++声明,因为函数太多没法在论坛一一解释 我后期会录一套完整视频教程 帮助易友们快速了解我们这个支持库





ASIO SDK


LRESULT WINAPI IASIOInit();//初始化
LRESULT WINAPI IASIOExit();//释放
LRESULT WINAPI IASIOLoadDriver(LPSTR);//加载ASIO
LRESULT WINAPI IASIOCloseDriver();//卸载ASIO
LRESULT WINAPI IASIOCreateBuffers(LONG);//创建缓冲区
LRESULT WINAPI IASIODisposeBuffers();//清除缓冲区
LRESULT WINAPI IASIOUpdataBuffer();//更新缓冲区
LRESULT WINAPI IASIOSetDriverSampleRate(DOUBLE);//设置采样率
LRESULT WINAPI IASIOGetDriverSampleRate();//取采样率
LRESULT WINAPI IASIOCanSampleRate(DOUBLE);//判断采样率是否被支持
LRESULT WINAPI IASIOGetDriverIndex();//取当前已加载设备的索引
LRESULT WINAPI IASIOGetInChanneLatencies();//取输入设备延时
LRESULT WINAPI IASIOGetOutChanneLatencies();//取输出设备延时
LRESULT WINAPI IASIOGetDriverName(LONG, LPSTR);//获取设备名称
LRESULT WINAPI IASIOGetDllPath(LONG, LPSTR);//获取DLL文件地址
LRESULT WINAPI IASIOGetClockSources(LPVOID, PLONG);//取时钟源
LRESULT WINAPI IASIOSetClockSource(LONG);//设置时钟源
LRESULT WINAPI IASIOStart();//启动音频
LRESULT WINAPI IASIOStop();//停止音频
LRESULT WINAPI IASIOOutputReady();//告诉驱动程序主机已完成处理
LRESULT WINAPI IASIOFuture(LONG, LPVOID);//功能选择器
LRESULT WINAPI IASIOGetDriverIs();//获取ASIO设备数量
LRESULT WINAPI IASIOControlPanel();//显示ASIO控制面板
LRESULT WINAPI IASIOGetInChanneIs();//取输入通道数量
LRESULT WINAPI IASIOGetOutChanneIs();//取输出通道数量
LRESULT WINAPI IASIOGetInChanneName(LONG, LPSTR);//取输入通道名称
LRESULT WINAPI IASIOGetOutChanneName(LONG, LPSTR);//取输出通道名称
LRESULT WINAPI IASIOSendBufferTrack(PFLOAT, PFLOAT);//发送音轨
LRESULT WINAPI IASIOCopyBufferTrack(PFLOAT, PFLOAT);//复制音轨
LRESULT WINAPI IASIOSetBufferValue(PFLOAT, LONG);//设置缓冲区音量
LRESULT WINAPI IASIOGetBufferSize();//取缓冲区大小
LRESULT WINAPI IASIOGetBufferMinSize();//取最小缓冲区大小
LRESULT WINAPI IASIOGetBufferMaxSize();//取最大缓冲区大小
LRESULT WINAPI IASIOGetBufferPreferredSize();//取优先缓冲区大小
LRESULT WINAPI IASIOOpenInBuffer(LONG, PFLOAT);//打开输入通道
LRESULT WINAPI IASIOSendOutBuffer(LONG, PFLOAT);//发送到输出通道
LRESULT WINAPI IASIOGetBufferBytes(PFLOAT*, LPVOID);//取缓冲区字节集数据
LRESULT WINAPI IASIOGetBufferLevel(PFLOAT*, PFLOAT);//取电平值
LRESULT WINAPI IASIOCreateBufferFile(LPSTR);//创建音频文件
LRESULT WINAPI IASIOFwriteBufferData(LPVOID, PFLOAT*);//写出音频数据
LRESULT WINAPI IASIOCloseBufferFile(LPVOID);//关闭音频文件
LRESULT WINAPI IASIOSetBufferCallbackEvent(LPVOID);//zc缓冲区回调事件
LRESULT WINAPI IASIOSetSelectorSupportedEvent(LPVOID);//zc选择器支持事件
LRESULT WINAPI IASIOSetEngineVersionEvent(LPVOID);//zc引擎版本事件
LRESULT WINAPI IASIOSetResetRequestEvent(LPVOID);//zc复位请求事件
LRESULT WINAPI IASIOSetBufferSizeChangeEvent(LPVOID);//zc缓冲区大小被改变事件
LRESULT WINAPI IASIOSetResyncRequestEvent(LPVOID);//zc重新设置请求事件
LRESULT WINAPI IASIOSetLatenciesChangedEvent(LPVOID);//zc设置延迟事件
LRESULT WINAPI IASIOSetSupportsTimeInfoEvent(LPVOID);//zc支持timeinfo事件
LRESULT WINAPI IASIOSetSupportsTimeCodeEvent(LPVOID);//zc集支持时间代码事件
LRESULT WINAPI IASIOSetMMCCommandEvent(LPVOID);//zcMMC命令事件
LRESULT WINAPI IASIOSetSupportsInputMonitorEvent(LPVOID);//设置支持监视器事件
LRESULT WINAPI IASIOSetSupportsInputGainEvent(LPVOID);//设定增益事件
LRESULT WINAPI IASIOSetSupportsInputMeterEvent(LPVOID);//设置支持计时器事件  
LRESULT WINAPI IASIOSetSupportsOutputGainEvent(LPVOID);//支持输出增益事件
LRESULT WINAPI IASIOSetSupportsOutputMeterEvent(LPVOID);//集支持输出仪表事件
LRESULT WINAPI IASIOSetOverloadEvent(LPVOID);//超载事件
LRESULT WINAPI IASIOSetNumMessageSelectorsEvent(LPVOID);//消息集事件
LRESULT WINAPI IASIOSetSampleRateChangedEvent(LPVOID);//采样率变化事件
LRESULT WINAPI IASIOSetBufferSwitchEvent(LPVOID);//旧缓冲区回调事件



VST SDK

LRESULT  WINAPI VSTEffLoad(LPSTR);//加载插件
LRESULT  WINAPI VSTEffDelete(LPVOID);//卸载插件
LRESULT  WINAPI VSTEffSetParam(LPVOID, LONG, FLOAT);//设置插件参数的值
LRESULT  WINAPI VSTEffGetParam(LPVOID, LONG);//获取插件参数的值
LRESULT  WINAPI VSTEffGetParamIs(LPVOID);//取插件参数数目
LRESULT  WINAPI VSTEffSetProcess(LPVOID, LPVOID, LPVOID, LONG);//处理插件效果
LRESULT  WINAPI VSTEffGetOutChanneIs(LPVOID);//取插件输出通道数目
LRESULT  WINAPI VSTEffGetInChanneIs(LPVOID);//取插件输入通道数目
LRESULT  WINAPI VSTEffGetVersion(LPVOID);//取插件版本
LRESULT  WINAPI VSTEffGetUniqueID(LPVOID);//取插件ID
LRESULT  WINAPI VSTEffGetInitialDelay(LPVOID);//取插件延时
LRESULT  WINAPI VSTEffGetProgramIs(LPVOID);//取插件预设数目
LRESULT  WINAPI VSTEffGetMagic(LPVOID);//取Magic
LRESULT  WINAPI VSTEffGetFlags(LPVOID);//取Flags
LRESULT  WINAPI VSTEffGetresvd1(LPVOID);//取主机保留参数1
LRESULT  WINAPI VSTEffGetresvd2(LPVOID);//取主机保留参数2
LRESULT  WINAPI VSTEffGetRealQualities(LPVOID);//取RealQualities
LRESULT  WINAPI VSTEffGetOffQualities(LPVOID);//取OffQualities
LRESULT  WINAPI VSTEffGetIoRatio(LPVOID);//取IoRatio
LRESULT  WINAPI VSTEffGetObjectPointer(LPVOID);//取效果类指针
LRESULT  WINAPI VSTEffGetUserPointer(LPVOID);//取用户指针
LRESULT  WINAPI VSTEffGetFuture(LPVOID);//取保留参数
LRESULT  WINAPI VSTEffDispatcher(LPVOID, LONG, LONG, LONG, LPVOID, FLOAT);//功能选择器
LRESULT  WINAPI VSTEffOpen(LPVOID);//打开插件
LRESULT  WINAPI VSTEffClose(LPVOID);//关闭插件
LRESULT  WINAPI VSTEffSetProgram(LPVOID, DWORD);//设置预设效果位置
LRESULT  WINAPI VSTEffGetProgram(LPVOID);//取预设位置
LRESULT  WINAPI VSTEffSetProgramName(LPVOID, LPSTR);//设置预设名称
LRESULT  WINAPI VSTEffGetProgramName(LPVOID, LPSTR);//取当前预设效果名称
LRESULT  WINAPI VSTEffGetParamLabel(LPVOID, DWORD, LPSTR);//取插件参数后缀名称
LRESULT  WINAPI VSTEffGetParamDisplay(LPVOID, DWORD, LPSTR);//取参数的值名字
LRESULT  WINAPI VSTEffGetParamName(LPVOID, DWORD, LPSTR);//取参数标签名字
LRESULT  WINAPI VSTEffGetVu(LPVOID);//取VU
LRESULT  WINAPI VSTEffSetSampleRate(LPVOID, FLOAT);//设置采样率
LRESULT  WINAPI VSTEffSetBlockSize(LPVOID, DWORD);//设置缓冲区块大小
LRESULT  WINAPI VSTEffMainsChanged(LPVOID, BOOL);//开启/关闭插件
LRESULT  WINAPI VSTEffEditGetRect(LPVOID, PRECT);//取矩形
LRESULT  WINAPI VSTEffEditOpen(LPVOID, HWND);//打开插件编辑窗口
LRESULT  WINAPI VSTEffEditClose(LPVOID);//关闭插件编辑窗口
LRESULT  WINAPI VSTEffEditIdle(LPVOID);//空闲处理
LRESULT  WINAPI VSTEffEditUpdate(LPVOID);//更新VST插件窗口
LRESULT  WINAPI VSTEffEditWidth(LPVOID);//取插件窗口宽度
LRESULT  WINAPI VSTEffEditHeight(LPVOID);//取插件窗口高度
LRESULT  WINAPI VSTEffIdentify(LPVOID);//识别
LRESULT  WINAPI VSTEffGetChunk(LPVOID, BOOL, LPVOID*);//取块大小
LRESULT  WINAPI VSTEffSetChunk(LPVOID, BOOL, LPVOID, DWORD);//设置块大小
LRESULT  WINAPI VSTEffProcessEvents(LPVOID, LPVOID);//过程事件
LRESULT  WINAPI VSTEffCanBeAutomated(LPVOID, DWORD);//自动化
LRESULT  WINAPI VSTEffString2Parameter(LPVOID, DWORD, LPSTR);//字符串参数
LRESULT  WINAPI VSTEffGetNumProgramCategories(LPVOID);//取预设效果类别数量
LRESULT  WINAPI VSTEffGetProgramNameIndexed(LPVOID, DWORD, LPSTR);//取预制效果名称
LRESULT  WINAPI VSTEffCopyProgram(LPVOID, DWORD);//复制预设效果
LRESULT  WINAPI VSTEffConnectInput(LPVOID, DWORD, BOOL);//连接器输入
LRESULT  WINAPI VSTEffConnectOutput(LPVOID, DWORD, BOOL);//连接器输出
LRESULT  WINAPI VSTEffGetInputProperties(LPVOID, DWORD, LPVOID);//获得输入属性
LRESULT  WINAPI VSTEffGetOutputProperties(LPVOID, DWORD, LPVOID);//获得输出属性
LRESULT  WINAPI VSTEffGetPlugCategory(LPVOID);//获得插件类别
LRESULT  WINAPI VSTEffGetCurrentPosition(LPVOID);//获得当前位置
LRESULT  WINAPI VSTEffGetDestinationBuffer(LPVOID);//取目标缓冲区
LRESULT  WINAPI VSTEffOfflineNotify(LPVOID, DWORD, BOOL, LPVOID);//离线通知
LRESULT  WINAPI VSTEffOfflinePrepare(LPVOID, DWORD, LPVOID);//准备离线
LRESULT  WINAPI VSTEffOfflineRun(LPVOID, DWORD, LPVOID);//脱机运行
LRESULT  WINAPI VSTEffProcessVarIo(LPVOID, LPVOID);//过程变量
LRESULT  WINAPI VSTEffSetSpeakerArrangement(LPVOID, LPVOID, LPVOID);//扬声器设置
LRESULT  WINAPI VSTEffSetBlockSizeAndSampleRate(LPVOID, DWORD, FLOAT);//设置块大小和采样率大小
LRESULT  WINAPI VSTEffSetBypass(LPVOID, BOOL);//设置旁路
LRESULT  WINAPI VSTEffGetEffectName(LPVOID, LPSTR);//取效果名
LRESULT  WINAPI VSTEffGetErrorText(LPVOID, LPSTR);//取错误文本
LRESULT  WINAPI VSTEffGetVendorString(LPVOID, LPSTR);//取插件厂商
LRESULT  WINAPI VSTEffGetProductString(LPVOID, LPSTR);//取产品名称
LRESULT  WINAPI VSTEffGetVendorVersion(LPVOID);//取供应商版本
LRESULT  WINAPI VSTEffVendorSpecific(LPVOID, DWORD, DWORD, LPVOID, FLOAT);//供应商专用
LRESULT  WINAPI VSTEffCanDo(LPVOID, LPSTR);//CanDo
LRESULT  WINAPI VSTEffGetTailSize(LPVOID);//获取尾部尺寸
LRESULT  WINAPI VSTEffIdle(LPVOID);//空闲处理事件
LRESULT  WINAPI VSTEffGetIcon(LPVOID);//取ICON  
LRESULT  WINAPI VSTEffSetViewPosition(LPVOID, DWORD, DWORD);//设置视图位置
LRESULT  WINAPI VSTEffGetParameterProperties(LPVOID, DWORD, LPVOID);//获取参数属性
LRESULT  WINAPI VSTEffKeysRequired(LPVOID);//需要的效果
LRESULT  WINAPI VSTEffGetVstVersion(LPVOID);//取VST插件版本
LRESULT  WINAPI VSTEffEditKeyDown(LPVOID, LPVOID);//编辑按键
LRESULT  WINAPI VSTEffEditKeyUp(LPVOID, LPVOID);//编辑键
LRESULT  WINAPI VSTEffSetEditKnobMode(LPVOID, DWORD);//设置编辑旋钮模式
LRESULT  WINAPI VSTEffGetMidiProgramName(LPVOID, DWORD);//获得MIDI程序名
LRESULT  WINAPI VSTEffGetCurrentMidiProgram(LPVOID, DWORD, LPVOID);//获得当前MIDI程序
LRESULT  WINAPI VSTEffGetMidiProgramCategory(LPVOID, DWORD, LPVOID);//获得MIDI程序类别
LRESULT  WINAPI VSTEffHasMidiProgramsChanged(LPVOID, DWORD);//MIDI程序是否改变
LRESULT  WINAPI VSTEffGetMidiKeyName(LPVOID, DWORD, LPVOID);// 获取MIDI键名
LRESULT  WINAPI VSTEffBeginSetProgram(LPVOID);//开始设置程序
LRESULT  WINAPI VSTEffEndSetProgram(LPVOID);//设置终点预设效果
LRESULT  WINAPI VSTEffGetSpeakerArrangement(LPVOID, LPVOID*, LPVOID*);//获得演讲安排
LRESULT  WINAPI VSTEffShellGetNextPlugin(LPVOID, LPSTR);//获取下一个插件
LRESULT  WINAPI VSTEffStartProcess(LPVOID);//启动过程
LRESULT  WINAPI VSTEffStopProcess(LPVOID);//停止过程
LRESULT  WINAPI VSTEffSetTotalSampleToProcess(LPVOID, DWORD);//将总样本设置为过程
LRESULT  WINAPI VSTEffSetPanLaw(LPVOID, DWORD, FLOAT);//设置旋律
LRESULT  WINAPI VSTEffBeginLoadBank(LPVOID, LPVOID);//开始打开效果
LRESULT  WINAPI VSTEffBeginLoadProgram(LPVOID, LPVOID);//开始加载效果
LRESULT  WINAPI VSTEffSetProcessPrecision(LPVOID, DWORD);//设定加工精度
LRESULT  WINAPI VSTEffGetNumMidiInputChannels(LPVOID);//获取MIDI输入通道数
LRESULT  WINAPI VSTEffGetNumMidiOutputChannels(LPVOID);//获取MIDI输出通道数






  
窗口程序集名保 留  保 留备 注
窗口程序集1   
变量名类 型数组备 注
缓冲区整数型2 

子程序名返回值类型公开备 注
__启动窗口_创建完毕  
变量名类 型静态数组备 注
n整数型 
缓冲区 [1]申请内存 (44100 × 4, )
缓冲区 [2]申请内存 (44100 × 4, )
ASIOInit () ' 初始化ASIO接口 注意 只能初始化一次
子程序名返回值类型公开备 注
__启动窗口_将被销毁  
变量名类 型静态数组备 注
ASIO设备ID整数型 
ASIO设备ID = 0
ASIOExit () ' 释放ASIO接口 注意 只能执行一次
ASIOLoadDriver (ASIO设备ID, &缓冲区回调函数, &msg) ' 加载设备 参数1 ASIO设备ID 参数2 缓冲区回调函数 参数3 消息回调
ASIOCreateBuffers (0)
ASIOStart ()
子程序名返回值类型公开备 注
缓冲区回调函数  
' 打开输入通道 把音频数据存放到缓冲区
ASIOOpenInBuffer (0, 缓冲区 [1]) ' 打开输入通道
ASIOOpenInBuffer (0, 缓冲区 [1]) ' 打开输入通道
' //...在这里可以处理效果 比如进行VST插件处理
' 发送到输出通道 就是把音频数据发给声卡 让声卡发声
ASIOSendOutBuffer (0, 缓冲区 [1]) ' 发送到输出通道
ASIOSendOutBuffer (1, 缓冲区 [1]) ' 发送到输出通道
子程序名返回值类型公开备 注
msg整数型 
参数名类 型参考可空数组备 注
msg 
param 
' 在这里可以处理消息 比如 采样率被改变 缓冲区大小被改变都会触发消息
返回 (ASIODefMessage (msg, param)) ' 返回默认处理 和DefWindowProc原理类似



i支持库列表   支持库注释   
spec特殊功能支持库
asiodrv(未知支持库)


评分

参与人数 4好评 +4 精币 +62 收起 理由
China洋葱 + 1 + 2 看不懂!!但是感觉好高大上
执着 + 1 + 20 感谢发布原创作品,一定好好学习,天天向上
林中道士 + 1 + 20 看不懂!!但是感觉好高大上
Cand + 1 + 20 看不懂!!但是感觉好高大上

查看全部评分

结帖率:85% (46/54)
发表于 2023-3-3 20:37:56 | 显示全部楼层   重庆市重庆市
楼主的QQ搜不到
回复 支持 反对

使用道具 举报

发表于 2022-5-11 18:14:34 | 显示全部楼层   广东省广州市
哪里可以下载来学习一下?
回复 支持 反对

使用道具 举报

结帖率:50% (1/2)
发表于 2021-10-12 22:21:46 | 显示全部楼层   山东省菏泽市
太可惜了,楼主怎么不自己保存一份源码呢
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-20 18:10:33 | 显示全部楼层   天津市天津市
Studio One 3破J版源码已在精易论坛完整开源 源码使用C++开发 欢迎大家下载 有不懂得可以私聊我 (收费)https://bbs.125.la/forum.php?mod=viewthread&tid=14546799
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-20 17:31:31 | 显示全部楼层   天津市天津市
大家注意 这个支持库源码被微云网盘给吃了 说什么违规 我也是醉了 所以很抱歉的告诉大家 支持库已经没有了 请大家不要相信骗子 上当受骗了别来帖子上找我 我马上联系管理员删帖 谢谢
回复 支持 反对

使用道具 举报

结帖率:90% (101/112)
发表于 2020-3-8 21:47:40 | 显示全部楼层   福建省福州市
下载呢  地址都没有 啊 在吗玩
回复 支持 反对

使用道具 举报

结帖率:0% (0/4)
发表于 2019-9-24 16:46:05 | 显示全部楼层   广东省湛江市
1724323655 发表于 2019-9-20 21:27
别加他,他是骗子。这个是免费的。

你TM就是哪个沙雕吧。
回复 支持 反对

使用道具 举报

签到天数: 1 天

发表于 2019-9-20 21:27:52 | 显示全部楼层   贵州省黔东南苗族侗族自治州
学习编程1 发表于 2019-9-6 12:38
加我QQ我有   43876833

别加他,他是骗子。这个是免费的。
回复 支持 反对

使用道具 举报

结帖率:0% (0/4)
发表于 2019-9-6 12:38:02 | 显示全部楼层   广东省湛江市
LNLY 发表于 2019-4-22 10:59
在哪买,很想知道

加我QQ我有   43876833
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
网站简介:精易论坛成立于2009年,是一个程序设计学习交流技术论坛,隶属于揭阳市揭东区精易科技有限公司所有。
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表