//- saving ------------------------------------------------------------------- public static void writeMidiFile(Sequence seq, String filename) { MidiOutStream stream = new MidiOutStream(filename); //midi file header stream.putString("MThd"); stream.putFour(6); //header size stream.putTwo(1); //type 1 midi file stream.putTwo(seq.tracks.Count); //track count stream.putTwo(seq.division); //division for (int trackNum = 0; trackNum < seq.tracks.Count; trackNum++) { seq.tracks[trackNum].saveTrack(stream); } }
//- track saving ------------------------------------------------------------- public void saveTrack(MidiOutStream stream) { //List<byte> data = new List<byte>(); //uint curtime = 0; //foreach(Event evt in events) { // uint delta = evt.time - curtime; // curtime = evt.time; // List<byte> vardelta = stream.getVarLenQuantity(delta); // data.AddRange(vardelta); // byte[] msgbytes = evt.msg.getDataBytes(); // data.AddRange(msgbytes); //} ////track header //int size = data.Count; //stream.putString("MTrk"); //stream.putFour(size); //stream.putData(data.ToArray()); }