Following the NyQuist MIDI Tutorial, step by step, I ended with an abnormal program termination with a message saying “cause called with bad routine address: 0x808e4ed”.
Step to reproduce.
Copy the attached MIDI file in a directory.
Open a console in that directory.
Start the NY interpreter.
Run this in turn:
(setf my-seq (seq-create))
(type-of my-seq)
(setf midi-file (open-binary "demo.mid"))
(seq-read-smf my-seq midi-file)
(close midi-file)
(setf midi-file (open-binary "copy.mid" :direction :output))
(seq-write-smf my-seq midi-file)
There, the “copy.mid” file should be a copy of the scores contained in “demo.mid”, which is 1601 bytes long, but “copy.mid” is only 37 bytes long, NY exits and I get the error “cause called with bad routine address: 0x808e4ed”.
The MIDI file which cause the error
The above was for Nyquist 2.69 on Ubuntu Maverick. I tested the same with Nyquist 3.05 on Ubuntu Precise. There is an error too, but a different way.
First, with Nyquist 3.05, the documentation is erroneous. First, the page “demos/midi_tutorial.htm” says “(seq-write-smf my-seq midi-file t)” instead of “(seq-write-smf my-seq midi-file)”. Second, it does not fail on “(seq-write-smf my-seq midi-file)”, but crash on “(close midi-file)”, with a core dump. Surprinsingly, although it crash with a core dump on “(close midi-file)”, the resulting “copy.mid” file is complete and valid.