Example #1
0
        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;
            }
        }
Example #2
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);
        }
Example #3
0
        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);
        }
Example #4
0
 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();
 }
Example #5
0
File: RTF.cs Project: walney/KMC
 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;
             }
     }
 }
Example #6
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);
 }
Example #7
0
 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();
     }
 }
Example #8
0
        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());
                        }
                    }
                }
            }
        }