コード例 #1
0
 protected override int GetContentSize(WritingSettings settings)
 {
     return(DataTypesUtilities.GetVlqLength(A) +
            DataTypesUtilities.GetVlqLength(B?.Length ?? 0) +
            (B?.Length ?? 0) +
            1);
 }
コード例 #2
0
 protected override void WriteContent(MidiWriter writer, WritingSettings settings)
 {
     writer.WriteVlqNumber(A);
     writer.WriteVlqNumber(B?.Length ?? 0);
     writer.WriteString(B);
     writer.WriteByte(C);
 }
コード例 #3
0
        public void Write(MidiEvent midiEvent, MidiWriter writer, WritingSettings settings, bool writeStatusByte)
        {
            if (writeStatusByte)
            {
                var statusByte = GetStatusByte(midiEvent);
                writer.WriteByte(statusByte);
            }

            midiEvent.Write(writer, settings);
        }
コード例 #4
0
        private MidiFile WriteRead(MidiFile midiFile, WritingSettings writingSettings = null, ReadingSettings readingSettings = null)
        {
            var filePath = Path.Combine(Path.GetTempPath(), $"{Guid.NewGuid():N}.mid");

            midiFile.Write(filePath, settings: writingSettings);
            midiFile = MidiFile.Read(filePath, readingSettings);

            File.Delete(filePath);
            return(midiFile);
        }
コード例 #5
0
        public static void Write(MidiFile midiFile, Action <string> action, WritingSettings settings = null, MidiFileFormat?format = null)
        {
            var filePath = Path.Combine(Path.GetTempPath(), Path.GetRandomFileName());

            try
            {
                midiFile.Write(filePath, format: format ?? MidiFileFormat.MultiTrack, settings: settings);
                action(filePath);
            }
            finally
            {
                FileOperations.DeleteFile(filePath);
            }
        }
コード例 #6
0
        public void ReadWriteCustomMetaEvent()
        {
            const int    expectedA = 1234567;
            const string expectedB = "Test";
            const byte   expectedC = 45;

            var customMetaEventTypes = new EventTypesCollection
            {
                { typeof(CustomMetaEvent), 0x5A }
            };

            var writingSettings = new WritingSettings {
                CustomMetaEventTypes = customMetaEventTypes
            };
            var readingSettings = new ReadingSettings {
                CustomMetaEventTypes = customMetaEventTypes
            };

            var midiFile = MidiFileTestUtilities.Read(
                new MidiFile(
                    new TrackChunk(
                        new CustomMetaEvent(expectedA, expectedB, expectedC)
            {
                DeltaTime = 100
            },
                        new TextEvent("foo"),
                        new MarkerEvent("bar"))),
                writingSettings,
                readingSettings);

            var customMetaEvents = midiFile.GetEvents().OfType <CustomMetaEvent>().ToArray();

            Assert.AreEqual(1, customMetaEvents.Length, "Custom meta events count is invalid.");

            var customMetaEvent = customMetaEvents.First();

            Assert.AreEqual(100, customMetaEvent.DeltaTime, "Delta-time is invalid.");
            Assert.AreEqual(expectedA, customMetaEvent.A, "A value is invalid");
            Assert.AreEqual(expectedB, customMetaEvent.B, "B value is invalid");
            Assert.AreEqual(expectedC, customMetaEvent.C, "C value is invalid");
        }
コード例 #7
0
        private void Write(MidiFile midiFile, Action <WritingSettings> setupCompression, Action <FileInfo, FileInfo> fileInfosAction)
        {
            MidiFileTestUtilities.Write(
                midiFile,
                filePath =>
            {
                var fileInfo = new FileInfo(filePath);

                var writingSettings = new WritingSettings();
                setupCompression(writingSettings);

                MidiFileTestUtilities.Write(
                    midiFile,
                    filePath2 =>
                {
                    var fileInfo2 = new FileInfo(filePath2);

                    fileInfosAction(fileInfo, fileInfo2);
                },
                    writingSettings);
            },
                new WritingSettings());
        }
