UNPKG

voicemeeter-connector

Version:
3 lines (2 loc) 6.92 kB
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("koffi"),require("winreg")):"function"==typeof define&&define.amd?define(["exports","koffi","winreg"],t):t((e||self).voicemeeterConnector={},e.koffi,e.winreg)}(this,function(e,t,n){function r(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var o,i,a,c,u,s=/*#__PURE__*/r(t),l=/*#__PURE__*/r(n),f=/*#__PURE__*/function(){function e(){var e=this;this.isInitialised=!1,this.isConnected=!1,this.outputDevices=[],this.inputDevices=[],this.version="",this.type=void 0,this.eventPool=[],this.stringParameters=["Label","FadeTo","FadeBy","AppGain","AppMute","name","ip"],this.connect=function(){if(!e.isInitialised)throw new Error("Await the initialisation before connect");if(!e.isConnected){if(0===o.VBVMR_Login())return e.isConnected=!0,e.type=e.getVoicemeeterType(),e.version=e.getVoicemeeterVersion(),void setInterval(e.checkPropertyChange,10);throw e.isConnected=!1,new Error("Connection failed")}},this.disconnect=function(){if(!e.isConnected)throw new Error("Not connected ");try{if(0===o.VBVMR_Logout())return void(e.isConnected=!1);throw new Error("Disconnect failed")}catch(e){throw new Error("Disconnect failed")}},this.updateDeviceList=function(){if(!e.isConnected)throw new Error("Not connected ");e.outputDevices=[],e.inputDevices=[];for(var t=o.VBVMR_Output_GetDeviceNumber(),n=0;n<t;n++){var r=Buffer.alloc(256),i=Buffer.alloc(256),a=[0];o.VBVMR_Output_GetDeviceDescA(n,a,i,r),e.outputDevices.push({name:i.toString().replace(/\u0000+$/g,""),hardwareId:r.toString().replace(/\u0000+$/g,""),type:a[0]})}for(var c=o.VBVMR_Input_GetDeviceNumber(),u=0;u<c;u++){var s=Buffer.alloc(256),l=Buffer.alloc(256),f=[0];o.VBVMR_Input_GetDeviceDescA(u,f,l,s),e.inputDevices.push({name:l.toString().replace(/\u0000+$/g,""),hardwareId:s.toString().replace(/\u0000+$/g,""),type:f[0]})}},this.isParametersDirty=function(){return o.VBVMR_IsParametersDirty()},this.getBusParameter=function(t,n){return e.getParameter("Bus",t,n)},this.getStripParameter=function(t,n){return e.getParameter("Strip",t,n)},this.setStripParameter=function(t,n,r){return e.setParameter("Strip",t,n,r)},this.setBusParameter=function(t,n,r){return e.setParameter("Bus",t,n,r)},this.attachChangeEvent=function(t){e.eventPool.push(t)},this.getOption=function(t){if(!e.isConnected)throw new Error("Not correct connected ");if(e.stringParameters.some(function(e){return t.includes(e)})){var n=Buffer.alloc(512);return o.VBVMR_GetParameterStringA(t,n),String.fromCharCode.apply(null,n).split("").filter(function(e){return"\0"!==e}).join("")}var r=[0];return o.VBVMR_GetParameterFloat(t,r),r[0]},this.setOption=function(e){var t=Buffer.alloc(e.length+1);return t.fill(0).write(e),o.VBVMR_SetParameters(t),new Promise(function(e){return setTimeout(e,200)})},this.checkPropertyChange=function(){1===e.isParametersDirty()&&e.eventPool.forEach(function(e){e()})},this.getVoicemeeterType=function(){var e=[0];if(0!==o.VBVMR_GetVoicemeeterType(e))throw new Error("running failed");switch(e[0]){case 1:return"voicemeeter";case 2:return"voicemeeterBanana";case 3:return"voicemeeterPotato";default:throw new Error("Voicemeeter seems not to be installed")}},this.getVoicemeeterVersion=function(){var e=[0];if(0!==o.VBVMR_GetVoicemeeterVersion(e))throw new Error("running failed");return((4278190080&e[0])>>24)+"."+((16711680&e[0])>>16)+"."+((65280&e[0])>>8)+"."+(255&e[0])},this.getParameter=function(t,n,r){return e.getOption(t+"["+n+"]."+r)},this.setParameter=function(t,n,r,o){if(!e.isConnected)throw new Error("Not connected ");return e.setOption(t+"["+n+"]."+r+"="+o+";")},this.getLevel=function(e,t){var n=[0];return o.VBVMR_GetLevel(e,t,n),n[0]}}var t;return e.init=function(){try{return Promise.resolve(function(){try{var e=new l.default({hive:l.default.HKLM,key:"\\SOFTWARE\\WOW6432Node\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\VB:Voicemeeter {17359A74-1236-5467}"});return Promise.resolve(new Promise(function(t){e.values(function(e,n){if(e)throw new Error(e);var r=n.find(function(e){return"UninstallString"===e.name}).value,o=r.lastIndexOf("\\");t(r.slice(0,o))})}))}catch(e){return Promise.reject(e)}}()).then(function(t){return new Promise(function(n){i||(i=new e);var r=s.default.load(t+"/VoicemeeterRemote64.dll");o={VBVMR_Login:r.func("long __stdcall VBVMR_Login(void)"),VBVMR_Logout:r.func("long __stdcall VBVMR_Logout(void)"),VBVMR_RunVoicemeeter:r.func("long __stdcall VBVMR_RunVoicemeeter(long mode)"),VBVMR_IsParametersDirty:r.func("long __stdcall VBVMR_IsParametersDirty(void)"),VBVMR_GetLevel:r.func("long __stdcall VBVMR_GetLevel(long type, long channel, _Out_ float* value)"),VBVMR_GetParameterFloat:r.func("long __stdcall VBVMR_GetParameterFloat(const char* param, _Out_ float* value)"),VBVMR_GetParameterStringA:r.func("long __stdcall VBVMR_GetParameterStringA(const char* param, _Out_ char* value)"),VBVMR_SetParameters:r.func("long __stdcall VBVMR_SetParameters(const char* param)"),VBVMR_Output_GetDeviceNumber:r.func("long __stdcall VBVMR_Output_GetDeviceNumber(void)"),VBVMR_Output_GetDeviceDescA:r.func("long __stdcall VBVMR_Output_GetDeviceDescA(long index, _Out_ long* type, _Out_ char* name, _Out_ char* hardwareId)"),VBVMR_Input_GetDeviceNumber:r.func("long __stdcall VBVMR_Input_GetDeviceNumber(void)"),VBVMR_Input_GetDeviceDescA:r.func("long __stdcall VBVMR_Input_GetDeviceDescA(long index, long* type, char* name, char* hardwareId)"),VBVMR_GetVoicemeeterType:r.func("long __stdcall VBVMR_GetVoicemeeterType(_Out_ long* type)"),VBVMR_GetVoicemeeterVersion:r.func("long __stdcall VBVMR_GetVoicemeeterVersion(_Out_ long* version)")},i.isInitialised=!0,n(i)})})}catch(e){return Promise.reject(e)}},(t=[{key:"$outputDevices",get:function(){return this.outputDevices}},{key:"$inputDevices",get:function(){return this.inputDevices}},{key:"$version",get:function(){return this.version}},{key:"$type",get:function(){return this.type}}])&&function(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}(e.prototype,t),e}();!function(e){e.Mono="Mono",e.Mute="Mute",e.Solo="Solo",e.MC="MC",e.Gain="Gain",e.Pan_x="Pan_x",e.Pan_y="Pan_y",e.Color_x="Color_x",e.Color_y="Color_y",e.fx_x="fx_x",e.fx_y="fx_y",e.Audibility="Audibility",e.Comp="Comp",e.Gate="Gate",e.EqGain1="EqGain1",e.EqGain2="EqGain2",e.EqGain3="EqGain3",e.Label="Label",e.A1="A1",e.A2="A2",e.A3="A3",e.A4="A4",e.A5="A5",e.B1="B1",e.B2="B2",e.B3="B3",e.FadeTo="FadeTo"}(a||(a={})),(u=c||(c={})).Mono="Mono",u.Mute="Mute",u.EQ="EQ.on",u.Gain="Gain",u.NormalMode="mode.normal",u.AmixMode="mode.Amix",u.BmixMode="mode.Bmix",u.RepeatMode="mode.Repeat",u.CompositeMode="mode.Composite",u.FadeTo="FadeTo",u.Label="Label";var _=a;e.BusProperties=c,e.InterfaceTypes={strip:0,bus:1},e.StripProperties=_,e.Voicemeeter=f,e.types={__proto__:null}}); //# sourceMappingURL=index.umd.js.map