From 15a04a5dad595fa774da1085253159a6e71b9a05 Mon Sep 17 00:00:00 2001 From: Julian Hurst Date: Thu, 21 Nov 2024 14:56:36 +0100 Subject: Add writeevents and writemidievents --- midi/midi.ha | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) (limited to 'midi') diff --git a/midi/midi.ha b/midi/midi.ha index fd7a843..cdcb997 100644 --- a/midi/midi.ha +++ b/midi/midi.ha @@ -141,7 +141,12 @@ export fn writechunk(h: io::handle, c: trchunk) void = { endian::beputu32(buf, l); io::writeall(h, buf)!; - for (const ev .. c.ev) { + writeevents(h, c.ev...); +}; + +export fn writeevents(h: io::handle, evs: event...) void = { + let buf: [4]u8 = [0...]; + for (const ev .. evs) { let dt = encodevlen(ev.deltatime); endian::beputu32(buf, dt); if (dt <= 127) { @@ -155,14 +160,21 @@ export fn writechunk(h: io::handle, c: trchunk) void = { }; match (ev.ev) { case let m: midi => - io::writeall(h, [m.status])!; - io::writeall(h, m.data)!; + writemidievents(h, m); case => abort(); }; }; }; +export fn writemidievents(h: io::handle, evs: midi...) void = { + let buf: [4]u8 = [0...]; + for (const ev .. evs) { + io::writeall(h, [ev.status])!; + io::writeall(h, ev.data)!; + }; +}; + fn calclength(c: trchunk) u32 = { let length = 0u32; for (const ev .. c.ev) { -- cgit v1.2.3