xi2

a plain text language that compiles to MIDI
git clone https://git.ce9e.org/xi2.git

commit
b32777d7c1e30cbfaa70c20f250c0a2ab086b6ae
parent
bdda87bc720b6ca7dc59d3f1efd4e6fe039d1220
Author
Tobias Bengfort <tobias.bengfort@posteo.de>
Date
2023-09-18 21:37
midi: support writing strings

Diffstat

M midi.py 6 +++++-
M xi2.py 2 +-

2 files changed, 6 insertions, 2 deletions


diff --git a/midi.py b/midi.py

@@ -45,6 +45,10 @@ class Midi:
   45    45         self.write_variable(length)
   46    46         self.write_fixed(data, length)
   47    47 
   -1    48     def meta_event_str(self, dt, event, s):
   -1    49         data = s.encode('ascii')
   -1    50         self.meta_event(dt, event, len(data), data)
   -1    51 
   48    52     def system_exclusive(self, dt, length, data):
   49    53         self.write_variable(int(dt * TIME_DEVISION))
   50    54         self.write_fixed(0xf0, 1)
@@ -63,7 +67,7 @@ class Midi:
   63    67         self.ch_event(dt, 0x8, ch, key, int(vol * 0x7f))
   64    68 
   65    69     def lyrics(self, dt, s):
   66    -1         self.meta_event(dt, 0x05, len(s), s)
   -1    70         self.meta_event_str(dt, 0x05, s)
   67    71 
   68    72     def prog_ch(self, dt, ch, prog):
   69    73         self.ch_event(dt, 0xc, ch, prog)

diff --git a/xi2.py b/xi2.py

@@ -112,7 +112,7 @@ ch = 0
  112   112 for name, track in tracks.items():
  113   113     m = midi.Midi()
  114   114     # write meta info
  115    -1     m.meta_event(0, 0x04, len(name), name)
   -1   115     m.meta_event_str(0, 0x04, name)
  116   116     try:
  117   117         prog = int(name)
  118   118     except ValueError: