From: <sag...@us...> - 2011-08-16 23:44:56
|
Revision: 980 http://modplug.svn.sourceforge.net/modplug/?rev=980&view=rev Author: saga-games Date: 2011-08-16 23:44:49 +0000 (Tue, 16 Aug 2011) Log Message: ----------- [Fix] Tentative fix for multi-input plugins like Guitar Rig (fix by xaimus) [Mod] OpenMPT: Version is now 1.20.00.08 Modified Paths: -------------- trunk/OpenMPT/mptrack/Vstplug.cpp trunk/OpenMPT/mptrack/Vstplug.h trunk/OpenMPT/mptrack/version.h Modified: trunk/OpenMPT/mptrack/Vstplug.cpp =================================================================== --- trunk/OpenMPT/mptrack/Vstplug.cpp 2011-08-16 23:32:11 UTC (rev 979) +++ trunk/OpenMPT/mptrack/Vstplug.cpp 2011-08-16 23:44:49 UTC (rev 980) @@ -827,11 +827,11 @@ Log("VST plugin to host: Process Events\n"); break; // DEPRECATED in VST 2.4 - case audioMasterSetTime: + case audioMasterSetTime: Log("VST plugin to host: Set Time\n"); break; // returns tempo (in bpm * 10000) at sample frame location passed in <value> - DEPRECATED in VST 2.4 - case audioMasterTempoAt: + case audioMasterTempoAt: //Screw it! Let's just return the tempo at this point in time (might be a bit wrong). if (effect->resvd1) { @@ -844,17 +844,17 @@ return (VstInt32)(125 * 10000); } } - return 125*10000; + return 125 * 10000; // parameters - DEPRECATED in VST 2.4 - case audioMasterGetNumAutomatableParameters: + case audioMasterGetNumAutomatableParameters: Log("VST plugin to host: Get Num Automatable Parameters\n"); break; // Apparently, this one is broken in VST SDK anyway. - DEPRECATED in VST 2.4 - case audioMasterGetParameterQuantization: + case audioMasterGetParameterQuantization: Log("VST plugin to host: Audio Master Get Parameter Quantization\n"); break; // numInputs and/or numOutputs has changed - case audioMasterIOChanged: + case audioMasterIOChanged: Log("VST plugin to host: IOchanged\n"); break; // plug needs idle calls (outside its editor window) - DEPRECATED in VST 2.4 @@ -886,9 +886,9 @@ } Log("VST plugin to host: Size Window\n"); return 1; - case audioMasterGetSampleRate: + case audioMasterGetSampleRate: return CMainFrame::GetMainFrame()->GetSampleRate(); - case audioMasterGetBlockSize: + case audioMasterGetBlockSize: return MIXBUFFERSIZE; case audioMasterGetInputLatency: Log("VST plugin to host: Get Input Latency\n"); @@ -927,19 +927,19 @@ //Log("VST plugin to host: Get Automation State\n"); return kVstAutomationRead; - case audioMasterOfflineStart: + case audioMasterOfflineStart: Log("VST plugin to host: Offlinestart\n"); break; - case audioMasterOfflineRead: + case audioMasterOfflineRead: Log("VST plugin to host: Offlineread\n"); break; - case audioMasterOfflineWrite: + case audioMasterOfflineWrite: Log("VST plugin to host: Offlinewrite\n"); break; - case audioMasterOfflineGetCurrentPass: + case audioMasterOfflineGetCurrentPass: Log("VST plugin to host: OfflineGetcurrentpass\n"); break; - case audioMasterOfflineGetCurrentMetaPass: + case audioMasterOfflineGetCurrentMetaPass: Log("VST plugin to host: OfflineGetCurrentMetapass\n"); break; // for variable i/o, sample rate in <opt> - DEPRECATED in VST 2.4 @@ -950,12 +950,12 @@ case audioMasterGetOutputSpeakerArrangement: Log("VST plugin to host: Get Output Speaker Arrangement\n"); break; - case audioMasterGetVendorString: + case audioMasterGetVendorString: strcpy((char *) ptr, s_szHostVendorString); //strcpy((char*)ptr,"Steinberg"); //return 0; return true; - case audioMasterGetVendorVersion: + case audioMasterGetVendorVersion: return s_nHostVendorVersion; //return 7000; case audioMasterGetProductString: @@ -963,10 +963,10 @@ //strcpy((char*)ptr,"Cubase VST"); //return 0; return true; - case audioMasterVendorSpecific: + case audioMasterVendorSpecific: return 0; // void* in <ptr>, format not defined yet - DEPRECATED in VST 2.4 - case audioMasterSetIcon: + case audioMasterSetIcon: Log("VST plugin to host: Set Icon\n"); break; // string in ptr, see below @@ -994,14 +994,14 @@ else return HostCanNotDo; // - case audioMasterGetLanguage: + case audioMasterGetLanguage: return kVstLangEnglish; // returns platform specific ptr - DEPRECATED in VST 2.4 case audioMasterOpenWindow: Log("VST plugin to host: Open Window\n"); break; // close window, platform specific handle in <ptr> - DEPRECATED in VST 2.4 - case audioMasterCloseWindow: + case audioMasterCloseWindow: Log("VST plugin to host: Close Window\n"); break; // get plug directory, FSSpec on MAC, else char* @@ -1045,19 +1045,19 @@ return VstFileSelector(opcode == audioMasterCloseFileSelector, (VstFileSelect *)ptr, effect); // open an editor for audio (defined by XML text in ptr) - DEPRECATED in VST 2.4 - case audioMasterEditFile: + case audioMasterEditFile: Log("VST plugin to host: Edit File\n"); break; // get the native path of currently loading bank or project // (called from writeChunk) void* in <ptr> (char[2048], or sizeof(FSSpec)) - DEPRECATED in VST 2.4 - case audioMasterGetChunkFile: + case audioMasterGetChunkFile: Log("VST plugin to host: Get Chunk File\n"); break; //---from here VST 2.3 extension opcodes------------------------------------------------------ // result a VstSpeakerArrangement in ret - DEPRECATED in VST 2.4 - case audioMasterGetInputSpeakerArrangement: + case audioMasterGetInputSpeakerArrangement: Log("VST plugin to host: Get Input Speaker Arrangement\n"); break; @@ -1777,9 +1777,11 @@ m_MixState.nVolDecayL = 0; m_MixState.nVolDecayR = 0; m_MixState.pMixBuffer = (int *)((((DWORD)m_MixBuffer)+7)&~7); - m_MixState.pOutBufferL = (float *)((((DWORD)&m_FloatBuffer[0])+7)&~7); - m_MixState.pOutBufferR = (float *)((((DWORD)&m_FloatBuffer[MIXBUFFERSIZE])+7)&~7); - + m_MixState.pOutBufferL = (float *)((((DWORD)&m_FloatBuffer[0]) + 7) & ~7); + m_MixState.pOutBufferR = (float *)((((DWORD)&m_FloatBuffer[MIXBUFFERSIZE]) + 7) & ~7); + MemsetZero(dummyBuffer_); + + //rewbs.dryRatio: we now initialise this in CVstPlugin::Initialize(). //m_pTempBuffer = (float *)((((DWORD)&m_FloatBuffer[MIXBUFFERSIZE*2])+7)&~7); @@ -1905,6 +1907,11 @@ m_pInputs = (m_nInputs >= 2) ? new (float *[m_nInputs]) : new (float*[2]); m_pInputs[0] = m_MixState.pOutBufferL; m_pInputs[1] = m_MixState.pOutBufferR; + // Assign dummy inputs + for(size_t i = 2; i < m_nInputs; i++) + { + m_pInputs[i] = dummyBuffer_; + } m_pOutputs = new (float *[m_nOutputs]); m_pTempBuffer = new (float *[m_nOutputs]); //rewbs.dryRatio Modified: trunk/OpenMPT/mptrack/Vstplug.h =================================================================== --- trunk/OpenMPT/mptrack/Vstplug.h 2011-08-16 23:32:11 UTC (rev 979) +++ trunk/OpenMPT/mptrack/Vstplug.h 2011-08-16 23:44:49 UTC (rev 980) @@ -82,8 +82,9 @@ float **m_pInputs; float **m_pOutputs; int m_nEditorX, m_nEditorY; - int m_MixBuffer[MIXBUFFERSIZE*2+2]; // Stereo interleaved + int m_MixBuffer[MIXBUFFERSIZE*2+2]; // Stereo interleaved float m_FloatBuffer[MIXBUFFERSIZE*(2+32)+34]; // 2ch separated + up to 32 VSTi outputs... + float dummyBuffer_[MIXBUFFERSIZE + 2]; // Other (unused) inputs VstMidiEvent m_ev_queue[VSTEVENT_QUEUE_LEN]; CModDoc* m_pModDoc; //rewbs.plugDocAware CSoundFile* m_pSndFile; //rewbs.plugDocAware Modified: trunk/OpenMPT/mptrack/version.h =================================================================== --- trunk/OpenMPT/mptrack/version.h 2011-08-16 23:32:11 UTC (rev 979) +++ trunk/OpenMPT/mptrack/version.h 2011-08-16 23:44:49 UTC (rev 980) @@ -15,7 +15,7 @@ #define VER_MAJORMAJOR 1 #define VER_MAJOR 20 #define VER_MINOR 00 -#define VER_MINORMINOR 07 +#define VER_MINORMINOR 08 //Creates version number from version parts that appears in version string. //For example MAKE_VERSION_NUMERIC(1,17,02,28) gives version number of This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |