|

分享一个可以编写VST机架的调用支持库 可以调用ASIO接口和VST接口 这个支持库是由本人亲自编写的 花了很长时间 看了很久ASIO和VST的开发文档花了我两个多月时间才编写出来的 易语言完美调用 支持静态编译 我这也算为咱易语言做了一个贡献吧 这个支持库我提供了两个版本 一个是C++版本 (asio.h和asio.lib)另一个是易语言支持库(asio.fne和asio.lib)玩音频软件的朋友有福利了 有了这个支持库 你可以用很少的代码快速开发一个VST机架 这个支持库在开发阶段时 由麻拐博客 野狼音效 工号音效 渡口音频苏阳 测试过BUG 现在BUG已全部排除 已非常稳定 目前支持库已授权给野狼音效网 现在他们正在开发自己的机架 核心就是我写的这个支持库
需要支持库的朋友如果有兴趣可以加我的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 |
缓冲区 [1 ] = 申请内存 (44100 × 4, )缓冲区 [2 ] = 申请内存 (44100 × 4, )ASIOInit () ASIO设备ID = 0 ASIOExit () ASIOLoadDriver (ASIO设备ID, &缓冲区回调函数, &msg ) ASIOCreateBuffers (0 )ASIOStart () ASIOOpenInBuffer (0, 缓冲区 [1 ]) ASIOOpenInBuffer (0, 缓冲区 [1 ]) ASIOSendOutBuffer (0, 缓冲区 [1 ]) ASIOSendOutBuffer (1, 缓冲区 [1 ]) 返回 (ASIODefMessage (msg, param ))
|
评分
-
参与人数 4 | 好评 +4 |
精币 +62 |
收起
理由
|
China洋葱
| + 1 |
+ 2 |
看不懂!!但是感觉好高大上 |
执着
| + 1 |
+ 20 |
感谢发布原创作品,一定好好学习,天天向上 |
林中道士
| + 1 |
+ 20 |
看不懂!!但是感觉好高大上 |
Cand
| + 1 |
+ 20 |
看不懂!!但是感觉好高大上 |
查看全部评分
|