private void CheckPosition() { Int64 MIDILengthRAW = Bass.BASS_ChannelGetLength(Data.StreamHandle); Int64 MIDICurrentPosRAW = Bass.BASS_ChannelGetPosition(Data.StreamHandle); RAWTotal = ((float)MIDILengthRAW) / 1048576f; RAWConverted = ((float)MIDICurrentPosRAW) / 1048576f; Double LenRAWToDouble = Bass.BASS_ChannelBytes2Seconds(Data.StreamHandle, MIDILengthRAW); Double CurRAWToDouble = Bass.BASS_ChannelBytes2Seconds(Data.StreamHandle, MIDICurrentPosRAW); Data.TotalTime = TimeSpan.FromSeconds(LenRAWToDouble); Data.CurrentTime = TimeSpan.FromSeconds(CurRAWToDouble); Bass.BASS_ChannelGetAttribute(Data.StreamHandle, BASSAttribute.BASS_ATTRIB_MIDI_PPQN, ref Data.PPQN); Data.TotalTicks = Convert.ToUInt32(Bass.BASS_ChannelGetLength(Data.StreamHandle, BASSMode.BASS_POS_MIDI_TICK)); Data.Tick = Convert.ToUInt32(Bass.BASS_ChannelGetPosition(Data.StreamHandle, BASSMode.BASS_POS_MIDI_TICK)); Int32 Tempo = 60000000 / BassMidi.BASS_MIDI_StreamGetEvent(Data.StreamHandle, 0, BASSMIDIEvent.MIDI_EVENT_TEMPO); Data.Tempo = Convert.ToUInt32(Tempo.LimitIntegerToRange(0, 999)); try { Data.Bar = Convert.ToUInt32(((Int64)(Data.Tick / (Data.PPQN / (8 / 4) * 4))).LimitLongToRange(0, 9223372036854775807)); Data.TotalBars = Convert.ToUInt32(((Int64)(Data.TotalTicks / (Data.PPQN / (8 / 4) * 4))).LimitLongToRange(0, 9223372036854775807)); Data.HowManyZeroesBars = String.Concat(Enumerable.Repeat("0", Data.TotalBars.ToString().Length)); } catch { Data.Bar = 0; Data.TotalBars = 0; } }
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 void GetVoices() { try { for (int i = 0; i <= 15; i++) { MainWindow.KMCStatus.ChannelsVoices[i] = BassMidi.BASS_MIDI_StreamGetEvent(MainWindow.KMCGlobals._recHandle, i, (BASSMIDIEvent)0x20001); } } catch { for (int i = 0; i <= 15; i++) { MainWindow.KMCStatus.ChannelsVoices[i] = 0; } } }
public static void GetVoices() { MainWindow.KMCChannelsVoices.ch1 = BassMidi.BASS_MIDI_StreamGetEvent(MainWindow.KMCGlobals._recHandle, 0, (BASSMIDIEvent)0x20001); MainWindow.KMCChannelsVoices.ch2 = BassMidi.BASS_MIDI_StreamGetEvent(MainWindow.KMCGlobals._recHandle, 1, (BASSMIDIEvent)0x20001); MainWindow.KMCChannelsVoices.ch3 = BassMidi.BASS_MIDI_StreamGetEvent(MainWindow.KMCGlobals._recHandle, 2, (BASSMIDIEvent)0x20001); MainWindow.KMCChannelsVoices.ch4 = BassMidi.BASS_MIDI_StreamGetEvent(MainWindow.KMCGlobals._recHandle, 3, (BASSMIDIEvent)0x20001); MainWindow.KMCChannelsVoices.ch5 = BassMidi.BASS_MIDI_StreamGetEvent(MainWindow.KMCGlobals._recHandle, 4, (BASSMIDIEvent)0x20001); MainWindow.KMCChannelsVoices.ch6 = BassMidi.BASS_MIDI_StreamGetEvent(MainWindow.KMCGlobals._recHandle, 5, (BASSMIDIEvent)0x20001); MainWindow.KMCChannelsVoices.ch7 = BassMidi.BASS_MIDI_StreamGetEvent(MainWindow.KMCGlobals._recHandle, 6, (BASSMIDIEvent)0x20001); MainWindow.KMCChannelsVoices.ch8 = BassMidi.BASS_MIDI_StreamGetEvent(MainWindow.KMCGlobals._recHandle, 7, (BASSMIDIEvent)0x20001); MainWindow.KMCChannelsVoices.ch9 = BassMidi.BASS_MIDI_StreamGetEvent(MainWindow.KMCGlobals._recHandle, 8, (BASSMIDIEvent)0x20001); MainWindow.KMCChannelsVoices.chD = BassMidi.BASS_MIDI_StreamGetEvent(MainWindow.KMCGlobals._recHandle, 9, (BASSMIDIEvent)0x20001); MainWindow.KMCChannelsVoices.ch11 = BassMidi.BASS_MIDI_StreamGetEvent(MainWindow.KMCGlobals._recHandle, 10, (BASSMIDIEvent)0x20001); MainWindow.KMCChannelsVoices.ch12 = BassMidi.BASS_MIDI_StreamGetEvent(MainWindow.KMCGlobals._recHandle, 11, (BASSMIDIEvent)0x20001); MainWindow.KMCChannelsVoices.ch13 = BassMidi.BASS_MIDI_StreamGetEvent(MainWindow.KMCGlobals._recHandle, 12, (BASSMIDIEvent)0x20001); MainWindow.KMCChannelsVoices.ch14 = BassMidi.BASS_MIDI_StreamGetEvent(MainWindow.KMCGlobals._recHandle, 13, (BASSMIDIEvent)0x20001); MainWindow.KMCChannelsVoices.ch15 = BassMidi.BASS_MIDI_StreamGetEvent(MainWindow.KMCGlobals._recHandle, 14, (BASSMIDIEvent)0x20001); MainWindow.KMCChannelsVoices.ch16 = BassMidi.BASS_MIDI_StreamGetEvent(MainWindow.KMCGlobals._recHandle, 15, (BASSMIDIEvent)0x20001); }
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()); } } } } }