r57shell wrote:
So you listening in Renoise, then feeding MIDI in GEMS.EXE channel by channel, after that, copy-paste patches from DefleMask: saving banks, and split them - to make song like directory? After that combining songs with my combiner? Or something like that?
Not exactly that complex. Make song in Renoise, send MIDI to GEMS all at once--GEMS separates automatically by MIDI channel and you can send up to all 16 MIDI channels simultaneously. I thought at first that it was one at a time as well. In fact if you try to send one channel at a time it'll split them into separate sequences. So I press record on GEMS and play on Renoise and wait until song is done. Copy patches from DefleMask. Go into GEMS opcode editor and set patches, tempo and loop points manually. I can then "Compile" from GEMS the pbank/mbank/sbank/dbank.asm to assemble into my program.
I haven't had a need for it yet but your splitter/combiner does work well to put multiple GEMS songs together, but the GEMS .MOD format is intended to hold all samples & sequences for an entire production. All songs, patches and digital sounds. So I try to work the same way (put all music and sound into one MOD file).
r57shell wrote:
Ok, I'll look into it. But you can split, combine, and replace patches with converted from DefleMask patches. But I don't remember does my converter support latest DefleMask patches or not. But you may use VGM Maker instead of DefleMask for making instruments. My converter supports vgi (VGM Maker Instrument).
I will try this. I have also had luck using your vgmjuice to make a GEMS native patch and then copying the hex directly into pbank.asm. The only disadvantage is these changes don't persist to the GEMS editor.
r57shell wrote:
You didn't understand me. There are many specific features in GEMS that is not MIDI compatible. For example: there is no LOOP command in MIDI, also there is no IF commands in MIDI, and so on.
Here is a list of GEMS MIDI CC's from GEMS.DOC. The IF statement isn't there, but most of the others are:
- Opcode: Note On
Fields: Note number (60=middle C=C4); duration
MIDI equivalent: Standard note-on/note-off pair
Library routine: gemsnoteon/gemsnoteoff
Notes:
Opcode: Program Change
Fields: Patch #
MIDI equivalent: Standard program change
Library routine: gemsprogchange
Notes:
Opcode: Modulator Change
Fields: Modulator #
MIDI equivalent: MIDI Controller #80 = Modulator #
Library routine: gemssetenv
Notes: Also triggers it if appropriate
Opcode: Modulator Trigger
Fields: Modulator Selection/Note On
MIDI equivalent: MIDI Controller #68 = Env Sel(127)
or Note On(0)
Library routine: gemsretrigenv
Notes: Default is Env Sel
Opcode: Loop Start
Fields: 1-126/Endless Reps
MIDI equivalent: MIDI Controller #81 = Reps
Library routine:
Notes:
Opcode: Loop End
Fields: - none -
MIDI equivalent: MIDI Controller #81 = 0
Library routine:
Notes:
Opcode: Sustain Switch
Fields: On/Off
MIDI equivalent: MIDI Controller #64 = on(127), off(0)
Library routine: gemssustain
Notes: Default is off
Opcode: Tempo
Fields: 40-167 BPM
MIDI equivalent: MIDI Controller #16 = Tempo-40
Library routine: gemssettempo
Notes:
Opcode: Mute/Unmute Channel
Fields: Channel 0-15
MIDI equivalent: MIDI Controller #18 = channel #(+16 for
unmute)
Library routine: gemsmute
Notes: Channel in this sequence
Opcode: Priority
Fields: 0-127
MIDI equivalent: MIDI Controller #19 = priority
Library routine: gemspriority
Notes: Default is 0
Opcode: Pitch Bend
Fields: +/-x.xx semi-tones
MIDI equivalent: Standard pitch bend
Library routine: gemspitchbend
Notes:
Opcode: SFX Tempo
Fields: - none -
MIDI equivalent: MIDI Controller #70 = 0
Library routine:
Notes: Channel switches to 150 bpm
Opcode: Start Sequence
Fields: 0-127
MIDI equivalent: MIDI Controller #82 = Sequence #
Library routine: gemsstartsong
Notes:
Opcode: Sample Playback Rate
Fields: Default/10.4/8.7/7.3/6.5/5.8/5.2
MIDI equivalent: MIDI Controller #71 = 4/5/6/7/8/9/10
Library routine:
Notes: Reset to default by program change
When GEMS receives these CC over MIDI, it inserts the opcode selected. But you are right about IF statements and Mailboxes, there isn't a way to do this from MIDI. But I don't think this is needed just to make a normal song.
r57shell wrote:
I can convert MIDI one channel into GEMS one channel, but it is headache convert channel by channel, and change instruments in different software, and then, mixing up all this together, and feeding it into Genesis emulator or hardware to hear how it sounds.
You could still send the MIDI data, all channels simultaneously, to GEMS.EXE which takes away most of the headache. It is still a headache editing patches to sound good in the song. I still have to change patch, save bank, export assembly, then rebuild my ROM to hear changes. What I mentioned in my first post is now I am using my TX81Z Yamaha synthesizer (YM2414, mostly compatible with 2612) to make patches and edit them while I work on the song so I only have to export patches one time. It has a "performance mode" which provides 8 channels multitimbral--you can make a whole song this way with up to 8 different sounds. I hear this is the way EA and Accolade, developers without official devkits, made music for Genesis. There is a tool,
TXConvert, which loads VOPM *.OPM files and can convert them to the synthesizer's patch format, so I can use ripped Genesis patches from VGMs etc.
I also had the thought that if DefleMask had MIDI out, that would be good as well, but there is nothing you or I can do about that.
neologix wrote:If either of you can provide or otherwise point me to either the spec or reliable example preset files of this "Artec FM" and/or GEMS PAT format, I can add YM2612-to-GEMS preset dumping to VGM2Pre
This could be useful. I don't have any details on those formats, but it is what is referenced in the GEMS documentation. If you can get a hold of drx's original release of the GEMS kit (2.5 I think) there are .FM patch files included. If you need, I can take some time to take a "known" patch format and recreate it in the GEMS editor and save it, so you can compare differences.