UNPKG

voicemeeter-connector

Version:
3 lines (2 loc) 9.61 kB
import e from"koffi";import t from"winreg";var r,n,o,i;function a(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}function c(e){var t=function(e){if("object"!=typeof e||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var r=t.call(e,"string");if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:t+""}!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"}(r||(r={})),function(e){e.Mono="Mono",e.Mute="Mute",e.EQ="EQ.on",e.Gain="Gain",e.NormalMode="mode.normal",e.AmixMode="mode.Amix",e.BmixMode="mode.Bmix",e.RepeatMode="mode.Repeat",e.CompositeMode="mode.Composite",e.FadeTo="FadeTo",e.Label="Label"}(n||(n={})),function(e){e[e.DEFAULT=0]="DEFAULT",e[e.STATEONLY=2]="STATEONLY",e[e.TRIGGER=3]="TRIGGER",e[e.COLOR=4]="COLOR"}(o||(o={}));var u,s,l,f=/*#__PURE__*/function(){return e=function(){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.timerInterval=void 0,this.connect=function(){if(!e.isInitialised)throw new Error("Await the initialisation before connect");if(e.isConnected)return{success:!0,message:"Already connected.",code:0};var t=s.VBVMR_Login();switch(t){case 0:return e.isConnected=!0,e.type=e.getVoicemeeterType(),e.version=e.getVoicemeeterVersion(),e.timerInterval=setInterval(e.checkPropertyChange,10),{success:!0,message:"Successfully connected to VoiceMeeter (VM Running).",code:0};case 1:return e.isConnected=!0,e.type=void 0,e.version="Unknown",e.timerInterval=setInterval(e.checkPropertyChange,10),{success:!0,message:"Connected to VoiceMeeter API (VM App Not Running).",code:1};case-1:throw e.isConnected=!1,new Error("VoiceMeeter connection failed: Unable to get client (Unexpected error -1).");case-2:throw e.isConnected=!1,new Error("VoiceMeeter connection failed: Unexpected login (Expected logout first -2).");default:throw e.isConnected=!1,new Error("VoiceMeeter connection failed with unknown error code: "+t+".")}},this.disconnect=function(){if(!e.isConnected)throw new Error("Not connected ");try{if(0===s.VBVMR_Logout())return clearInterval(e.timerInterval),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=s.VBVMR_Output_GetDeviceNumber(),r=0;r<t;r++){var n=Buffer.alloc(256),o=Buffer.alloc(256),i=[0];s.VBVMR_Output_GetDeviceDescA(r,i,o,n),e.outputDevices.push({name:o.toString().replaceAll(/\u0000+$/g,""),hardwareId:n.toString().replaceAll(/\u0000+$/g,""),type:i[0]})}for(var a=s.VBVMR_Input_GetDeviceNumber(),c=0;c<a;c++){var u=Buffer.alloc(256),l=Buffer.alloc(256),f=[0];s.VBVMR_Input_GetDeviceDescA(c,f,l,u),e.inputDevices.push({name:l.toString().replaceAll(/\u0000+$/g,""),hardwareId:u.toString().replaceAll(/\u0000+$/g,""),type:f[0]})}},this.isParametersDirty=function(){return s.VBVMR_IsParametersDirty()},this.getBusParameter=function(t,r){return e.getParameter("Bus",t,r)},this.getStripParameter=function(t,r){return e.getParameter("Strip",t,r)},this.setStripParameter=function(t,r,n){return e.setParameter("Strip",t,r,n)},this.setBusParameter=function(t,r,n){return e.setParameter("Bus",t,r,n)},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 r=Buffer.alloc(512);return s.VBVMR_GetParameterStringA(t,r),[].concat(String.fromCharCode.apply(null,r)).filter(function(e){return"\0"!==e}).join("")}var n=[0];return s.VBVMR_GetParameterFloat(t,n),n[0]},this.setOption=function(e){var t=Buffer.alloc(e.length+1);return t.fill(0).write(e),s.VBVMR_SetParameters(t),new Promise(function(e){setTimeout(e,200)})},this.isMacroButtonDirty=function(){return s.VBVMR_MacroButton_IsDirty()},this.getMacroButtonStatus=function(e,t){void 0===t&&(t=o.DEFAULT);var r=[0];if(0===s.VBVMR_MacroButton_GetStatus(e,r,t))return r[0];throw new Error("Failed to get macro button "+e+" status")},this.setMacroButtonStatus=function(e,t,r){if(void 0===r&&(r=o.DEFAULT),0!==s.VBVMR_MacroButton_SetStatus(e,t,r))throw new Error("Failed to set macro button "+e+" status")},this.checkPropertyChange=function(){var t=!1;if(1===e.isParametersDirty()&&(t=!0),1===e.isMacroButtonDirty()&&(t=!0),t)for(var r,n=function(e){var t="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(t)return(t=t.call(e)).next.bind(t);if(Array.isArray(e)||(t=function(e,t){if(e){if("string"==typeof e)return a(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?a(e,t):void 0}}(e))){t&&(e=t);var r=0;return function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(e.eventPool);!(r=n()).done;)(0,r.value)()},this.getVoicemeeterType=function(){var e=[0];if(0!==s.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!==s.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,r,n){return e.getOption(t+"["+r+"]."+n)},this.setParameter=function(t,r,n,o){if(!e.isConnected)throw new Error("Not connected ");return e.setOption(t+"["+r+"]."+n+"="+o+";")},this.getLevel=function(e,t){var r=[0];return s.VBVMR_GetLevel(e,t,r),r[0]}},(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 r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,c(n.key),n)}}(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),e;var e,t}();u=f,f.init=function(){try{return Promise.resolve(function(){try{var e=new t({hive:t.HKLM,key:String.raw(i||(r=["SOFTWAREWOW6432NodeMicrosoftWindowsCurrentVersionUninstallVB:Voicemeeter {17359A74-1236-5467}"],n=["\\SOFTWARE\\WOW6432Node\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\VB:Voicemeeter {17359A74-1236-5467}"],n||(n=r.slice(0)),r.raw=n,i=r))});return Promise.resolve(new Promise(function(t){e.values(function(e,r){if(e)throw new Error(e);var n=r.find(function(e){return"UninstallString"===e.name}).value,o=n.lastIndexOf("\\");t(n.slice(0,o))})}))}catch(r){return Promise.reject(r)}var r,n}()).then(function(t){return new Promise(function(r){l||(l=new u);var n=e.load(t+"/VoicemeeterRemote64.dll");s={VBVMR_Login:n.func("long __stdcall VBVMR_Login(void)"),VBVMR_Logout:n.func("long __stdcall VBVMR_Logout(void)"),VBVMR_RunVoicemeeter:n.func("long __stdcall VBVMR_RunVoicemeeter(long mode)"),VBVMR_IsParametersDirty:n.func("long __stdcall VBVMR_IsParametersDirty(void)"),VBVMR_GetLevel:n.func("long __stdcall VBVMR_GetLevel(long type, long channel, _Out_ float* value)"),VBVMR_GetParameterFloat:n.func("long __stdcall VBVMR_GetParameterFloat(const char* param, _Out_ float* value)"),VBVMR_GetParameterStringA:n.func("long __stdcall VBVMR_GetParameterStringA(const char* param, _Out_ char* value)"),VBVMR_SetParameters:n.func("long __stdcall VBVMR_SetParameters(const char* param)"),VBVMR_Output_GetDeviceNumber:n.func("long __stdcall VBVMR_Output_GetDeviceNumber(void)"),VBVMR_Output_GetDeviceDescA:n.func("long __stdcall VBVMR_Output_GetDeviceDescA(long index, _Out_ long* type, _Out_ char* name, _Out_ char* hardwareId)"),VBVMR_Input_GetDeviceNumber:n.func("long __stdcall VBVMR_Input_GetDeviceNumber(void)"),VBVMR_Input_GetDeviceDescA:n.func("long __stdcall VBVMR_Input_GetDeviceDescA(long index, long* type, char* name, char* hardwareId)"),VBVMR_GetVoicemeeterType:n.func("long __stdcall VBVMR_GetVoicemeeterType(_Out_ long* type)"),VBVMR_GetVoicemeeterVersion:n.func("long __stdcall VBVMR_GetVoicemeeterVersion(_Out_ long* version)"),VBVMR_MacroButton_IsDirty:n.func("long __stdcall VBVMR_MacroButton_IsDirty(void)"),VBVMR_MacroButton_GetStatus:n.func("long __stdcall VBVMR_MacroButton_GetStatus(long nuLogicalButton, _Out_ float* pValue, long bitmode)"),VBVMR_MacroButton_SetStatus:n.func("long __stdcall VBVMR_MacroButton_SetStatus(long nuLogicalButton, float fValue, long bitmode)")},l.isInitialised=!0,r(l)})})}catch(e){return Promise.reject(e)}};var _={__proto__:null},V=n,d={strip:0,bus:1},m=r,v=o;export{V as BusProperties,d as InterfaceTypes,v as MacroButtonModes,m as StripProperties,f as Voicemeeter,_ as types}; //# sourceMappingURL=index.module.js.map