|
ForumsSega Master System / Mark III / Game GearSG-1000 / SC-3000 / SF-7000 / OMV |
Home - Forums - Games - Scans - Maps - Cheats - Credits Music - Videos - Development - Hacks - Translations - Homebrew |
![]() |
Author | Message |
---|---|
|
New FM tracker
![]() |
Hi SMS fans
Today I found this: https://www.reddit.com/r/chiptunes/comments/qfe3ku/0cclltracker_an_ym2413_fork_o... It's a modification of another tracker in order to use YM2413 chip. I guess it will come handy to create FM music for our beloved console. |
|
![]() ![]() |
|
|
![]() |
The dream is here!
The lack of SN76489 support isn't... perfect. But it's also how the Mark III's FM module worked, sooo... |
|
![]() ![]() ![]() |
|
|
![]() |
It seems there is a problem: the VGM format this tracker produces cannot be used with SMSdevkit currently. Maxim did a VGM player, I guess the music handling part could be isolated to a library to use it with SMSdevkit but it seems a VGM file would take too much ROM size. |
|
![]() ![]() |
|
|
![]() |
That's because currently there is no minified FM format and player for devkitSMS.
It probably wouldn't be too hard to make an FMLib for the FM chip, in the same way there is PSGLib for the PSG chip, basically a super-simplified midi format. |
|
![]() ![]() |
|
|
![]() |
VGM is already very much like MIDI, but I’m sure a minimised version would be quite possible. There’s more gotchas with YM2413 - timing, parameter setup around percussion - and it’s harder to test, but I’m sure it’s possible.
PSGLib optimises a little more for speed vs size by putting everything into one data stream (chip commands, timing). I think splitting the streams and having a stream per register might work better for FM, even though it means some redundancy in the timing data and more work in the playback engine. |
|
![]() ![]() ![]() |
|
|
![]() |
I think even a 'minimized' FM VGM would use a lot of space, given that there are way more hardware registers that could be updated at each frame, and that's why I basically never went further with any FMlib. (you can compare with the size of a PSG VGM to get an idea...) Sure, one could create a library that supports tunes larger than 16 KB by supporting paging but... well, that complicates matters of course. |
|
![]() ![]() ![]() |
|
|
![]() |
A 2413 tracker is definitely welcome, even I wanted to make one, but I've been told there was no need to (because of Moontracker and Trilotracker), so I never did.
As for playback libraries, relevant discussion from some years ago, so nothing is lost. |
|
![]() ![]() ![]() |
|
|
![]() |
I won't say a tracker is not needed, especially as all the musicians I know say that using a MSX tracker is a NO-GO. | |
![]() ![]() |
|
|
![]() |
definitely a good brainstorming! |
|
![]() ![]() ![]() |
|
|
![]() |
one could port that to modern computers and keep the same format? |
|
![]() ![]() ![]() |
|
|
![]() |
That's what I said, too, but I've been told that "it works so well", so I didn't feel like writing a new tracker just to see it unused. If the time comes, I'll still be up to write converters if needed (e.g. from XM). |
|
![]() ![]() ![]() |
|
|
![]() |
the trouble here is that the problem is threefold:
- have a tracker that musicians want to use - the tracker should save (or at least export) to a compact format - there should exist a replay library for that format with low memory/CPU footprint I think MoonBlaster at the moment qualifies well enough for the second and the third, so a new tracker (or a converter) that could export (convert) to that format would be nice... |
|
![]() ![]() ![]() |
|
|
![]() |
Actually, na_th_an already offered to do a converter, but we didn't have at the time a windows tracker suitable. Maybe now we can do from this new one to moonblaster format. | |
![]() ![]() |
|
|
![]() |
I have less free time now that I work as a teacher in a high school, but if conversion from/to XM is involved at any point I'll gladly help. | |
![]() ![]() ![]() |
|
|
![]() |
I'm not an expert on XM, but we can try to see how well it can match with moonblaster format. | |
![]() ![]() |
|
|
![]() |
Trying to shoehorn any format into the one used by MoonBlaster would be a huge challenge, if it's possible at all. In any case I'm really not sure if it's worth the effort, as MoonBlaster is quite restricted in a lot of ways.
I could totally understand that, as MSX emulation is particularly fiddly to get up and running. However, in the meantime Calindro has made it possible to run MoonBlaster within Emulicious, and setting that up isn't really any more difficult than running a tracker native to Windows. That's not to say there aren't good reasons for not wanting to use MoonBlaster in the first place, but it being MSX software definitely isn't one of them. |
|
![]() ![]() |
|
|
![]() |
It's. It's not a native modern desktop app, so no mouse, t's hard to extract the disk files to share the compositions, keyboard mapping it's not obvious to a non msx user.... I make a standalone zipped directory with emulicious, moonblaster and blank disk files for my music, and he found it almost impossible to use properly. I don't have as much problems, but I lived through Amstrad an PC apps back in the day...(I actually proposed him to do the compositions on paper and I would have put them in Moonblaster...) |
|
![]() ![]() |
|
|
![]() |
This may be a misunderstanding on my part but isn't the advantage of an FM synth that it does most of the heavy lifting internally so that only basic messages need to be sent (instrument setup, note on/off etc). One of the reasons SN76489 is so verbose is because volume envelopes and effects have to be simulated by multiple register writes because it's not natively supported in hardware. |
|
![]() ![]() |
|
|
![]() Last edited by Cyttorak on Thu Nov 18, 2021 12:09 pm; edited 1 time in total |
What about the json format the tracker can export and import? Here an example of a very simple song with just a pattern:
{"channels":[{"chip":"OPLL","subindex":0},{"chip":"OPLL","subindex":1},{"chip":"OPLL","subindex":2},{"chip":"OPLL","subindex":3},{"chip":"OPLL","subindex":4},{"chip":"OPLL","subindex":5},{"chip":"OPLL","subindex":6},{"chip":"OPLL","subindex":7},{"chip":"OPLL","subindex":8}],"detunes":[],"dpcm_samples":[],"global":{"detune":{"cents":0,"semitones":0},"engine_speed":0,"fxx_split_point":32,"linear_pitch":false,"machine":"ntsc","vibrato_style":"new"},"grooves":[],"instruments":[{"chip":"OPLL","index":0,"name":"test","patch":14},{"chip":"OPLL","index":1,"name":"New instrument","patch":[1,33,0,0,0,240,0,15]}],"metadata":{"artist":"","comment":"","copyright":"","show_comment_on_open":false,"title":""},"sequences":[],"songs":[{"bookmarks":[],"frames":1,"highlight":[4,16],"rows":64,"speed":6,"tempo":150,"title":"New song","tracks":[{"chip":"OPLL","effect_columns":1,"frame_list":[0],"patterns":[{"index":0,"notes":[{"note":{"inst_index":0,"kind":"note","value":48},"row":0},{"note":{"inst_index":0,"kind":"note","value":48},"row":8},{"note":{"inst_index":0,"kind":"note","value":48},"row":16},{"note":{"inst_index":0,"kind":"note","value":48},"row":24},{"note":{"inst_index":0,"kind":"note","value":53},"row":32},{"note":{"inst_index":0,"kind":"note","value":53},"row":40},{"note":{"inst_index":0,"kind":"note","value":53},"row":48},{"note":{"inst_index":0,"kind":"note","value":59},"row":56}]}],"subindex":0},{"chip":"OPLL","effect_columns":1,"frame_list":[0],"patterns":[],"subindex":1},{"chip":"OPLL","effect_columns":1,"frame_list":[0],"patterns":[],"subindex":2},{"chip":"OPLL","effect_columns":1,"frame_list":[0],"patterns":[],"subindex":3},{"chip":"OPLL","effect_columns":1,"frame_list":[0],"patterns":[],"subindex":4},{"chip":"OPLL","effect_columns":1,"frame_list":[0],"patterns":[],"subindex":5},{"chip":"OPLL","effect_columns":1,"frame_list":[0],"patterns":[],"subindex":6},{"chip":"OPLL","effect_columns":1,"frame_list":[0],"patterns":[],"subindex":7},{"chip":"OPLL","effect_columns":1,"frame_list":[0],"patterns":[],"subindex":8}],"uses_groove":false}]} |
|
![]() ![]() |
|
|
![]() |
I wanted to say that Calindro just told me you can mount folders in Emulicious (I was using msx disk images), so my musician and I were being really cumbersome regarding our process :-P |
|
![]() ![]() |
|
|
![]() |
True, but you might anyway reprogram the whole thing each frame. The old thread linked by Tom contains some data about a few tests I ran back then, basically the YM2413 VGMs are too big to be used as a base for a conversion/compression scheme similar to the one that PSGlib uses. Tracked tunes is likely the only real option, here. A Windows/Linux/Mac MoonBlaster based tracker would be a good option here because the export format is compact and the replay routines available already (sure, it would require more CPU cycles than playing a PSG tune but that's expected) |
|
![]() ![]() ![]() |
|
|
![]() |
Details, please! I'm sure many would love to use MoonBlaster on Emulicious easily :) |
|
![]() ![]() ![]() |
|
|
![]() |
For Disk B select a folder (Options->Emulation->MSX->Disk B). The emulated MSX will have 2 disks. Disk A will be the loaded disk (Moonblaster disk in this case) and Disk B will be mounted as the folder you selected for Disk B. So when you put files into the selected folder, they will be visible in the emulated MSX on disk B. And when yoh save files to disk B, they will appear in the folder. |
|
![]() ![]() ![]() |
![]() |