mirror of
https://github.com/sshlien/abcmidi.git
synced 2026-05-30 20:09:29 +00:00
* Add configuration for CMake build system alongside autoconf - Add a modern CMake build system (`CMakeLists.txt`, `CMakePresets.json`) that coexists with the legacy autoconf/Makefile build - Shared source files (`midifile.c`, `parseabc.c`, `music_utils.c`, `parser2.c`) are compiled once via OBJECT libraries and linked into the 8 binaries - Three presets: `default` (Release), `debug`, `sanitize` (ASan + UBSan) - Generates `compile_commands.json` for clangd/LSP editor support - Install rules match the legacy Makefile (binaries, doc files, man pages) - Pinned to `-std=gnu89` because the codebase mixes K&R `()` and ANSI typed prototypes — in C23/gnu23 (GCC 15+ default), `()` means `(void)`, making these a hard error. Note: **the existing autoconf build is also broken with GCC 15** for the same reason ```sh cmake --preset debug cmake --build --preset debug cmake --install build/debug --prefix /usr/local Documentation - README.md: added Building section with both autoconf and CMake instructions - doc/readme.txt: added build instructions in the existing preamble - doc/CHANGES: added changelog entry Test plan - All 3 presets configure and build with GCC 15 - Smoke test: abc2midi samples/coleraine.abc produces valid MIDI through mftext - Sanitizer build (--preset sanitize) runs clean on sample files - Install layout verified: 8 binaries, 10 doc files, 8 man pages in correct paths - Build on macOS (untested, should work with AppleClang) * Implement basic testing infrastructure The CMake build includes a test suite covering all 8 programs: - **Smoke tests** verify each binary runs cleanly with `-ver`. - **Golden-file tests** run each program on a sample input and compare the (normalized) output to a checked-in reference. Binary MIDI outputs are piped through `mftext` to produce diffable text. Volatile lines (version banners, dates, temporary paths) are stripped before comparison. ```sh ctest --preset debug ctest --preset debug -L golden ctest --preset debug -L smoke ``` To regenerate the golden files after an intentional behavioural change, review the diff, then commit: ```sh cmake --build build/debug --target update-golden git diff tests/golden/ ``` * Factorize more the test CMake code
390 lines
17 KiB
Plaintext
390 lines
17 KiB
Plaintext
Header format=0 ntrks=1 division=480
|
|
Track start
|
|
Time=0 Meta Text, type=0x01 (Text Event) leng=10
|
|
Text = <note track>
|
|
Time=0 Tempo, microseconds-per-MIDI-quarter-note=472440
|
|
Time=0 Key signature, sharp/flats=1 minor=0
|
|
Time=0 Time signature=4/4 MIDI-clocks/click=48 32nd-notes/24-MIDI-clocks=8
|
|
Time=0 Meta Text, type=0x03 (Sequence/Track Name) leng=13
|
|
Text = <Horses Branle>
|
|
Time=1 Note on, chan=1 pitch=67 vol=105
|
|
Time=360 Note off, chan=1 pitch=67 vol=0
|
|
Time=361 Note on, chan=1 pitch=69 vol=80
|
|
Time=480 Note off, chan=1 pitch=69 vol=0
|
|
Time=481 Note on, chan=1 pitch=71 vol=80
|
|
Time=720 Note off, chan=1 pitch=71 vol=0
|
|
Time=721 Note on, chan=1 pitch=71 vol=80
|
|
Time=960 Note off, chan=1 pitch=71 vol=0
|
|
Time=961 Note on, chan=1 pitch=72 vol=95
|
|
Time=1200 Note off, chan=1 pitch=72 vol=0
|
|
Time=1201 Note on, chan=1 pitch=71 vol=80
|
|
Time=1440 Note off, chan=1 pitch=71 vol=0
|
|
Time=1441 Note on, chan=1 pitch=69 vol=80
|
|
Time=1680 Note off, chan=1 pitch=69 vol=0
|
|
Time=1681 Note on, chan=1 pitch=72 vol=80
|
|
Time=1920 Note off, chan=1 pitch=72 vol=0
|
|
Time=1921 Note on, chan=1 pitch=71 vol=105
|
|
Time=2160 Note off, chan=1 pitch=71 vol=0
|
|
Time=2161 Note on, chan=1 pitch=69 vol=80
|
|
Time=2400 Note off, chan=1 pitch=69 vol=0
|
|
Time=2401 Note on, chan=1 pitch=67 vol=80
|
|
Time=2640 Note off, chan=1 pitch=67 vol=0
|
|
Time=2641 Note on, chan=1 pitch=66 vol=80
|
|
Time=2880 Note off, chan=1 pitch=66 vol=0
|
|
Time=2881 Note on, chan=1 pitch=64 vol=95
|
|
Time=3360 Note off, chan=1 pitch=64 vol=0
|
|
Time=3361 Note on, chan=1 pitch=62 vol=80
|
|
Time=3840 Note off, chan=1 pitch=62 vol=0
|
|
Time=3841 Note on, chan=1 pitch=67 vol=105
|
|
Time=4200 Note off, chan=1 pitch=67 vol=0
|
|
Time=4201 Note on, chan=1 pitch=69 vol=80
|
|
Time=4320 Note off, chan=1 pitch=69 vol=0
|
|
Time=4321 Note on, chan=1 pitch=71 vol=80
|
|
Time=4560 Note off, chan=1 pitch=71 vol=0
|
|
Time=4561 Note on, chan=1 pitch=71 vol=80
|
|
Time=4800 Note off, chan=1 pitch=71 vol=0
|
|
Time=4801 Note on, chan=1 pitch=72 vol=95
|
|
Time=5040 Note off, chan=1 pitch=72 vol=0
|
|
Time=5041 Note on, chan=1 pitch=71 vol=80
|
|
Time=5280 Note off, chan=1 pitch=71 vol=0
|
|
Time=5281 Note on, chan=1 pitch=69 vol=80
|
|
Time=5520 Note off, chan=1 pitch=69 vol=0
|
|
Time=5521 Note on, chan=1 pitch=72 vol=80
|
|
Time=5760 Note off, chan=1 pitch=72 vol=0
|
|
Time=5761 Note on, chan=1 pitch=71 vol=105
|
|
Time=6000 Note off, chan=1 pitch=71 vol=0
|
|
Time=6001 Note on, chan=1 pitch=67 vol=80
|
|
Time=6240 Note off, chan=1 pitch=67 vol=0
|
|
Time=6241 Note on, chan=1 pitch=69 vol=80
|
|
Time=6480 Note off, chan=1 pitch=69 vol=0
|
|
Time=6481 Note on, chan=1 pitch=66 vol=80
|
|
Time=6720 Note off, chan=1 pitch=66 vol=0
|
|
Time=6721 Note on, chan=1 pitch=67 vol=95
|
|
Time=7200 Note off, chan=1 pitch=67 vol=0
|
|
Time=7201 Note on, chan=1 pitch=67 vol=80
|
|
Time=7680 Note off, chan=1 pitch=67 vol=0
|
|
Time=7681 Note on, chan=1 pitch=67 vol=105
|
|
Time=8040 Note off, chan=1 pitch=67 vol=0
|
|
Time=8041 Note on, chan=1 pitch=69 vol=80
|
|
Time=8160 Note off, chan=1 pitch=69 vol=0
|
|
Time=8161 Note on, chan=1 pitch=71 vol=80
|
|
Time=8400 Note off, chan=1 pitch=71 vol=0
|
|
Time=8401 Note on, chan=1 pitch=71 vol=80
|
|
Time=8640 Note off, chan=1 pitch=71 vol=0
|
|
Time=8641 Note on, chan=1 pitch=72 vol=95
|
|
Time=8880 Note off, chan=1 pitch=72 vol=0
|
|
Time=8881 Note on, chan=1 pitch=71 vol=80
|
|
Time=9120 Note off, chan=1 pitch=71 vol=0
|
|
Time=9121 Note on, chan=1 pitch=69 vol=80
|
|
Time=9360 Note off, chan=1 pitch=69 vol=0
|
|
Time=9361 Note on, chan=1 pitch=72 vol=80
|
|
Time=9600 Note off, chan=1 pitch=72 vol=0
|
|
Time=9601 Note on, chan=1 pitch=71 vol=105
|
|
Time=9840 Note off, chan=1 pitch=71 vol=0
|
|
Time=9841 Note on, chan=1 pitch=69 vol=80
|
|
Time=10080 Note off, chan=1 pitch=69 vol=0
|
|
Time=10081 Note on, chan=1 pitch=67 vol=80
|
|
Time=10320 Note off, chan=1 pitch=67 vol=0
|
|
Time=10321 Note on, chan=1 pitch=66 vol=80
|
|
Time=10560 Note off, chan=1 pitch=66 vol=0
|
|
Time=10561 Note on, chan=1 pitch=64 vol=95
|
|
Time=11040 Note off, chan=1 pitch=64 vol=0
|
|
Time=11041 Note on, chan=1 pitch=62 vol=80
|
|
Time=11520 Note off, chan=1 pitch=62 vol=0
|
|
Time=11521 Note on, chan=1 pitch=67 vol=105
|
|
Time=11880 Note off, chan=1 pitch=67 vol=0
|
|
Time=11881 Note on, chan=1 pitch=69 vol=80
|
|
Time=12000 Note off, chan=1 pitch=69 vol=0
|
|
Time=12001 Note on, chan=1 pitch=71 vol=80
|
|
Time=12240 Note off, chan=1 pitch=71 vol=0
|
|
Time=12241 Note on, chan=1 pitch=71 vol=80
|
|
Time=12480 Note off, chan=1 pitch=71 vol=0
|
|
Time=12481 Note on, chan=1 pitch=72 vol=95
|
|
Time=12720 Note off, chan=1 pitch=72 vol=0
|
|
Time=12721 Note on, chan=1 pitch=71 vol=80
|
|
Time=12960 Note off, chan=1 pitch=71 vol=0
|
|
Time=12961 Note on, chan=1 pitch=69 vol=80
|
|
Time=13200 Note off, chan=1 pitch=69 vol=0
|
|
Time=13201 Note on, chan=1 pitch=72 vol=80
|
|
Time=13440 Note off, chan=1 pitch=72 vol=0
|
|
Time=13441 Note on, chan=1 pitch=71 vol=105
|
|
Time=13680 Note off, chan=1 pitch=71 vol=0
|
|
Time=13681 Note on, chan=1 pitch=67 vol=80
|
|
Time=13920 Note off, chan=1 pitch=67 vol=0
|
|
Time=13921 Note on, chan=1 pitch=69 vol=80
|
|
Time=14160 Note off, chan=1 pitch=69 vol=0
|
|
Time=14161 Note on, chan=1 pitch=66 vol=80
|
|
Time=14400 Note off, chan=1 pitch=66 vol=0
|
|
Time=14401 Note on, chan=1 pitch=67 vol=95
|
|
Time=14880 Note off, chan=1 pitch=67 vol=0
|
|
Time=14881 Note on, chan=1 pitch=67 vol=80
|
|
Time=15360 Note off, chan=1 pitch=67 vol=0
|
|
Time=15361 Note on, chan=1 pitch=74 vol=105
|
|
Time=15600 Note off, chan=1 pitch=74 vol=0
|
|
Time=15601 Note on, chan=1 pitch=72 vol=80
|
|
Time=15720 Note off, chan=1 pitch=72 vol=0
|
|
Time=15721 Note on, chan=1 pitch=71 vol=80
|
|
Time=15840 Note off, chan=1 pitch=71 vol=0
|
|
Time=15841 Note on, chan=1 pitch=69 vol=80
|
|
Time=16080 Note off, chan=1 pitch=69 vol=0
|
|
Time=16081 Note on, chan=1 pitch=71 vol=80
|
|
Time=16320 Note off, chan=1 pitch=71 vol=0
|
|
Time=16321 Note on, chan=1 pitch=72 vol=95
|
|
Time=16560 Note off, chan=1 pitch=72 vol=0
|
|
Time=16561 Note on, chan=1 pitch=71 vol=80
|
|
Time=16680 Note off, chan=1 pitch=71 vol=0
|
|
Time=16681 Note on, chan=1 pitch=69 vol=80
|
|
Time=16800 Note off, chan=1 pitch=69 vol=0
|
|
Time=16801 Note on, chan=1 pitch=67 vol=80
|
|
Time=17040 Note off, chan=1 pitch=67 vol=0
|
|
Time=17041 Note on, chan=1 pitch=71 vol=80
|
|
Time=17280 Note off, chan=1 pitch=71 vol=0
|
|
Time=17281 Note on, chan=1 pitch=69 vol=105
|
|
Time=17520 Note off, chan=1 pitch=69 vol=0
|
|
Time=17521 Note on, chan=1 pitch=67 vol=80
|
|
Time=17760 Note off, chan=1 pitch=67 vol=0
|
|
Time=17761 Note on, chan=1 pitch=66 vol=80
|
|
Time=18000 Note off, chan=1 pitch=66 vol=0
|
|
Time=18001 Note on, chan=1 pitch=67 vol=80
|
|
Time=18240 Note off, chan=1 pitch=67 vol=0
|
|
Time=18241 Note on, chan=1 pitch=69 vol=95
|
|
Time=18600 Note off, chan=1 pitch=69 vol=0
|
|
Time=18601 Note on, chan=1 pitch=71 vol=80
|
|
Time=18720 Note off, chan=1 pitch=71 vol=0
|
|
Time=18721 Note on, chan=1 pitch=69 vol=80
|
|
Time=19200 Note off, chan=1 pitch=69 vol=0
|
|
Time=19201 Note on, chan=1 pitch=74 vol=105
|
|
Time=19440 Note off, chan=1 pitch=74 vol=0
|
|
Time=19441 Note on, chan=1 pitch=72 vol=80
|
|
Time=19560 Note off, chan=1 pitch=72 vol=0
|
|
Time=19561 Note on, chan=1 pitch=71 vol=80
|
|
Time=19680 Note off, chan=1 pitch=71 vol=0
|
|
Time=19681 Note on, chan=1 pitch=69 vol=80
|
|
Time=19920 Note off, chan=1 pitch=69 vol=0
|
|
Time=19921 Note on, chan=1 pitch=71 vol=80
|
|
Time=20160 Note off, chan=1 pitch=71 vol=0
|
|
Time=20161 Note on, chan=1 pitch=72 vol=95
|
|
Time=20400 Note off, chan=1 pitch=72 vol=0
|
|
Time=20401 Note on, chan=1 pitch=71 vol=80
|
|
Time=20520 Note off, chan=1 pitch=71 vol=0
|
|
Time=20521 Note on, chan=1 pitch=69 vol=80
|
|
Time=20640 Note off, chan=1 pitch=69 vol=0
|
|
Time=20641 Note on, chan=1 pitch=67 vol=80
|
|
Time=20880 Note off, chan=1 pitch=67 vol=0
|
|
Time=20881 Note on, chan=1 pitch=71 vol=80
|
|
Time=21120 Note off, chan=1 pitch=71 vol=0
|
|
Time=21121 Note on, chan=1 pitch=69 vol=105
|
|
Time=21360 Note off, chan=1 pitch=69 vol=0
|
|
Time=21361 Note on, chan=1 pitch=67 vol=80
|
|
Time=21600 Note off, chan=1 pitch=67 vol=0
|
|
Time=21601 Note on, chan=1 pitch=67 vol=80
|
|
Time=21840 Note off, chan=1 pitch=67 vol=0
|
|
Time=21841 Note on, chan=1 pitch=66 vol=80
|
|
Time=22080 Note off, chan=1 pitch=66 vol=0
|
|
Time=22081 Note on, chan=1 pitch=67 vol=95
|
|
Time=22560 Note off, chan=1 pitch=67 vol=0
|
|
Time=22561 Note on, chan=1 pitch=67 vol=80
|
|
Time=23040 Note off, chan=1 pitch=67 vol=0
|
|
Time=23041 Note on, chan=1 pitch=74 vol=105
|
|
Time=23280 Note off, chan=1 pitch=74 vol=0
|
|
Time=23281 Note on, chan=1 pitch=72 vol=80
|
|
Time=23400 Note off, chan=1 pitch=72 vol=0
|
|
Time=23401 Note on, chan=1 pitch=71 vol=80
|
|
Time=23520 Note off, chan=1 pitch=71 vol=0
|
|
Time=23521 Note on, chan=1 pitch=69 vol=80
|
|
Time=23760 Note off, chan=1 pitch=69 vol=0
|
|
Time=23761 Note on, chan=1 pitch=71 vol=80
|
|
Time=24000 Note off, chan=1 pitch=71 vol=0
|
|
Time=24001 Note on, chan=1 pitch=72 vol=95
|
|
Time=24240 Note off, chan=1 pitch=72 vol=0
|
|
Time=24241 Note on, chan=1 pitch=71 vol=80
|
|
Time=24360 Note off, chan=1 pitch=71 vol=0
|
|
Time=24361 Note on, chan=1 pitch=69 vol=80
|
|
Time=24480 Note off, chan=1 pitch=69 vol=0
|
|
Time=24481 Note on, chan=1 pitch=67 vol=80
|
|
Time=24720 Note off, chan=1 pitch=67 vol=0
|
|
Time=24721 Note on, chan=1 pitch=71 vol=80
|
|
Time=24960 Note off, chan=1 pitch=71 vol=0
|
|
Time=24961 Note on, chan=1 pitch=69 vol=105
|
|
Time=25200 Note off, chan=1 pitch=69 vol=0
|
|
Time=25201 Note on, chan=1 pitch=67 vol=80
|
|
Time=25440 Note off, chan=1 pitch=67 vol=0
|
|
Time=25441 Note on, chan=1 pitch=66 vol=80
|
|
Time=25680 Note off, chan=1 pitch=66 vol=0
|
|
Time=25681 Note on, chan=1 pitch=67 vol=80
|
|
Time=25920 Note off, chan=1 pitch=67 vol=0
|
|
Time=25921 Note on, chan=1 pitch=69 vol=95
|
|
Time=26280 Note off, chan=1 pitch=69 vol=0
|
|
Time=26281 Note on, chan=1 pitch=71 vol=80
|
|
Time=26400 Note off, chan=1 pitch=71 vol=0
|
|
Time=26401 Note on, chan=1 pitch=69 vol=80
|
|
Time=26880 Note off, chan=1 pitch=69 vol=0
|
|
Time=26881 Note on, chan=1 pitch=74 vol=105
|
|
Time=27120 Note off, chan=1 pitch=74 vol=0
|
|
Time=27121 Note on, chan=1 pitch=72 vol=80
|
|
Time=27240 Note off, chan=1 pitch=72 vol=0
|
|
Time=27241 Note on, chan=1 pitch=71 vol=80
|
|
Time=27360 Note off, chan=1 pitch=71 vol=0
|
|
Time=27361 Note on, chan=1 pitch=69 vol=80
|
|
Time=27600 Note off, chan=1 pitch=69 vol=0
|
|
Time=27601 Note on, chan=1 pitch=71 vol=80
|
|
Time=27840 Note off, chan=1 pitch=71 vol=0
|
|
Time=27841 Note on, chan=1 pitch=72 vol=95
|
|
Time=28080 Note off, chan=1 pitch=72 vol=0
|
|
Time=28081 Note on, chan=1 pitch=71 vol=80
|
|
Time=28200 Note off, chan=1 pitch=71 vol=0
|
|
Time=28201 Note on, chan=1 pitch=69 vol=80
|
|
Time=28320 Note off, chan=1 pitch=69 vol=0
|
|
Time=28321 Note on, chan=1 pitch=67 vol=80
|
|
Time=28560 Note off, chan=1 pitch=67 vol=0
|
|
Time=28561 Note on, chan=1 pitch=71 vol=80
|
|
Time=28800 Note off, chan=1 pitch=71 vol=0
|
|
Time=28801 Note on, chan=1 pitch=69 vol=105
|
|
Time=29040 Note off, chan=1 pitch=69 vol=0
|
|
Time=29041 Note on, chan=1 pitch=67 vol=80
|
|
Time=29280 Note off, chan=1 pitch=67 vol=0
|
|
Time=29281 Note on, chan=1 pitch=67 vol=80
|
|
Time=29520 Note off, chan=1 pitch=67 vol=0
|
|
Time=29521 Note on, chan=1 pitch=66 vol=80
|
|
Time=29760 Note off, chan=1 pitch=66 vol=0
|
|
Time=29761 Note on, chan=1 pitch=67 vol=95
|
|
Time=30240 Note off, chan=1 pitch=67 vol=0
|
|
Time=30241 Note on, chan=1 pitch=67 vol=80
|
|
Time=30720 Note off, chan=1 pitch=67 vol=0
|
|
Time=30720 Key signature, sharp/flats=-1 minor=0
|
|
Time=30721 Note on, chan=1 pitch=70 vol=105
|
|
Time=30840 Note off, chan=1 pitch=70 vol=0
|
|
Time=30841 Note on, chan=1 pitch=69 vol=80
|
|
Time=30960 Note off, chan=1 pitch=69 vol=0
|
|
Time=30961 Note on, chan=1 pitch=67 vol=80
|
|
Time=31200 Note off, chan=1 pitch=67 vol=0
|
|
Time=31201 Note on, chan=1 pitch=70 vol=80
|
|
Time=31320 Note off, chan=1 pitch=70 vol=0
|
|
Time=31321 Note on, chan=1 pitch=69 vol=80
|
|
Time=31440 Note off, chan=1 pitch=69 vol=0
|
|
Time=31441 Note on, chan=1 pitch=67 vol=80
|
|
Time=31680 Note off, chan=1 pitch=67 vol=0
|
|
Time=31681 Note on, chan=1 pitch=65 vol=95
|
|
Time=31920 Note off, chan=1 pitch=65 vol=0
|
|
Time=31921 Note on, chan=1 pitch=67 vol=80
|
|
Time=32160 Note off, chan=1 pitch=67 vol=0
|
|
Time=32161 Note on, chan=1 pitch=69 vol=80
|
|
Time=32640 Note off, chan=1 pitch=69 vol=0
|
|
Time=32641 Note on, chan=1 pitch=62 vol=105
|
|
Time=32880 Note off, chan=1 pitch=62 vol=0
|
|
Time=32881 Note on, chan=1 pitch=64 vol=80
|
|
Time=33120 Note off, chan=1 pitch=64 vol=0
|
|
Time=33121 Note on, chan=1 pitch=65 vol=80
|
|
Time=33360 Note off, chan=1 pitch=65 vol=0
|
|
Time=33361 Note on, chan=1 pitch=67 vol=80
|
|
Time=33600 Note off, chan=1 pitch=67 vol=0
|
|
Time=33601 Note on, chan=1 pitch=69 vol=95
|
|
Time=33840 Note off, chan=1 pitch=69 vol=0
|
|
Time=33841 Note on, chan=1 pitch=70 vol=80
|
|
Time=34080 Note off, chan=1 pitch=70 vol=0
|
|
Time=34081 Note on, chan=1 pitch=69 vol=80
|
|
Time=34320 Note off, chan=1 pitch=69 vol=0
|
|
Time=34321 Note on, chan=1 pitch=67 vol=80
|
|
Time=34560 Note off, chan=1 pitch=67 vol=0
|
|
Time=34561 Note on, chan=1 pitch=70 vol=105
|
|
Time=34680 Note off, chan=1 pitch=70 vol=0
|
|
Time=34681 Note on, chan=1 pitch=69 vol=80
|
|
Time=34800 Note off, chan=1 pitch=69 vol=0
|
|
Time=34801 Note on, chan=1 pitch=67 vol=80
|
|
Time=35040 Note off, chan=1 pitch=67 vol=0
|
|
Time=35041 Note on, chan=1 pitch=70 vol=80
|
|
Time=35160 Note off, chan=1 pitch=70 vol=0
|
|
Time=35161 Note on, chan=1 pitch=69 vol=80
|
|
Time=35280 Note off, chan=1 pitch=69 vol=0
|
|
Time=35281 Note on, chan=1 pitch=67 vol=80
|
|
Time=35520 Note off, chan=1 pitch=67 vol=0
|
|
Time=35521 Note on, chan=1 pitch=65 vol=95
|
|
Time=35760 Note off, chan=1 pitch=65 vol=0
|
|
Time=35761 Note on, chan=1 pitch=67 vol=80
|
|
Time=36000 Note off, chan=1 pitch=67 vol=0
|
|
Time=36001 Note on, chan=1 pitch=69 vol=80
|
|
Time=36480 Note off, chan=1 pitch=69 vol=0
|
|
Time=36481 Note on, chan=1 pitch=62 vol=105
|
|
Time=36720 Note off, chan=1 pitch=62 vol=0
|
|
Time=36721 Note on, chan=1 pitch=64 vol=80
|
|
Time=36960 Note off, chan=1 pitch=64 vol=0
|
|
Time=36961 Note on, chan=1 pitch=65 vol=80
|
|
Time=37200 Note off, chan=1 pitch=65 vol=0
|
|
Time=37201 Note on, chan=1 pitch=67 vol=80
|
|
Time=37440 Note off, chan=1 pitch=67 vol=0
|
|
Time=37441 Note on, chan=1 pitch=67 vol=95
|
|
Time=37680 Note off, chan=1 pitch=67 vol=0
|
|
Time=37681 Note on, chan=1 pitch=65 vol=80
|
|
Time=37920 Note off, chan=1 pitch=65 vol=0
|
|
Time=37921 Note on, chan=1 pitch=67 vol=80
|
|
Time=38400 Note off, chan=1 pitch=67 vol=0
|
|
Time=38400 Key signature, sharp/flats=-1 minor=0
|
|
Time=38401 Note on, chan=1 pitch=70 vol=105
|
|
Time=38520 Note off, chan=1 pitch=70 vol=0
|
|
Time=38521 Note on, chan=1 pitch=69 vol=80
|
|
Time=38640 Note off, chan=1 pitch=69 vol=0
|
|
Time=38641 Note on, chan=1 pitch=67 vol=80
|
|
Time=38880 Note off, chan=1 pitch=67 vol=0
|
|
Time=38881 Note on, chan=1 pitch=70 vol=80
|
|
Time=39000 Note off, chan=1 pitch=70 vol=0
|
|
Time=39001 Note on, chan=1 pitch=69 vol=80
|
|
Time=39120 Note off, chan=1 pitch=69 vol=0
|
|
Time=39121 Note on, chan=1 pitch=67 vol=80
|
|
Time=39360 Note off, chan=1 pitch=67 vol=0
|
|
Time=39361 Note on, chan=1 pitch=65 vol=95
|
|
Time=39600 Note off, chan=1 pitch=65 vol=0
|
|
Time=39601 Note on, chan=1 pitch=67 vol=80
|
|
Time=39840 Note off, chan=1 pitch=67 vol=0
|
|
Time=39841 Note on, chan=1 pitch=69 vol=80
|
|
Time=40320 Note off, chan=1 pitch=69 vol=0
|
|
Time=40321 Note on, chan=1 pitch=62 vol=105
|
|
Time=40560 Note off, chan=1 pitch=62 vol=0
|
|
Time=40561 Note on, chan=1 pitch=64 vol=80
|
|
Time=40800 Note off, chan=1 pitch=64 vol=0
|
|
Time=40801 Note on, chan=1 pitch=65 vol=80
|
|
Time=41040 Note off, chan=1 pitch=65 vol=0
|
|
Time=41041 Note on, chan=1 pitch=67 vol=80
|
|
Time=41280 Note off, chan=1 pitch=67 vol=0
|
|
Time=41281 Note on, chan=1 pitch=69 vol=95
|
|
Time=41520 Note off, chan=1 pitch=69 vol=0
|
|
Time=41521 Note on, chan=1 pitch=70 vol=80
|
|
Time=41760 Note off, chan=1 pitch=70 vol=0
|
|
Time=41761 Note on, chan=1 pitch=69 vol=80
|
|
Time=42000 Note off, chan=1 pitch=69 vol=0
|
|
Time=42001 Note on, chan=1 pitch=67 vol=80
|
|
Time=42240 Note off, chan=1 pitch=67 vol=0
|
|
Time=42241 Note on, chan=1 pitch=70 vol=105
|
|
Time=42360 Note off, chan=1 pitch=70 vol=0
|
|
Time=42361 Note on, chan=1 pitch=69 vol=80
|
|
Time=42480 Note off, chan=1 pitch=69 vol=0
|
|
Time=42481 Note on, chan=1 pitch=67 vol=80
|
|
Time=42720 Note off, chan=1 pitch=67 vol=0
|
|
Time=42721 Note on, chan=1 pitch=70 vol=80
|
|
Time=42840 Note off, chan=1 pitch=70 vol=0
|
|
Time=42841 Note on, chan=1 pitch=69 vol=80
|
|
Time=42960 Note off, chan=1 pitch=69 vol=0
|
|
Time=42961 Note on, chan=1 pitch=67 vol=80
|
|
Time=43200 Note off, chan=1 pitch=67 vol=0
|
|
Time=43201 Note on, chan=1 pitch=65 vol=95
|
|
Time=43440 Note off, chan=1 pitch=65 vol=0
|
|
Time=43441 Note on, chan=1 pitch=67 vol=80
|
|
Time=43680 Note off, chan=1 pitch=67 vol=0
|
|
Time=43681 Note on, chan=1 pitch=69 vol=80
|
|
Time=44160 Note off, chan=1 pitch=69 vol=0
|
|
Time=44161 Note on, chan=1 pitch=62 vol=105
|
|
Time=44400 Note off, chan=1 pitch=62 vol=0
|
|
Time=44401 Note on, chan=1 pitch=64 vol=80
|
|
Time=44640 Note off, chan=1 pitch=64 vol=0
|
|
Time=44641 Note on, chan=1 pitch=65 vol=80
|
|
Time=44880 Note off, chan=1 pitch=65 vol=0
|
|
Time=44881 Note on, chan=1 pitch=67 vol=80
|
|
Time=45120 Note off, chan=1 pitch=67 vol=0
|
|
Time=45121 Note on, chan=1 pitch=67 vol=95
|
|
Time=45360 Note off, chan=1 pitch=67 vol=0
|
|
Time=45361 Note on, chan=1 pitch=65 vol=80
|
|
Time=45600 Note off, chan=1 pitch=65 vol=0
|
|
Time=45601 Note on, chan=1 pitch=67 vol=80
|
|
Time=46080 Note off, chan=1 pitch=67 vol=0
|
|
Time=46106 Meta event, end of track
|
|
Track end
|