Exemple #1
0
        public void ReadFile(MidiFile midiFile)
        {
            VerifyHeader(midiFile);

            midiFile.TrackMode      = file.ReadShort();
            midiFile.NumEventTracks = file.ReadShort();
            midiFile.QuarterNote    = file.ReadShort();

            MUtil.SetQuarterNote(midiFile.QuarterNote);

            midiFile.Events          = new List <MidiEvent> [midiFile.NumEventTracks];
            midiFile.Tracks          = new List <MidiTrack>();
            midiFile.TrackPerChannel = false;

            ComputeTracks(midiFile);
            ComputePulsesSong(midiFile);
            VerifyChannels(midiFile);
            CheckStartTimes(midiFile.Tracks);
            ReadTimeSignature(midiFile);
            //RoundDurations(midiFile);

            file.Empty();
        }
Exemple #2
0
        private void DefineMetaEvent(MidiEvent mEvent)
        {
            string result;

            mEvent.EventFlag  = MUtil.MetaEvent;
            mEvent.MetaEvent  = file.ReadByte();
            mEvent.MetaLength = file.ReadVarlen();
            mEvent.Value      = file.ReadBytes(mEvent.MetaLength);
            mEvent.Text       = "ME ";//"" + EVENT_TYPE.MetaEvent; //+" " + mEvent.MetaEvent;
            mEvent.Meta       = ((META_EVENT)mEvent.MetaEvent);
            result            = string.Empty;

            switch ((META_EVENT)mEvent.MetaEvent)
            {
            case META_EVENT.Copyright:
                result = " Copyright " + System.Text.Encoding.UTF8.GetString(mEvent.Value);
                break;

            case META_EVENT.CuePoint:
                result = " CuePoint " + System.Text.Encoding.UTF8.GetString(mEvent.Value);
                break;

            case META_EVENT.DeviceName:
                result = " DeviceName " + System.Text.Encoding.UTF8.GetString(mEvent.Value);
                break;

            case META_EVENT.EndOfTrack:
                result = " End of track ";
                break;

            case META_EVENT.Instrument:
                result = " Instrument " + System.Text.Encoding.UTF8.GetString(mEvent.Value);
                break;

            case META_EVENT.KeySignature:
                result += " KeySignature : " + MUtil.TranslateKeySignature(mEvent.Value);
                break;

            case META_EVENT.Lyric:
                result = " Lyric " + System.Text.Encoding.UTF8.GetString(mEvent.Value);
                break;

            case META_EVENT.Marker:
                result = " Marker " + System.Text.Encoding.UTF8.GetString(mEvent.Value);
                break;

            case META_EVENT.MIDIChannelPrefix:
                byte channel = mEvent.Value[0];
                result = " MIDIChannelPrefix: " + channel;
                break;

            case META_EVENT.MIDIPort:
                byte port = mEvent.Value[0];
                result = " MIDIPort: " + port;
                break;

            case META_EVENT.ProgramName:
                result = "  ProgramName " + System.Text.Encoding.UTF8.GetString(mEvent.Value);
                break;

            case META_EVENT.Sequence:
                result = " Sequence " + System.Text.Encoding.UTF8.GetString(mEvent.Value);
                break;

            case META_EVENT.SequenceName:
                result = " SequenceName " + System.Text.Encoding.UTF8.GetString(mEvent.Value);
                break;

            case META_EVENT.SequencerSpecificEvent:
                result = " SequencerSpecific " + System.Text.Encoding.UTF8.GetString(mEvent.Value);
                break;

            case META_EVENT.SMPTEOffset:
                result = " SMPTEOffset " + System.Text.Encoding.UTF8.GetString(mEvent.Value);
                break;

            case META_EVENT.Tempo:
                result = SetMetaEventTempo(mEvent);
                break;

            case META_EVENT.Text:
                result = " Text " + System.Text.Encoding.UTF8.GetString(mEvent.Value);
                break;

            case META_EVENT.TimeSignature:
                result = " TimeSignature " + SetMetaEventTimeSignature(mEvent);
                break;
            }

            mEvent.Text += result;
        }