Exemplo n.º 1
0
    private List <Note> LoadNotesFromMidiFile(string midiFilePath)
    {
        List <Note> loadedNotes = new List <Note>();

        MidiFile midiFile = midiManager.LoadMidiFile(midiFilePath);

        if (midiFile == null)
        {
            throw new UnityException("Loading midi file failed.");
        }

        Dictionary <int, Note> midiPitchToNoteUnderConstruction = new Dictionary <int, Note>();

        foreach (MidiEvent midiEvent in midiFile.Tracks.SelectMany(track => track.MidiEvents))
        {
            if (midiEvent.midiChannelEvent == MidiHelper.MidiChannelEvent.Note_On)
            {
                HandleStartOfNote(midiEvent, midiPitchToNoteUnderConstruction);
            }

            if (midiEvent.midiChannelEvent == MidiHelper.MidiChannelEvent.Note_Off)
            {
                HandleEndOfNote(midiEvent, midiPitchToNoteUnderConstruction, loadedNotes);
            }
        }
        Debug.Log("Loaded notes from midi file: " + loadedNotes.Count);
        return(loadedNotes);
    }