All following information "as far as I know":
It's called
Simple Music Playback System. It was example for developers how to drive sound. So it was widely copy-pasted and modified. And that's why there is enormous variety of modifications. It doesn't even have common commands format. Identical among modifications only "play note" comand and durations/delays.
KanedaFr wrote:
What is not clear for me is the several versions floating around
68k version, 68k+Z80 version, z80 version
Yes, it has all possible three types of drivers. I want to talk about Z80-only driver. As it called
Simple Music Playback System, it can't doo much of stuff. All playing music keeped in Z80 memory, so you have restriction on size of sequence. But you may load music in Z80 before playback, so it's kinda "ok". It has some allocation for sfx, but again, very simple. Format of sequences is like VGM-trial version: patch change,note, pitch, delay/duration only. Hmm I don't remember about loops, but it must support them.
KanedaFr wrote:Is there an exploitable version (please, tell me the z80 version) and how could use it for song (composer ?) and fx (pcm, psg...) ?
I don't know about any SMPS SDK, it seems like nothing available.
For sonic hacks, people are using third party utilities like mod->smps and other stuff, for conversion from tracker formats into smps format. Interesting fact: even format of SMPS FM Patches is different between different parts of Sonic.
I think, first you must read Sonicretro pages about Music Hacking/Editing in Sonic. Also, you may join some #irc channels about sonic, and ask them. This is not sonic retro site
You're on wrong forum
KanedaFr wrote:How does it compare to GEMS, VGM and Echo ?
For me, GEMS is completely different:
1) It's official: developed by Sega
2) It's complete: It has all tools that is need for developing music of those years.
3) It was supporting with Sega: bug fixes and so on...
4) It has Dinamic Voice Allocation (SMPS does not)
5) Its sequences format is common among versions.
6) PSG ASDR emulation. (correct me, if it's implemented in SMPS)
As I said before, SMPS is more like VGM, but stripped version. I don't think that you can do all stuff that can be done in VGM: change of any parameter of YM2612 or PSG at any time moment. But honestly, who will ask for changing detune of FM channel during playback? Fact: Time Trax music using this method
. It's changing many of FM settings during None ON, but it's unusual. It needs only for professional music composers.
You may think that SMPS is VGM with stripped off "professional features" like changing FM Operator settings on fly
. But you may add them.
From this point of view, SMPS is suitable for many games. If you want to go beyond SMPS restrictions, then you need to write your own sound driver, or patch existed SMPS.
In VGM format there is timing for each event, and any register change is separated. That's why size of VGM is usually big.
When you making music, you think about it like: play this note at this time with this duration using this instrument. When driver need to load instrument: it writes several registers in some order. In VGM format each write is separated, and it has timestamp (delay actually). So in VGM format instrument loading looks like many separate commands with timestamps (delays actually). Each time when you change instrument for channel, you're increasing size of VGM. So first size reduction is: keep instruments in separate "instruments bank", and make very small command for loading of instrument.
Next step of size reduction: old versions of VGM was using separate commands for each byte of playing sample. But latest VGM supports Sample bank, so if you use this feature, your VGM will be much smaller.
SMPS separate Samples from sequences, so it's small format.
What I was talking about? I was trying to say that SMPS is stripped VGM, and it's actually how must be implemented simplest sound driver for Sega Genesis.
KanedaFr wrote:there is no (official) driver for SGDK, so is it something to be added ?
Do you mean "official" SMPS driver? Because There is several drivers for SGDK, including VGM. Or, am I wrong?
<end of long post>