VOGONS


About Roland Virtual Sound Canvas 3

Topic actions

Reply 240 of 377, by mattw

User metadata
Rank Oldbie
Rank
Oldbie
kitrinx wrote on 2020-12-15, 14:21:

...it should serve as valuable documentation.

many thanks! I will immediately utilize that information on my so far small attempt to understand 94B format.

kitrinx wrote on 2020-12-15, 16:20:

TVP and TVF as I do with TVA

as far as I understand those are envelopes, that I guess answers why 94B has "EG1", "EG2" and "EG3", i.e. parameters for 3 "envelope generators". That kind of reinforces my feeling 94B is better match than SF2. So, I will continue to look at 94B and your code for SC Waverom to SF2. Nevertheless, obviously SF2 would be more important to more people due to its popularity and it's a huge achievement.

Reply 241 of 377, by Alex-aut

User metadata
Rank Newbie
Rank
Newbie

@kitrinx, @newrisingSun and all others 😀 crazy guys are here:-) sf2 works 😀 sometimes i think, your former employee was Roland 😀 Thank you so much for all the work.
Compiler under windows compiles even with noted compiler options with a lot of warnings, but at the end, sf2 is created.
Attachment shows errors during creation under gcc windows. Never than less, very very exiting work.

Attachments

  • sf2_sc55_build.jpg
    Filename
    sf2_sc55_build.jpg
    File size
    116.79 KiB
    Views
    2208 views
    File comment
    SF2 SC55 Build
    File license
    Fair use/fair dealing exception

Reply 242 of 377, by kitrinx

User metadata
Rank Newbie
Rank
Newbie
Alex-aut wrote on 2020-12-15, 18:56:

@kitrinx, @newrisingSun and all others 😀 crazy guys are here:-) sf2 works 😀 sometimes i think, your former employee was Roland 😀 Thank you so much for all the work.
Compiler under windows compiles even with noted compiler options with a lot of warnings, but at the end, sf2 is created.
Attachment shows errors during creation under gcc windows. Never than less, very very exiting work.

Yes, lots of printf's. Not all of those warnings are significant, but it's good to be aware of them. If all went well, the SF2 should sound pretty good in fluidsynth or another full features soundfont synth. Instruments that rely heavily on the other two envelopes will understandably not sound correct.

Time Variable Pitch is an unusual envelope. Time variable filter and amplitude are pretty common. In the SC55, the envelopes more or less share the same structure 5 phases with the first phase being "attack" and the last phase being "release". All envelopes have an Attack, Release, and at least one other phase, but sometimes P3 and P4 are unused. Unlike typical synths, all five phases can be any level, where normally attack would simply be maximum value. Each of the three envelopes has an LFO associated with it, Pitch is Vibrato, Amplitude is Tremolo, and roland calls the TVF LFO "Growl". TVA specifically can have two shapes in it's transitions, either linear or logarithmic depending on the first bit of the duration value.

These complex envelopes can actually be seen as a form of compression, so they could shape the sound more with less data, rather than having to pre-render the complex changes. This can be somewhat adapted to SF2 format by pre-rendering any pitch, filter, and amplitude effects that the SF2 synth can't represent. I believe the TVF and TVP are very similar (possibly even recycled tech) from the MT32, which is why MUNT is probably a good reference for applying these.

There's still much to discover. What I have been doing is modifying the control rom to have 128 copies the same instrument (organ1 is good) and then modifying one of the values for each copy of the instrument, then burning that modified ROM to an eeprom and popping it into my sc55.

Reply 244 of 377, by mattw

User metadata
Rank Oldbie
Rank
Oldbie
kitrinx wrote on 2020-12-15, 19:11:

There's still much to discover.

I want to ask you about:

// FIXME: Unfortunately after filtering twice the volume is extremely low, and the range
// much too high

and other such comments in the source code - do you have the same issues with the VSC sounds? have you tried?

I know VSC sounds are only 8-bits compared to 18-bits of the ROMs, but VSC sounds are byte-by-byte identically to what is inside Microsoft GM8.DLS:

Re: About Roland Virtual Sound Canvas 3

and GM8.DLS is used by "Microsoft SW Synth", which source code leaked as part of that huge source code leak few months ago.

So, if VSC sounds experience the same problems for you, then the sound processing could be "borrowed" from the MS leaked code, as that code processes what's inside GM8.DLS properly and those are the exact same VSC sounds.

Reply 245 of 377, by kitrinx

User metadata
Rank Newbie
Rank
Newbie

the VSC sounds are not only extremely low bit depth, but they also remove significant complexity from them like using multiple simultaneous partials and type 1 (forward then back) looping. I didn't explore enough to notice if they were heavily pre-emphasized like the ROM samples. It's entirely possible someone better than me at applying a RIAA IIR filter twice could have a better result. I found a reasonably good combination of range compression and amplification along with high precision long doubles to get something going, but it's worth more exploration. It's entirely possible the range compression is something the original hardware does after mixing all the voices.

