/// <inheritdoc />
        public void AddTempo(int tick, int tempo)
        {
            // bpm -> microsecond per quarter note
            var tempoInUsq = (60000000 / tempo);

            var message = new MetaNumberEvent(tick,
                                              0xFF,
                                              (byte)MetaEventTypeEnum.Tempo,
                                              tempoInUsq);

            _midiFile.AddEvent(message);
        }
예제 #2
0
        internal static MidiFile JsObjectToMidiFile(dynamic midi)
        {
            var midi2 = new MidiFile();

            midi2.Division = midi.Division;

            FastList <dynamic> midiEvents = midi.Events;

            foreach (var midiEvent in midiEvents)
            {
                int       tick    = midiEvent.Tick;
                int       message = midiEvent.Message;
                MidiEvent midiEvent2;
                switch (midiEvent.Type)
                {
                case "alphaTab.audio.synth.midi.event.SystemExclusiveEvent":
                    midiEvent2         = new SystemExclusiveEvent(tick, 0, 0, midiEvent.Data);
                    midiEvent2.Message = message;
                    break;

                case "alphaTab.audio.synth.midi.event.MetaDataEvent":
                    midiEvent2         = new MetaDataEvent(tick, 0, 0, midiEvent.Data);
                    midiEvent2.Message = message;
                    break;

                case "alphaTab.audio.synth.midi.event.MetaNumberEvent":
                    midiEvent2         = new MetaNumberEvent(tick, 0, 0, midiEvent.Value);
                    midiEvent2.Message = message;
                    break;

                default:
                    midiEvent2         = new MidiEvent(tick, 0, 0, 0);
                    midiEvent2.Message = message;
                    break;
                }
                midi2.Events.Add(midiEvent2);
            }

            return(midi2);
        }
예제 #3
0
        internal static object MidiFileToJsObject(MidiFile midi)
        {
            var midi2 = Platform.Platform.NewObject();

            midi2.Division = midi.Division;
            var midiEvents = new FastList <object>();

            midi2.Events = midiEvents;
            foreach (var midiEvent in midi.Events)
            {
                var midiEvent2 = Platform.Platform.NewObject();
                midiEvents.Add(midiEvent2);
                midiEvent2.Type    = Platform.Platform.GetTypeName(midiEvent);
                midiEvent2.Tick    = midiEvent.Tick;
                midiEvent2.Message = midiEvent.Message;
                switch (midiEvent2.Type)
                {
                case "alphaTab.audio.synth.midi.event.SystemExclusiveEvent":
                    SystemExclusiveEvent sysex = (SystemExclusiveEvent)midiEvent;
                    midiEvent2.Data = sysex.Data;
                    break;

                case "alphaTab.audio.synth.midi.event.MetaDataEvent":
                    MetaDataEvent metadata = (MetaDataEvent)midiEvent;
                    midiEvent2.Data = metadata.Data;
                    break;

                case "alphaTab.audio.synth.midi.event.MetaNumberEvent":
                    MetaNumberEvent metanumber = (MetaNumberEvent)midiEvent;
                    midiEvent2.Value = metanumber.Value;
                    break;
                }
            }

            return(midi2);
        }