コード例 #8
0
        public static MidiFile Read(MidiFile midiFile, WritingSettings writingSettings, ReadingSettings readingSettings, MidiFileFormat?format = null)
        {
            var filePath = Path.Combine(Path.GetTempPath(), Path.GetRandomFileName());

            try
            {
                if (format == null)
                {
                    format = MidiFileFormat.MultiTrack;
                    try
                    {
                        format = midiFile.OriginalFormat;
                    }
                    catch { }
                }

                midiFile.Write(filePath, format: format.Value, settings: writingSettings);
                return(MidiFile.Read(filePath, readingSettings));
            }
            finally
            {
                FileOperations.DeleteFile(filePath);
            }
        }
コード例 #9
0
 protected override uint GetContentSize(WritingSettings settings)
 {
     return((uint)DataTypesUtilities.GetVlqLength(A));
 }
コード例 #10
0
 /// <summary>
 /// Gets the size of the content of a MIDI meta event.
 /// </summary>
 /// <param name="settings">Settings according to which the event's content must be written.</param>
 /// <returns>Size of the event's content.</returns>
 protected abstract int GetContentSize(WritingSettings settings);
コード例 #11
0
 /// <summary>
 /// Writes content of a MIDI meta event.
 /// </summary>
 /// <param name="writer">Writer to write the content with.</param>
 /// <param name="settings">Settings according to which the event's content must be written.</param>
 protected abstract void WriteContent(MidiWriter writer, WritingSettings settings);
コード例 #12
0
 /// <summary>
 /// Gets the size of the content of a MIDI event.
 /// </summary>
 /// <param name="settings">Settings according to which the event's content must be written.</param>
 /// <returns>Size of the event's content.</returns>
 internal sealed override int GetSize(WritingSettings settings)
 {
     return(GetContentSize(settings));
 }
コード例 #13
0
 /// <summary>
 /// Writes content of a MIDI event.
 /// </summary>
 /// <param name="writer">Writer to write the content with.</param>
 /// <param name="settings">Settings according to which the event's content must be written.</param>
 internal sealed override void Write(MidiWriter writer, WritingSettings settings)
 {
     WriteContent(writer, settings);
 }
コード例 #14
0
 public int CalculateSize(MidiEvent midiEvent, WritingSettings settings, bool writeStatusByte)
 {
     return((writeStatusByte ? 1 : 0) + midiEvent.GetSize(settings));
 }
コード例 #15
0
 protected override void WriteContent(MidiWriter writer, WritingSettings settings)
 {
     throw new System.NotImplementedException();
 }
コード例 #16
0
 /// <summary>
 /// Writes content of a MIDI meta event.
 /// </summary>
 /// <param name="writer">Writer to write the content with.</param>
 /// <param name="settings">Settings according to which the event's content must be written.</param>
 protected override void WriteContent(MidiWriter writer, WritingSettings settings)
 {
 }
コード例 #17
0
 internal override sealed void Write(MidiWriter writer, WritingSettings settings)
 {
 }
コード例 #18
0
 /// <summary>
 /// Writes content of a MIDI meta event.
 /// </summary>
 /// <param name="writer">Writer to write the content with.</param>
 /// <param name="settings">Settings according to which the event's content must be written.</param>
 protected override void WriteContent(MidiWriter writer, WritingSettings settings)
 {
     writer.WriteByte(Port);
 }
コード例 #19
0
 /// <summary>
 /// Writes content of a MIDI meta event.
 /// </summary>
 /// <param name="writer">Writer to write the content with.</param>
 /// <param name="settings">Settings according to which the event's content must be written.</param>
 protected override void WriteContent(MidiWriter writer, WritingSettings settings)
 {
     writer.WriteWord(Number);
 }
コード例 #20
0
 internal override sealed int GetSize(WritingSettings settings)
 {
     return(0);
 }
コード例 #21
0
 protected override void WriteContent(MidiWriter writer, WritingSettings settings)
 {
     writer.WriteVlqNumber(A);
 }
コード例 #22
0
 /// <summary>
 /// Gets the size of the content of a MIDI meta event.
 /// </summary>
 /// <param name="settings">Settings according to which the event's content must be written.</param>
 /// <returns>Size of the event's content.</returns>
 protected override int GetContentSize(WritingSettings settings)
 {
     return(0);
 }
コード例 #23
0
 protected override uint GetContentSize(WritingSettings settings)
 {
     throw new System.NotImplementedException();
 }