Page 1 of 2

Melodius (MIDI and ZSM player) - requires R44 or later

Posted: Wed Sep 06, 2023 8:29 am
by MooingLemur
This is a music player for the X16 that can play MIDI and ZSM files. MIDI files are played on the YM2151 via the patch set in ROM that exists mainly for the BASIC music commands, and the ZSM player uses my own zsm playback library called zsmkit, which is the only library so far to support PCM audio playback from ZSM files exported by Furnace.
Screenshot from 2024-02-05 04-51-03.png
Screenshot from 2024-02-05 04-51-03.png (55.5 KiB) Viewed 3639 times
The notes are visualized as they are played on both ZSM and MIDI files.

Controls are pretty simple. Up/Down/Home/End/PgUp/PgDn for navigation, Enter/Return to start playback or enter a directory, space bar to pause/resume playback. F1 cycles between single song playback, sequential, and shuffle modes. Sequential and shuffle will continue playback until stopped or until you've navigated to a directory in which there are no playable files. F2 selects the interrupt timer source for ZSM playback. The default is usually fine.

#R44 #R45 #R46
Try It Now!

Re: Melodius (MIDI and ZSM player) - requires R44 or later

Posted: Wed Sep 06, 2023 4:25 pm
by Edmond D
It took me awhile to find Adrian's "8 Bit Dance Party" but was worth it. :-) I like the visualizations - I think I understand them despite being musically challenged.

Having grown up on a VIC 20, the X16 seems to be a extremely capable music machine. I think your program really shows of the platform well.

Re: Melodius (MIDI and ZSM player) - requires R44 or later

Posted: Wed Sep 06, 2023 5:53 pm
by ahenry3068
Most impressive work. 2 thumbs up.

Re: Melodius (MIDI and ZSM player) - requires R44 or later

Posted: Fri Oct 06, 2023 10:03 pm
by ahenry3068
Someone told me I can create a log.zsm from your program while playing a MIDI. I tried to find the post but couldn't and maybe my brain is just melting...lol. Would that conversion be possible ?

Re: Melodius (MIDI and ZSM player) - requires R44 or later

Posted: Fri Oct 06, 2023 10:09 pm
by ahenry3068
First time I've really tried this program out. I'm highly impressed :) Very good work.
Last time I only played a couple files. Been really working it out the last hour.

Re: Melodius (MIDI and ZSM player) - requires R44 or later

Posted: Sat Oct 07, 2023 1:07 am
by ahenry3068
ahenry3068 wrote: Fri Oct 06, 2023 10:03 pm Someone told me I can create a log.zsm from your program while playing a MIDI. I tried to find the post but couldn't and maybe my brain is just melting...lol. Would that conversion be possible ?
It seems even if not possible at the moment that you have at least 1/2 or more of the code already done to make that conversion possible.

Re: Melodius (MIDI and ZSM player) - requires R44 or later

Posted: Sun Oct 15, 2023 10:43 pm
by MooingLemur
Melodius's MIDI player leans heavily on the audio bank's routines. In order for Melodius to know about all of the register writes for ZSM, some of that code would have to be duplicated. It's not as trivial as that though. I don't have the appetite to work on that at the moment but the source is all available if someone else wants to do the work.

Re: Melodius (MIDI and ZSM player) - requires R44 or later

Posted: Sun Oct 15, 2023 10:51 pm
by ahenry3068
Maybe I have a something to work on after my Autodesk player. At my current rate I might start the code late Summer or Fall 2024 :). It would require a great deal of study on my part before even starting the code.

Re: Melodius (MIDI and ZSM player) - requires R44 or later

Posted: Sun Oct 15, 2023 10:53 pm
by ahenry3068
I didn't really thing it would be trivial.... I said 50% of the necessary code in Melodius. That leaves for a lot of complexity in the other 50%

Re: Melodius (MIDI and ZSM player) - requires R44 or later

Posted: Sun Oct 15, 2023 10:55 pm
by ahenry3068
I can be a bit of a Gorilla programmer myself. Its not the most efficient approach. But if I was starting this I would probably copy the Audio Bank routines en-masse to a seperate TAB on my editor and start a line by line dissection.