Example #1
0
        private void ProcessWaveform(Audio2Midi audio2midi, float[] waveform)
        {
            // Start the stopwatch
            Stopwatch sw = Stopwatch.StartNew();

            // stereo waveform
            float[] monoSignal = BassProxy.GetMonoSignal(waveform, audioChannels, BassProxy.MonoSummingType.Mix);
            //float[] monoSignal = ReadTestSignal();

            // divide it into chunks of bufferSize
            var chunks = monoSignal.Split(bufferSize);

            int chunkLength = chunks.Count();

            Console.WriteLine("Chunk count: {0}", chunkLength);

            int count = 1;

            foreach (var chunk in chunks)
            {
                Console.Write("Processing chunk: {0}      \r", count);

                var chunkArray = chunk.ToArray();
                if (chunkArray.Length < bufferSize)
                {
                    // zero pad the last chunk
                    Array.Resize <float>(ref chunkArray, bufferSize);
                }
                audio2midi.Process(chunkArray);
                count++;
            }

            sw.Stop();
            Console.Out.WriteLine("Audio2Midi Processed All: Time used: {0} ms", sw.Elapsed.TotalMilliseconds);
        }
Example #2
0
        //[Test]
        public void TestPianoRoll()
        {
            var audio2Midi = new Audio2Midi();

            var bitmap = new Bitmap(600, 785, PixelFormat.Format32bppArgb);

            audio2Midi.RenderPianoRoll(bitmap, 42, 784);
            bitmap.Save("piano_roll.png");
        }
Example #3
0
        void Audio2MidiInitialise(string inputFilepath)
        {
            // init audio system
            var audioSystem = BassProxy.Instance;

            //float[] wavData = BassProxy.ReadMonoFromFile(inputFilepath, (int) sampleRate, 1000, 0);
            float[] wavData = BassProxy.ReadMonoFromFile(inputFilepath, (int)sampleRate);

            // calculate number of frames and the duration
            frames      = MathUtils.RoundAwayFromZero((double)wavData.Length / (double)bufferSize);
            audioLength = (double)wavData.Length / (double)sampleRate * 1000;

            audio2midi = new Audio2Midi();
            audio2midi.IsTrackLoaded = true;
            audio2midi.Initialize(sampleRate, audioChannels, audioLength, frames);
            ProcessWaveform(audio2midi, wavData);
        }