public void LoadMidi(MidiFile midi) { this.midi = midi; sequencer.Stop(); sequencer.UnloadMidi(); sequencer.LoadMidi(midi); }
public void LoadMidi(MidiFile midi) { Debug.Log("Loaded"); this.midi = midi; sequencer.Stop(); sequencer.UnloadMidi(); sequencer.LoadMidi(midi, bpm); }
public void LoadMidi(MidiFile midi) { this.midi = midi; sequencer.Stop(); sequencer.UnloadMidi(); sequencer.LoadMidi(midi); Debug.Log("midi.Division = " + midi.Division); Debug.Log("midi.TimingStandard = " + midi.TimingStandard); }
public void Stop() { if (synth_provider.state != SynthWaveProvider.PlayerState.Stopped) { lock (synth_provider.lockObj) { mseq.Stop(); synth.NoteOffAll(true); synth.ResetSynthControls(); synth.ResetPrograms(); synth_provider.state = SynthWaveProvider.PlayerState.Stopped; synth_provider.Reset(); } } }
public void LoadMidi(MidiFile file) { MidiFileSequencer sequencer = new MidiFileSequencer(new Synthesizer(44100, 2, 1024, 1)); //temporary needs changed sequencer.Stop(); sequencer.UnloadMidi(); sequencer.LoadMidi(file); midiMessages = sequencer.getData(); division = file.Division; //-------------------parsing midi var currentPosition = 0f; var previousDelta = 0f; foreach (var message in midiMessages) { /*var delta = (message.delta - previousDelta); * currentPosition += delta; * previousDelta += delta;*/ var delta = message.originalDelta; currentPosition += delta; for (int i = 0; i < currentlyDrawing.Count; i++) { currentlyDrawing[i].length += delta; } if ((int)message.command == 0x80 || ((int)message.command == 0x90 && message.data2 == 0)) { var noteToStop = currentlyDrawing.Find(item => item.key == (message.data1 - 21)); if (noteToStop != null) { Draw(noteToStop, magnitude); currentlyDrawing.Remove(noteToStop); } } else if ((int)message.command == 0x90) { var toAdd = new pianoNote() { length = 0f, velocity = message.data2, key = (int)message.data1 - 21, heightPositionOnScreen = currentPosition }; currentlyDrawing.Add(toAdd); } if ((int)message.command == 0xFF && message.data1 == 0x51) { //throw TEMPO CHANGED EVENT Debug.Log($"BPM: {message.BPM}"); } } //------------------------------- //trigger midi loaded event so that any listeners can have access to the midi file division TempoChangedEventArgs args = new TempoChangedEventArgs(120, magnitude); MidiLoaded?.Invoke(this, args); }