示例#1
0
        private void InitializeBASSMIDIStream()
        {
            // Init stream
            ChangePreviewButtonText("Initializing stream...", false);
            ChangeWindowTitle("Initializing stream...");
            hStream = BassMidi.BASS_MIDI_StreamCreateFile(MIDIPreview, 0L, 0L,
                                                          BASSFlag.BASS_SAMPLE_FLOAT |
                                                          BASSFlag.BASS_SAMPLE_SOFTWARE |
                                                          (Convert.ToBoolean(Program.SynthSettings.GetValue("EnableSFX", 0)) ? BASSFlag.BASS_DEFAULT : BASSFlag.BASS_MIDI_NOFX) |
                                                          (LoopYesNo.Checked ? BASSFlag.BASS_SAMPLE_LOOP : BASSFlag.BASS_DEFAULT),
                                                          0);
            Bass.BASS_ChannelSetAttribute(hStream, BASSAttribute.BASS_ATTRIB_MIDI_CPU, (int)(Convert.ToInt32(Program.SynthSettings.GetValue("MaxRenderingTime", 75)) / 100));
            System.Threading.Thread.Sleep(50);

            // Init SoundFont
            ChangePreviewButtonText("Loading SoundFont...", false);
            ChangeWindowTitle("Loading SoundFont...");
            BASS_MIDI_FONTEX[] fonts = new BASS_MIDI_FONTEX[1];

            if (OriginalSF.ToLower().IndexOf('=') != -1)
            {
                var    matches = System.Text.RegularExpressions.Regex.Matches(OriginalSF, "[0-9]+");
                string sf      = OriginalSF.Substring(OriginalSF.LastIndexOf('|') + 1);
                fonts[0].font    = BassMidi.BASS_MIDI_FontInit(sf);
                fonts[0].spreset = Convert.ToInt32(matches[0].ToString());
                fonts[0].sbank   = Convert.ToInt32(matches[1].ToString());
                fonts[0].dpreset = Convert.ToInt32(matches[2].ToString());
                fonts[0].dbank   = Convert.ToInt32(matches[3].ToString());
            }
            else
            {
                fonts[0].font    = BassMidi.BASS_MIDI_FontInit(OriginalSF);
                fonts[0].spreset = -1;
                fonts[0].sbank   = -1;
                fonts[0].dpreset = -1;
                fonts[0].dbank   = 0;
            }

            BassMidi.BASS_MIDI_FontSetVolume(fonts[0].font, 1.0f);
            BassMidi.BASS_MIDI_StreamSetFonts(hStream, fonts, 1);
            BassMidi.BASS_MIDI_StreamLoadSamples(hStream);
        }
示例#2
0
        private void InitializeBASSMIDIStream()
        {
            // Init stream
            ChangePreviewButtonText("Initializing stream...", false);
            ChangeWindowTitle("Initializing stream...");
            hStream = BassMidi.BASS_MIDI_StreamCreateFile(MIDIPreview, 0L, 0L, BASSFlag.BASS_SAMPLE_FLOAT | BASSFlag.BASS_SAMPLE_SOFTWARE, 0);
            Bass.BASS_ChannelSetAttribute(hStream, BASSAttribute.BASS_ATTRIB_MIDI_CPU, (int)(KeppySynthConfiguratorMain.Delegate.MaxCPU.Value / 100));
            System.Threading.Thread.Sleep(50);

            // Init SoundFont
            ChangePreviewButtonText("Loading SoundFont...", false);
            ChangeWindowTitle("Loading SoundFont...");
            BASS_MIDI_FONTEX[] fonts     = new BASS_MIDI_FONTEX[1];
            List <int>         termsList = new List <int>();

            termsList.Reverse();

            if (OriginalSF.ToLower().IndexOf('=') != -1)
            {
                var    matches = System.Text.RegularExpressions.Regex.Matches(OriginalSF, "[0-9]+");
                string sf      = OriginalSF.Substring(OriginalSF.LastIndexOf('|') + 1);
                fonts[0].font    = BassMidi.BASS_MIDI_FontInit(sf);
                fonts[0].spreset = Convert.ToInt32(matches[0].ToString());
                fonts[0].sbank   = Convert.ToInt32(matches[1].ToString());
                fonts[0].dpreset = Convert.ToInt32(matches[2].ToString());
                fonts[0].dbank   = Convert.ToInt32(matches[3].ToString());
                BassMidi.BASS_MIDI_FontSetVolume(fonts[0].font, 1.0f);
                BassMidi.BASS_MIDI_StreamSetFonts(hStream, fonts, 1);
            }
            else
            {
                fonts[0].font    = BassMidi.BASS_MIDI_FontInit(OriginalSF);
                fonts[0].spreset = -1;
                fonts[0].sbank   = -1;
                fonts[0].dpreset = -1;
                fonts[0].dbank   = 0;
                BassMidi.BASS_MIDI_StreamSetFonts(hStream, fonts, 1);
            }

            BassMidi.BASS_MIDI_StreamLoadSamples(hStream);
        }