public void TestTempo() { double tempo = 100; TempoMetaMessage message = new TempoMetaMessage(tempo, 0); int microsecondsPerBeat = (int)(60 * 1e6 / tempo); byte data1 = (byte)(microsecondsPerBeat / 0x10000); byte data2 = (byte)((microsecondsPerBeat % 0x10000) / 0x100); byte data3 = (byte)(microsecondsPerBeat % 0x100); MetaMessage bytes = message.MetaMessage; MetaMessage expected = new MetaMessage { MetaType = 0x51, Data = new byte[] { data1, data2, data3 }, TimeDelta = 0 }; Assert.Equal(expected, bytes); }
public IMessage getMessage(MetaEvent metaEvent) { switch (metaEvent.MetaEventType) { case SetTempo: TempoEvent tempoEvent = (TempoEvent)metaEvent; TempoMetaMessage message = TempoMetaMessage(tempoEvent.Tempo, tempoEvent.AbsoluteTime); return(message); case TimeSignature: TimeSignatureEvent timeSignatureEvent = (TimeSignatureEvent)metaEvent; TimeSignatureMetaMessage message = TimeSignatureMetaMessage(timeSignatureEvent.Numerator, timeSignatureEvent.Numerator, timeSignatureEvent.AbsoluteTime); return(message); case KeySignature: KeySignatureEvent keySignatureEvent = (KeySignatureEvent)metaEvent; TimeSignatureMetaMessage message = TimeSignatureMetaMessage((sbyte)keySignatureEvent.SharpsFlats, (byte)keySignatureEvent.MajorMinor, timeSignatureEvent.AbsoluteTime); return(message); default: return(null); // TODO remaining MetaMessage types } }