Esempio n. 1
0
            public void ProcessMidiEvents(Synthesizer synthesizer)
            {
                if (sequencer == null)
                {
                    sequencer = new MidiFileSequencer(synthesizer);
                    sequencer.Play(midi, loop);
                }

                sequencer.ProcessEvents();
            }
Esempio n. 2
0
            protected override bool OnGetData(out short[] samples)
            {
                lock (mutex)
                {
                    var t = 0;

                    for (var i = 0; i < blocksPerBatch; i++)
                    {
                        sequencer.ProcessEvents();
                        synthesizer.Render(left, right);

                        for (var j = 0; j < left.Length; j++)
                        {
                            var sampleLeft = (int)(32768 * left[j]);
                            if (sampleLeft < short.MinValue)
                            {
                                sampleLeft = short.MinValue;
                            }
                            else if (sampleLeft > short.MaxValue)
                            {
                                sampleLeft = short.MaxValue;
                            }

                            var sampleRight = (int)(32768 * right[j]);
                            if (sampleRight < short.MinValue)
                            {
                                sampleRight = short.MinValue;
                            }
                            else if (sampleRight > short.MaxValue)
                            {
                                sampleRight = short.MaxValue;
                            }

                            batch[t++] = (short)sampleLeft;
                            batch[t++] = (short)sampleRight;
                        }
                    }

                    samples = batch;
                }

                return(true);
            }