You will notice there is a boolean for the parsing of the control rom called "sc55". That is vestigial from when I was using the same code to also parse the VSC samples. You can run them through there by feeding it the right address offsets and etc. It's almost completely compatible other than the offsets and the byte order, and of course it doesn't use the same scrambling/compression.

Reply 248 of 377, by kitrinx

User metadata
Rank Newbie
Rank
Newbie
mattw wrote on 2020-12-15, 21:43:

@kitrinx

thanks for the clue about "sc55" boolean. also, I am going to check if the MS code is applying any RIAA IIR filter or not. that I guess could answer if VSC sounds are pre-emphasized.

Please let me know. Unfortunately these forums don't let me private message (yet) but maybe we could find a way for me to get you up to speed a little more quickly.

Edit:
actually I found an old folder full of extracted VSC samples. Comparing raw rom to raw vsc, the vsc do not appeared to be pre-emphasized, at least not in the same way.

Last edited by kitrinx on 2020-12-15, 22:15. Edited 1 time in total.

Reply 249 of 377, by yawetaG

User metadata
Rank Oldbie
Rank
Oldbie
kitrinx wrote on 2020-12-15, 19:11:

Time Variable Pitch is an unusual envelope. Time variable filter and amplitude are pretty common.

Not really. They're called "time variant" because besides level you can also set the duration of some of the phases. That is not possible on all synths.

Unlike typical synths, all five phases can be any level, where normally attack would simply be maximum value.

I would say it's very typical. There are a lot of (digital) synths where the various phases can be set to any level. Some even have a variable number of phases, with no clear attack, sustain, decay, release phases so you can shape the envelope quite freely...

Each of the three envelopes has an LFO associated with it, Pitch is Vibrato, Amplitude is Tremolo, and roland calls the TVF LFO "Growl".

AFAIK, pitch has a simple "LFO" for vibrato, but the other two LFO's are more complex and can be assigned to various controllers and destinations through a modulation matrix controllable via sysex (which you can see in the sections about MIDI control and sysex in the back of the Roland manuals).
Unfortunately, Roland manuals are not exactly known for being accurate, and especially the less technical sections sometimes contain outright inaccurate information and errors. Roland may well describe the effect you can get with those LFO's as "tremolo" and "growl" in the general section of the manuals, but that does not mean that's the only thing you can do with them...

These complex envelopes can actually be seen as a form of compression, so they could shape the sound more with less data, rather than having to pre-render the complex changes. This can be somewhat adapted to SF2 format by pre-rendering any pitch, filter, and amplitude effects that the SF2 synth can't represent. I believe the TVF and TVP are very similar (possibly even recycled tech) from the MT32, which is why MUNT is probably a good reference for applying these.

