Reply 300 of 377, by mattw
found picture of all 94B instrument parameters....
found picture of all 94B instrument parameters....
I kind of lost track of how you guys came to reversing the .94i file format and how this is related to the SC-55, but, for what it may or may not be worth, isn't that (from the screenshot) the instrument file format of the old Dream SAM9407 chip used in the Terratec EWS64 or the Hoontech Soundtrack soundcards? The screenshot kind of looks like the default Dream developer board software that Hoontech bundled and that I tried to make run on the EWS64 (as they didn't deliver an instrument editor for a really long time) back in the days.
bnz99 wrote on 2020-12-21, 12:34:I kind of lost track of how you guys came to reversing the .94i file format and how this is related to the SC-55
it's not (yet) reversed, but how it is related or even not related at all to SC-55, you can read here (especially the last link, which gives link to an independent article about a connection):
Re: About Roland Virtual Sound Canvas 3
Re: About Roland Virtual Sound Canvas 3
Re: About Roland Virtual Sound Canvas 3
Re: About Roland Virtual Sound Canvas 3
Re: About Roland Virtual Sound Canvas 3
bnz99 wrote on 2020-12-21, 12:34:, but, for what it may or may not be worth, isn't that (from the screenshot) the instrument file format of the old Dream SAM9407 chip used in the Terratec EWS64 or the Hoontech Soundtrack soundcards?
94B (or 94I for a single instrument) is Sound Bank format for that SAM94-and-compatible generation of synth chips (EDIT: my understanding is SAM9503 is compatible even it has no "4" in the model number). there is 98I as well for the next generation SAM9708. probably, even more, I am not familiar with how many different generations there were of such synth chips. in any way, there are 94I/B and 98I/B formats for sure, i guess SAM9708 has new features that old 94-format can not accommodate and that's why 98-format was introduced.
bnz99 wrote on 2020-12-21, 12:34:The screenshot kind of looks like the default Dream developer board software that Hoontech bundled and that I tried to make run on the EWS64 (as they didn't deliver an instrument editor for a really long time) back in the days.
most likely - yes. any related information is appreciated, especially if there are tools/apps that can handle 94-formats.
Whoa, I guess I wasn't notified by the forum about new posts for a while. Thanks for those links. I didn't even realize that the roms are decoded already 😉 I'll have to check this out. Pretty amazing stuff. Other than that, I unfortunately don't know much more about the 94i file format. I'd probably try to get my hands on that original dream software from an old Hoontech driver package or so. Not open source, but likely to some degree runnable on win98 or so.
Is the writeup about the reverse-engineered 94I/94B format available somewhere?
I was wondering if the SFZ format (https://sfzformat.com/) could better represent 94I/94B format instruments than the SF2 format.
LN
"When life gives you zombies... *CHA-CHIK* ...you make zombie-ade!"
Lord Nightmare wrote on 2020-12-21, 22:22:Is the writeup about the reverse-engineered 94I/94B format available somewhere?
AFAIK, nothing about 94I/94B format is available, that's why I got interested in the option of reverse-engineer it, because there are people who basically swear that "GSSBK320.94B" is sounding exactly the same as SC-55:
Re: Minimalist SC-55 setup - Naive dreams about reverse engineering the SC-55
It seems they were sued regarding that:
https://www.eetimes.com/atmel-and-crystal-sem … oland-corp-u-s/
Lord Nightmare wrote on 2020-12-21, 22:22:I was wondering if the SFZ format (https://sfzformat.com/) could better represent 94I/94B format instruments than the SF2 format.
it could be a better fit, but with what synth engines that SFZ will work?
mattw wrote on 2020-12-21, 22:37:it could be a better fit, but with what synth engines that SFZ will work?
There's a number of sfz-capable synth engines, most are listed on https://sfzformat.com/software/players/
LN
"When life gives you zombies... *CHA-CHIK* ...you make zombie-ade!"
mattw wrote on 2020-12-21, 22:37:AFAIK, nothing about 94I/94B format is available, that's why I got interested in the option of reverse-engineer it, because there are people who basically swear that "GSSBK320.94B" is sounding exactly the same as SC-55:
I'm curious what the purpose of this is? I can't find anything worth using that accepts this format. It would be better to just create an entirely new format suited to our needs and add it to fluidsynth than use one that has no support or documentation anywhere.
Edit:
it wouldn't take much to create a new version of sf2 either, that has more flexibility. It's only a riff file so it's uncomplicated to add more generators and modulators and etc and simply add support to some synth engine.
kitrinx wrote on 2020-12-22, 01:45:I'm curious what the purpose of this is? I can't find anything worth using that accepts this format. It would be better to just […]
mattw wrote on 2020-12-21, 22:37:AFAIK, nothing about 94I/94B format is available, that's why I got interested in the option of reverse-engineer it, because there are people who basically swear that "GSSBK320.94B" is sounding exactly the same as SC-55:
I'm curious what the purpose of this is? I can't find anything worth using that accepts this format. It would be better to just create an entirely new format suited to our needs and add it to fluidsynth than use one that has no support or documentation anywhere.
Edit:
it wouldn't take much to create a new version of sf2 either, that has more flexibility. It's only a riff file so it's uncomplicated to add more generators and modulators and etc and simply add support to some synth engine.
What about the few cards that use the 94B format? I sure would like to have some nice sets for them.
sfz is basically a new version of sf2, just a flat filesystem instead of a packed riff archive. Its one of the reasons I like it, because all you need to make an sfz is a pile of wave files and a text editor.
LN
"When life gives you zombies... *CHA-CHIK* ...you make zombie-ade!"
Lord Nightmare wrote on 2020-12-22, 02:56:sfz is basically a new version of sf2, just a flat filesystem instead of a packed riff archive. Its one of the reasons I like it, because all you need to make an sfz is a pile of wave files and a text editor.
LN
that sounds disorganized to me by comparison, tbh, but not unworkable. Whatever the case, I think that it would be unrealistic to entertain using something that a modern software synth can't be reasonably made to handle, particularly for sc55 which is such a retro gaming staple.
Lord Nightmare wrote on 2020-12-22, 02:56:sfz is basically a new version of sf2, just a flat filesystem instead of a packed riff archive. Its one of the reasons I like it, because all you need to make an sfz is a pile of wave files and a text editor.
LN
This is not exactly the case. I think the biggest difference is SF2 was designed with multi-timbrality in mind trying to mimic the hardware devices of the era. Thus a big part of the specification is about how to handle melodic and percussion pools and organize presets in different banks that can be addressed by Midi Bank Select and Program Change messages. This is completely missing from SFZ specification. SFZ is more DAW oriented where one instrument is usually assigned to one audio channel.
So a single SFZ file is about a single instrument and thus you cannot create a single GM/GS compatible multi purpose SFZ file like a full GM/GS SF2 soundfont. In this respect SFZ is more like 94I than 94B/SF2 format.
At least this was the case with original SFZ 1 format that defined opcodes that most SFZ compatible engines can understand nowadays. Later extensions/opcodes sometimes work with one engine but not with others.
Lack of standards is a problem of SFZ. You can see here what I'm talking about:
https://sfzformat.com/opcodes/
https://www.kvraudio.com/forum/viewtopic.php? … 508861&start=79
kitrinx wrote on 2020-12-22, 01:45:I'm curious what the purpose of this is?
I don't know, I am more asking about it, than stating anything. I said many times in this forum - I have no idea of how synth engines works and what is needed or not. however, if that aforementioned 94B bank sounds so close to SC that people cannot even distinguish it from the real thing, it suggest to me that the underlying synth engine has all or almost all necessary - it's not soft-synth engine like FluidSynth, it a hardware chip limited to number of particular sound cards . In fact if changes to FluidSynth and/or SF2 to properly work with SC Waveroms are necessary, then I guess best soft-synth solution would be just emulator like Munt. Once again, I don't know, nothing I say should be read as statement and more as questions and request someone with good knowledge on those subjects to share their thoughts.
while as per my previous post I don't know if any 94B effort is pointless or not, I found this difference with SF2 and just for a sake of documentation I am putting it here:
SF2 files got real ADSR-Envelopes - The Dream chip uses multistage Envelope. The SF2 ADSR Envelopes don't have a start level, an attack level, a decay level, a sustain time and a release level like the Dream multistage envelopes. Therefore an exact 1:1 conversion of the Dream envelopes into SF2 ADSR envelopes is impossible.
that is re-confirmation with some technical explanation about what I previously read, i.e. that 94B to SF2 is not lossless conversion. still I am not aware if such Envelope behavior is more like SC or not.
mattw wrote on 2020-12-24, 15:38:while as per my previous post I don't know if any 94B effort is pointless or not, I found this difference with SF2 and just for […]
while as per my previous post I don't know if any 94B effort is pointless or not, I found this difference with SF2 and just for a sake of documentation I am putting it here:
SF2 files got real ADSR-Envelopes - The Dream chip uses multistage Envelope. The SF2 ADSR Envelopes don't have a start level, an attack level, a decay level, a sustain time and a release level like the Dream multistage envelopes. Therefore an exact 1:1 conversion of the Dream envelopes into SF2 ADSR envelopes is impossible.
that is re-confirmation with some technical explanation about what I previously read, i.e. that 94B to SF2 is not lossless conversion. still I am not aware if such Envelope behavior is more like SC or not.
Fluidsynth envelopes are simpler than sc55, but not by a lot. The shape (linear or logarithmic) is not option in sf2, but both are possible with modification. Also envelopes don't allow levels to be set, but this can also be changed fairly easily. This is why I suggested a modified version of fluidsynth or a modified sf2 format. It would not take a lot of changes to make it pretty close to what sc55 needs to sound mostly correct. For things like chorus macros and specific sysex commands, a full emulator is needed, but I think it's possible with not much additional work to make existing sf2 engines play it well.
kitrinx wrote on 2020-12-25, 21:04:This is why I suggested a modified version of fluidsynth or a modified sf2 format. It would not take a lot of changes to make it pretty close to what sc55 needs to sound mostly correct.
it's a great news, if the changes needed to SF2 and fluidsynth are relatively small. i think you already did tremendous work on the SF2 conversion.
kitrinx wrote on 2020-12-20, 13:19:yawetaG wrote on 2020-12-20, 10:47:@kitrinx: Could you please expand your table so it also includes all variation presets?
I think the settings with index 11 and 12 are TVP LFO rate (vibrato rate) and TVP LFO delay (vibrato delay), and I also suspect the Sound Canvas range emulates instruments with a detuned component or other form of variable pitch by applying (delayed) vibrato.
Most detuned instruments seem to do so by using a second partial along with the tvp or even the fine tuning having a different setting. There is also a parameter that seems to influence the pitch over time shift.
The usual way Roland implements detuned patches on their other TVA/TVF synths is having two samples played at once, one of which is detuned. Those patches are often denoted by having a "d" suffix attached to the name (whereas "w" is for patches using two times the same sample, and "v" is used for velocity-switched or velocity-mixed patches).
Vibrato Depth is index 10, TVF LFO is 38, and TVA LFO (Tremolo) is 68. These are things I have observed by altering the rom, so I am pretty sure those are correctly the depth for those 3 LFO's.
I will stress again, do not use sysex. They don't necessarily correspond with what the *control rom* does. They are *interpreted* parameters and could influence one or multiple things when used, and as such aren't reliable for really modifying things. To test these you should get yourself a cheap rom burner and an AT29C020 eeprom (new, since their headers can be locked if used) and modify these values to observe the effects.
I might be working as a programmer, but programming eproms is beyond my skills.
However, it would be very illogical if the control options (CC or sysex) are fully disconnected from what the control ROM does; there must be some logical relationship between the two. Furthermore, for reasons of efficiency it would also be illogical to have different algorithms for each patch to control this relationship; instead I expect that there is a single set of algorithms describing the relationship for all patches that has modifiers using variables per patch (where the variable values can be found in the ROM).
For my own purposes I want to create a (Excel) table that matches the controls I have on my JV35 to the effect they have on the patches. I've already found that not all patches react to all control options. It's fairly likely that by cross-matching your table and my future table we will be able to have a better understanding of which parameter in the ROM does what.
Without such work I expect that you guys might be able to create a soundfont that sounds right when playing a MIDI file using the unmodified patches, but not one that works correctly with more advanced MIDI files...
Edit (2020/12/27): Just to add a bit to this: If every patch has its own, unrelated, set of algorithms for connecting MIDI control and sysex to the actual parameters in the patches, we end up with a problem of scale. There are 300+ individual patches and 100+ MIDI and sysex parameters, so that would mean there would be an unbelievable 30.000+ (!!!) algorithms necessary...that takes room, where are those located? Who at Roland would be crazy enough to even accept a programmer telling them "Hey we need a few ten thousands of algorithms to control this"?
Besides that, of course many of the MIDI and sysex parameters are "interpreted". That's exactly what a parameter being applied relative to the default patch settings implies.
mattw wrote on 2020-12-21, 09:36:Lord Nightmare wrote on 2020-12-21, 08:25:Flip i assume is flip-flop/ping-pong loop. forward-clip I guess starts playing(?) from the loop start point forward and doesn't play any of the wave before that even if it exists? (i.e. so a different patch can use a different section of the same wave, overlapping?)
it's something like that and i kind of demystified "fmAyA" - it's actually "fm4y4". so, 94B instrument definition could be either PCM(Wavetable) or FM. that means "fm4y4" whatever it exactly means, is the only "loop mode" available with FM instrument. maybe, someone familiar with FM synthesis can make a guess in deeper technical details. So, most interesting new information (at least to me) is that synth chip, which understand 94B format, are like Yamaha YMF278B (aka OPL4, even technically it's OPL3+Wavetable) and provide both FM and Wavetable synthesis at the same time.
Google "Roland FxM". Some Roland synths (JV-80 and descendants) have a limited FM modulation option. As an aside, JV-80 uses the same GP4 chip as the SC55, so FxM might be part of the GP4 chip's abilities and just inaccessible in SC55...
Besides that, a Roland envelope terminology note. The terms you tends to encounter in their manuals are "level" (obvious), "time" or "duration" (also obvious), and "rate". With regards to an envelope, "rate" actually refers to the angle of the line in a particular envelope stage (it's not obvious if you don't pay attention to the diagrams in their manuals). Also, if rate is used for decay and release, sometimes the value for the parameter is the inverse of what you would logically expect.
yawetaG wrote on 2020-12-26, 18:33:mattw wrote on 2020-12-21, 09:36:...i kind of demystified "fmAyA" - it's actually "fm4y4". so, 94B instrument definition could be either PCM(Wavetable) or FM. that means "fm4y4" whatever it exactly means, is the only "loop mode" available with FM instrument.
Google "Roland FxM". Some Roland synths (JV-80 and descendants) have a limited FM modulation option. As an aside, JV-80 uses the same GP4 chip as the SC55, so FxM might be part of the GP4 chip's abilities and just inaccessible in SC55...
I believe you're right, in 94B that "fm4y4" thing is dual 2-operators FM (that's why it's designated as "4", i.e. "2x2") and that Roland FxM is also 2 operators FM (1 carrier and 1 modulator). I think 94B has Dual such FM synth, because 94B can do 2 samples defined for one instrument, i.e. I guess it is connected to what you outlined here:
yawetaG wrote on 2020-12-26, 17:59:The usual way Roland implements detuned patches on their other TVA/TVF synths is having two samples played at once, one of which is detuned.
So, once again, I am not expert on those topics, but similarities between 94B and Roland are staggering in my opinion.
[EDIT] correct me, if I am wrong, but:
TVF is essentially the same as what 94B has: VCF, which is Voltage Controlled Filter
and I presume Roland TVA is essentially the same as what 94B calls VCA (Voltage Controlled Amplifier). I am very close to think direct conversion between SC and 94B is possible. There are too many identical structures/parameters, at least from my point of view.
Is there an easy way to get hold of VSC55.dat? Also what's the difference between the 1,807,804 bytes and 1,592,400 bytes version?