public static void BASSPlayBackEngine(Int64 length, Int64 pos) { if (MainWindow.Seeking) { BassMidi.BASS_MIDI_StreamEvent(MainWindow.KMCGlobals._recHandle, 0, BASSMIDIEvent.MIDI_EVENT_NOTESOFF, 0); BassVst.BASS_VST_ProcessEvent(MainWindow.VSTs._VSTiHandle, 0, BASSMIDIEvent.MIDI_EVENT_NOTESOFF, 0); Bass.BASS_ChannelSetPosition(MainWindow.KMCGlobals._recHandle, MainWindow.CurrentSeek, BASSMode.BASS_POS_MIDI_TICK); MainWindow.Seeking = false; return; } Int32 tempo = BassMidi.BASS_MIDI_StreamGetEvent(MainWindow.KMCGlobals._recHandle, 0, BASSMIDIEvent.MIDI_EVENT_TEMPO); MainWindow.KMCGlobals.OriginalTempo = 60000000 / tempo; Bass.BASS_ChannelFlags(MainWindow.KMCGlobals._recHandle, Properties.Settings.Default.DisableEffects ? BASSFlag.BASS_MIDI_NOFX : 0, BASSFlag.BASS_MIDI_NOFX); Bass.BASS_ChannelFlags(MainWindow.KMCGlobals._recHandle, Properties.Settings.Default.NoteOff1 ? BASSFlag.BASS_MIDI_NOTEOFF1 : 0, BASSFlag.BASS_MIDI_NOTEOFF1); for (Int32 i = 0; i <= 15; i++) { BassMidi.BASS_MIDI_StreamEvent(MainWindow.KMCGlobals._recHandle, i, BASSMIDIEvent.MIDI_EVENT_MIXLEVEL, MainWindow.KMCStatus.ChannelsVolume[i]); } MainWindow.KMCGlobals._VolFXParam.fCurrent = 1.0f; MainWindow.KMCGlobals._VolFXParam.fTarget = Properties.Settings.Default.Volume; MainWindow.KMCGlobals._VolFXParam.fTime = 0.0f; MainWindow.KMCGlobals._VolFXParam.lCurve = 0; Bass.BASS_FXSetParameters(MainWindow.KMCGlobals._VolFX, MainWindow.KMCGlobals._VolFXParam); Bass.BASS_ChannelSetAttribute(MainWindow.KMCGlobals._recHandle, BASSAttribute.BASS_ATTRIB_MIDI_VOICES, Properties.Settings.Default.Voices); }
public static bool BASSEncodingEngine(Int64 pos, Int64 length) { int tempo = BassMidi.BASS_MIDI_StreamGetEvent(MainWindow.KMCGlobals._recHandle, 0, BASSMIDIEvent.MIDI_EVENT_TEMPO); MainWindow.KMCGlobals.OriginalTempo = 60000000 / tempo; byte[] buffer = new byte[length]; for (int i = 0; i <= 15; i++) { BassMidi.BASS_MIDI_StreamEvent(MainWindow.KMCGlobals._recHandle, i, BASSMIDIEvent.MIDI_EVENT_MIXLEVEL, MainWindow.KMCStatus.ChannelsVolume[i]); } if (MainWindow.VSTs.VSTInfo[0].isInstrument) { Bass.BASS_ChannelGetData(MainWindow.VSTs._VSTiHandle, buffer, (Int32)length); } int got = Bass.BASS_ChannelGetData(MainWindow.KMCGlobals._recHandle, buffer, (Int32)length); if (got < 0) { MainWindow.KMCGlobals.CancellationPendingValue = MainWindow.KMCConstants.CONVERSION_ENDED; return(false); } return(true); }
private void SetTempo(bool reset) { new Thread(() => { if (reset) { miditempo = BassMidi.BASS_MIDI_StreamGetEvent(chan, 0, BASSMIDIEvent.MIDI_EVENT_TEMPO); // get the file's tempo } BassMidi.BASS_MIDI_StreamEvent(chan, 0, BASSMIDIEvent.MIDI_EVENT_TEMPO, Convert.ToInt32(miditempo * temposcale)); // set tempo }).Start(); }
public static bool BASSPlayBackEngineRT(Double[] CustomFramerates, ref Int64 pos, ref Int64 es) { double fpssim = MainWindow.FPSSimulator.NextDouble() * (CustomFramerates[0] - CustomFramerates[1]) + CustomFramerates[1]; int length = Convert.ToInt32(Bass.BASS_ChannelSeconds2Bytes(MainWindow.KMCGlobals._recHandle, fpssim)); byte[] buffer = new byte[length]; for (int i = 0; i <= 15; i++) { BassMidi.BASS_MIDI_StreamEvent(MainWindow.KMCGlobals._recHandle, i, BASSMIDIEvent.MIDI_EVENT_MIXLEVEL, MainWindow.KMCStatus.ChannelsVolume[i]); } while (es < MainWindow.KMCGlobals.eventc && MainWindow.KMCGlobals.events[es].pos < pos + length) { BassMidi.BASS_MIDI_StreamEvent(MainWindow.KMCGlobals._recHandle, MainWindow.KMCGlobals.events[es].chan, MainWindow.KMCGlobals.events[es].eventtype, MainWindow.KMCGlobals.events[es].param); es++; } if (MainWindow.VSTs.VSTInfo[0].isInstrument) { Bass.BASS_ChannelGetData(MainWindow.VSTs._VSTiHandle, buffer, length); } int got = Bass.BASS_ChannelGetData(MainWindow.KMCGlobals._recHandle, buffer, length); if (got < 0) { MainWindow.KMCGlobals.CancellationPendingValue = MainWindow.KMCConstants.CONVERSION_ENDED; return(false); } pos += got; if (es == MainWindow.KMCGlobals.eventc) { BassMidi.BASS_MIDI_StreamEvent(MainWindow.KMCGlobals._recHandle, 0, BASSMIDIEvent.MIDI_EVENT_END, 0); } float fpsstring = 1 / (float)fpssim; IntPtr UnmanagedBuffer = Marshal.AllocHGlobal(buffer.Length); Marshal.Copy(buffer, 0, UnmanagedBuffer, buffer.Length); BassWasapi.BASS_WASAPI_PutData(UnmanagedBuffer, length); Marshal.FreeHGlobal(UnmanagedBuffer); return(true); }
public static void SetTempo(bool reset, bool isitworker) { if (isitworker) { if (reset) { MainWindow.KMCGlobals.MIDITempo = BassMidi.BASS_MIDI_StreamGetEvent(MainWindow.KMCGlobals._recHandle, 0, BASSMIDIEvent.MIDI_EVENT_TEMPO); // get the file's tempo } BassMidi.BASS_MIDI_StreamEvent(MainWindow.KMCGlobals._recHandle, 0, BASSMIDIEvent.MIDI_EVENT_TEMPO, Convert.ToInt32(MainWindow.KMCGlobals.MIDITempo * MainWindow.KMCGlobals.TempoScale)); // set tempo } else { new Thread(() => { if (reset) { MainWindow.KMCGlobals.MIDITempo = BassMidi.BASS_MIDI_StreamGetEvent(MainWindow.KMCGlobals._recHandle, 0, BASSMIDIEvent.MIDI_EVENT_TEMPO); // get the file's tempo } BassMidi.BASS_MIDI_StreamEvent(MainWindow.KMCGlobals._recHandle, 0, BASSMIDIEvent.MIDI_EVENT_TEMPO, Convert.ToInt32(MainWindow.KMCGlobals.MIDITempo * MainWindow.KMCGlobals.TempoScale)); // set tempo }).Start(); } }
private void KSIntegration_DoWork(object sender, DoWorkEventArgs e) { using (RegistryKey Mixer = Registry.CurrentUser.OpenSubKey(@"SOFTWARE\OmniMIDI\", true)) { if (Mixer != null && !IsWinXPOrOlder()) { RegistryKey SynthSettings = Registry.CurrentUser.OpenSubKey("SOFTWARE\\OmniMIDI\\Configuration", true); RegistryKey Channels = Registry.CurrentUser.OpenSubKey("SOFTWARE\\OmniMIDI\\Channels", true); RegistryKey Watchdog = Registry.CurrentUser.OpenSubKey("SOFTWARE\\KOmniMIDI\\Watchdog", true); RegistryKey SynthPaths = Registry.CurrentUser.OpenSubKey("SOFTWARE\\OmniMIDI\\Paths", true); while (isitrunning) { try { if (chan != 0) { int levels = BassWasapi.BASS_WASAPI_GetLevel(); Mixer.SetValue("leftvol", Utils.LowWord32(levels), RegistryValueKind.DWord); Mixer.SetValue("rightvol", Utils.HighWord32(levels), RegistryValueKind.DWord); Mixer.SetValue("currentcpuusage0", cpu, RegistryValueKind.DWord); for (int i = 1; i <= 16; i++) { Mixer.SetValue(String.Format("chv{0}", i), BassMidi.BASS_MIDI_StreamGetEvent(chan, i - 1, (BASSMIDIEvent)0x20001), RegistryValueKind.DWord); BassMidi.BASS_MIDI_StreamEvent(chan, i - 1, BASSMIDIEvent.MIDI_EVENT_MIXLEVEL, Convert.ToInt32(Channels.GetValue(String.Format("ch{0}", i)))); } } System.Threading.Thread.Sleep(1); } catch (Exception ex) { MessageBox.Show(ex.ToString()); } } } } }
public unsafe bool SendChorusEvent(int channel, int param) { return(BassMidi.BASS_MIDI_StreamEvent(Handle, channel, BASSMIDIEvent.MIDI_EVENT_CHORUS, param)); }
public unsafe bool SendReverbEvent(int channel, int param) { return(BassMidi.BASS_MIDI_StreamEvent(Handle, channel, BASSMIDIEvent.MIDI_EVENT_REVERB, param)); }