The TVA/TVF structure finds its origin in the Roland D70 (U50) - basically an U220 + filter from the S770 sampler (see here https://www.gearslutz.com/board/showpost.php? … 92&postcount=13). LA synths (MT32, D50, etc.) came before that, but do not really have anything to do with Roland's later romplers (D70 is not LA). However, the filter in the D70 is not comparable to the one used in Sound Canvas (D70 is really strong, can probably do some hearing damage, while Sound Canvas kinda sucks).

Reply 250 of 377, by mattw

User metadata
Rank Oldbie
Rank
Oldbie
kitrinx wrote on 2020-12-15, 21:57:

Please let me know.

MS source code file is intriguing with that is says:

Mix engines for Microsoft GS Synthesizer

unfortunately, huge part of it is in Inline ASM. there is even comment in it:

I don't know why
// they wrote such convoluted code as they did above. Maybe it was fast.

so, it's hard to tell what's really going on. However, probably it contains useful clues.

kitrinx wrote on 2020-12-15, 21:57:

Unfortunately these forums don't let me private message (yet) but maybe we could find a way for me to get you up to speed a little more quickly.

I will try to contact you via Github...

Reply 251 of 377, by kitrinx

User metadata
Rank Newbie
Rank
Newbie
yawetaG wrote on 2020-12-15, 22:09:

AFAIK, pitch has a simple "LFO" for vibrato, but the other two LFO's are more complex and can be assigned to various controllers and destinations through a modulation matrix controllable via sysex (which you can see in the sections about MIDI control and sysex in the back of the Roland manuals).
Unfortunately, Roland manuals are not exactly known for being accurate, and especially the less technical sections sometimes contain outright inaccurate information and errors. Roland may well describe the effect you can get with those LFO's as "tremolo" and "growl" in the general section of the manuals, but that does not mean that's the only thing you can do with them...

Maybe so, but there's nothing to indicate this in the structure of the preset data yet. There is however very definite bytes that impact the TVF, TVP, and TVA LFO depth independently and/or simultaneously. I have been having a surprisingly difficult time finding the LFO rates though, so maybe there's more to it. If I set bytes 10, 38, and 68 to 0x7F, then pop the rom back in, the SC55 will do all three at once (loudly) when I play that preset.

yawetaG wrote on 2020-12-15, 22:09:

The TVA/TVF structure finds its origin in the Roland D70 (U50) - basically an U220 + filter from the S770 sampler (see here https://www.gearslutz.com/board/showpost.php? … 92&postcount=13). LA synths (MT32, D50, etc.) came before that, but do not really have anything to do with Roland's later romplers (D70 is not LA). However, the filter in the D70 is not comparable to the one used in Sound Canvas (D70 is really strong, can probably do some hearing damage, while Sound Canvas kinda sucks).

Could be, my experience is more in retro gaming than old music things. All I know is that back then silicon was re-used pretty regularly. While it's very likely they made a few improvements, I think it's very possible they might end up being more alike than they are different.

Reply 252 of 377, by yawetaG

User metadata
Rank Oldbie
Rank
Oldbie
kitrinx wrote on 2020-12-15, 22:24:
yawetaG wrote on 2020-12-15, 22:09:

AFAIK, pitch has a simple "LFO" for vibrato, but the other two LFO's are more complex and can be assigned to various controllers and destinations through a modulation matrix controllable via sysex (which you can see in the sections about MIDI control and sysex in the back of the Roland manuals).
Unfortunately, Roland manuals are not exactly known for being accurate, and especially the less technical sections sometimes contain outright inaccurate information and errors. Roland may well describe the effect you can get with those LFO's as "tremolo" and "growl" in the general section of the manuals, but that does not mean that's the only thing you can do with them...

Maybe so, but there's nothing to indicate this in the structure of the preset data yet. There is however very definite bytes that impact the TVF, TVP, and TVA LFO depth independently and/or simultaneously. I have been having a surprisingly difficult time finding the LFO rates though, so maybe there's more to it. If I set bytes 10, 38, and 68 to 0x7F, then pop the rom back in, the SC55 will do all three at once (loudly) when I play that preset.

Get yourself the SC55 manual and look in the back in the section about sysex control. There should be a section listing the patch part parameters (most settings are set per part, not per individual instrument). Wait, I looked it up, page 80 and onwards, the bit that starts with "MOD PITCH CONTROL" and onwards: https://www.manualslib.com/manual/695759/Rola … ?page=80#manual
If a rompler synth manual has a section about sysex, I tend to look into it first because usually it's the fastest way to see what a rompler can do...

LFO rates are -10Hz to +10 Hz. Not sure how that is controlled, IIRC there's a clock crystal on the circuit board so it could actually use that. On the SC88 there even is a 20Hz one (would match -10 to +10 Hz)...

Reply 253 of 377, by kitrinx

User metadata
Rank Newbie
Rank
Newbie
yawetaG wrote on 2020-12-15, 22:52:

Get yourself the SC55 manual and look in the back in the section about sysex control. There should be a section listing the patch part parameters (most settings are set per part, not per individual instrument). Wait, I looked it up, page 80 and onwards, the bit that starts with "MOD PITCH CONTROL" and onwards: https://www.manualslib.com/manual/695759/Rola … ?page=80#manual
If a rompler synth manual has a section about sysex, I tend to look into it first because usually it's the fastest way to see what a rompler can do...

LFO rates are -10Hz to +10 Hz. Not sure how that is controlled, IIRC there's a clock crystal on the circuit board so it could actually use that. On the SC88 there even is a 20Hz one (would match -10 to +10 Hz)...

Yes, I've scrutinized this, but the sysex don't really line up with the data present in the control rom. One of the bytes somewhere in the partial data is likely responsible for controlling the default LFO frequency for the instruments. It's possible it's only a nibble of data or somehow else obscured. There is somewhat similar data one byte after each LFO depth byte, but I don't know its meanings yet.

Reply 254 of 377, by nukeykt

User metadata
Rank Member
Rank
Member

A bit offtopic question. But does MKII wave rom differ from MK1? I once tried to desolder rom chips but ended up breaking chip legs, so I don't want to touch it again.

Reply 255 of 377, by kitrinx

User metadata
Rank Newbie
Rank
Newbie
nukeykt wrote on 2020-12-15, 23:38:

A bit offtopic question. But does MKII wave rom differ from MK1? I once tried to desolder rom chips but ended up breaking chip legs, so I don't want to touch it again.

It is different, although the same size.

Edit: Added roms

Attachments

  • Filename
    SCB_MKII.zip
    File size
    2.92 MiB
    Downloads
    236 downloads
    File license
    Fair use/fair dealing exception
Last edited by kitrinx on 2020-12-16, 00:03. Edited 1 time in total.

Reply 257 of 377, by mattw

User metadata
Rank Oldbie
Rank
Oldbie
kitrinx wrote on 2020-12-15, 23:49:
nukeykt wrote on 2020-12-15, 23:38:

A bit offtopic question. But does MKII wave rom differ from MK1? I once tried to desolder rom chips but ended up breaking chip legs, so I don't want to touch it again.

It is different, although the same size.

also, correct me if i'm wrong, but there are no dumps from a real MKII available - what we have is MK1 dumps (floating around Internet for over two decades now, those dumps were released late 90ties) and SCB-55 dumps, which is kind of MKII, not sure how identical though.

nukeykt wrote on 2020-12-15, 23:55:

Thanks for confirming, guess I should try once again or find dump elsewhere

afaik, MKII dumps are not available.