VOGONS


About Roland Virtual Sound Canvas 3

Topic actions

Reply 200 of 321, by Alex-aut

User metadata
Rank Newbie
Rank
Newbie

OK, found the schematic and service notes of SCC-1

Attachments

  • Filename
    ROLAND_SCC-1_SERVICE_NOTES.pdf
    File size
    1.51 MiB
    Downloads
    24 downloads
    File comment
    SCC-1 Service notes & schematic
    File license
    Fair use/fair dealing exception

Reply 201 of 321, by Alex-aut

User metadata
Rank Newbie
Rank
Newbie

@mattw, hi mattw, i took a look into your meansured VSC.dll and i see a lot of functions, handling hardwired coefficens. Perhaps these are the functions for filter and LFO's.

Attachments

  • VSC_dll_function.jpg
    Filename
    VSC_dll_function.jpg
    File size
    198.11 KiB
    Views
    436 views
    File comment
    Look inside VSC.dll
    File license
    Fair use/fair dealing exception

Reply 202 of 321, by mattw

User metadata
Rank Member
Rank
Member
Alex-aut wrote on 2020-12-02, 16:00:

...VSC.dll and i see a lot of functions...

actually, VSC.dll is used in conjunction with the VXD driver (in Win9x) and if you read some of my previous posts, for example:

Re: About Roland Virtual Sound Canvas 3

that is much harder to understand and follow. So, using "vscapi.dll" and "vsc.sys" (which are the files used in WinXP) is much better:

About Roland Virtual Sound Canvas 3

it's very simple to follow and everyone interested can learn a lot about the synth engine, for example if you go much earlier in the discussion here - we argue even what is called "tones" by Roland:

Re: About Roland Virtual Sound Canvas 3

but looking at "vscapi.dll" and "vsc.sys" it's very easy to answer that definitively:

Re: About Roland Virtual Sound Canvas 3

So, yeah, looking at "vscapi.dll" and "vsc.sys" is very useful - after all that's how I made "vscdec.c" as well and reversed the VSC scrambling.

Reply 203 of 321, by Alex-aut

User metadata
Rank Newbie
Rank
Newbie
mattw wrote on 2020-09-21, 01:10:

I didn't expect this - it took me no time to find Demo/Trial version of VSC-88 v2.1a using Google, the file is called: "TVSC8821.EXE" and even more surprising Roland released version of it for Macintosh as well: "vsc88-21-trial.sit". However, it seems "TVSC8821.EXE" is Win9X only, i.e. v2.x contrary to v3.x has no WinNT/XP support, but it has Mac support that no other version has.

I also found Demo/Trials of VSC-55: "VSC55T.EXE" and VSC 3.x "vsc32t.exe".

So, I guess now everyone can try them - don't know what are the limitations in the Free Demo/Trial though.

You are right, trial-version is implemented in the method "CSynth::LoadWaveTable(void)" in "vscapi.dll".

JNZ = opcode = 0x75, JZ would be opcode 0x74 @ fileoffset 0x1306h in vscapi.dll.

Attachments

  • VSCAPI_JNZ_OFFSET.jpg
    Filename
    VSCAPI_JNZ_OFFSET.jpg
    File size
    272.07 KiB
    Views
    397 views
    File comment
    JNZ trial
    File license
    Fair use/fair dealing exception
  • VSC3_2API_TRIAL.jpg
    Filename
    VSC3_2API_TRIAL.jpg
    File size
    263.47 KiB
    Views
    400 views
    File comment
    Implementation of trial
    File license
    Fair use/fair dealing exception

Reply 204 of 321, by mattw

User metadata
Rank Member
Rank
Member
Alex-aut wrote on 2020-12-03, 19:34:

JNZ = opcode = 0x75, JZ would be opcode 0x74 @ fileoffset 0x1306h in vscapi.dll.

you can also check section "F. Manually Update Trial version...", here:

Re: About Roland Virtual Sound Canvas 3

Reply 205 of 321, by Alex-aut

User metadata
Rank Newbie
Rank
Newbie
mattw wrote on 2020-12-04, 17:00:
Alex-aut wrote on 2020-12-03, 19:34:

JNZ = opcode = 0x75, JZ would be opcode 0x74 @ fileoffset 0x1306h in vscapi.dll.

you can also check section "F. Manually Update Trial version...", here:

Re: About Roland Virtual Sound Canvas 3

ok 😀 got it 😀 i didn't read this F. topic .. you said, i should do a look into this vscapi.dll ... 😀 On weekend i will prepeare PCB to read out SCC-1 ROMS. Praying to God, that I can them resolder after desoldering.

Reply 207 of 321, by Alex-aut

User metadata
Rank Newbie
Rank
Newbie
nukeykt wrote on 2020-12-04, 20:25:

Did anyone manage to dump internal SC-55 cpu ROM?

SC-55 cpu ROM Firmware is IC23. We are struggeling with the structure respective wtih coeff. bytes . @mattw has already done great work on it, but hole structure is still unknown.

Attachments

  • Filename
    Roland_SCC55_IC23.zip
    File size
    77.82 KiB
    Downloads
    17 downloads
    File comment
    SC55
    File license
    Fair use/fair dealing exception

Reply 209 of 321, by Alex-aut

User metadata
Rank Newbie
Rank
Newbie
nukeykt wrote on 2020-12-04, 20:54:

H8/532 CPU that SC-55 use has internal 32K mask ROM

that is true, but in this 32K the MIDI interface is implemented. On service notes of sc55 the H8 is not involved in sound-generation.

Attachments

  • Filename
    ROLAND_SC-55_SERVICE_NOTES.pdf
    File size
    4.76 MiB
    Downloads
    11 downloads
    File comment
    SCC55 Service notes
    File license
    Fair use/fair dealing exception

Reply 211 of 321, by yawetaG

User metadata
Rank Oldbie
Rank
Oldbie
Alex-aut wrote on 2020-12-04, 21:06:
nukeykt wrote on 2020-12-04, 20:54:

H8/532 CPU that SC-55 use has internal 32K mask ROM

that is true, but in this 32K the MIDI interface is implemented. On service notes of sc55 the H8 is not involved in sound-generation.

Er...something has to tie together all of the ROM and other chips, and that would be the CPU. Of course it is involved in sound generation. It's used to run the firmware (OS) of the synthesizer. Remove the CPU and you just have a collection of electronic parts, some of which contain data, that can't do much.
(I mean, no one would ever suggest a personal computer can run without its CPU...)

The only kind of synthesizer where you would not need some sort of CPU is a fully analog synthesizer.

Edit: Just to be clear, of course the CPU is not involved in the path from custom PCM chip to the sound output stage, but something has to tell that chip when to output sound, and without a functional CPU and thus data bus that won't happen.

Reply 212 of 321, by Alex-aut

User metadata
Rank Newbie
Rank
Newbie

@yawetaG: I guess, that most of us are interessted to reproduce accurate sounds of SCC-55, SCC-88 (pro), SCC-1 and so on. Therefore we have to know (to get):
1.) Wavetable (knowing root-key, start adress, length, start of loop, end of loop, (is looped), involved tones, note-range for linear interpolation between non-root-keys)
2.) Byte meaning of Coefficiencs for filter in the IC23 (LFO, Var. amps , reverb deepness and others) for each tone
3.) Correct Bit-shuffling permutation of adress, as well on the data-line

All these data are stored in IC23 as well in the WAVE-Form roms.

H8 is existing in 3 manners: 1.) OTP, mask rom, and prom (ereaseable with glass eye). SC55 uses a mask rom (indirect readable in service notes).
H8/532 Datasheet on site 297 describes the handling of ROM/(PROM), and for my opinion firmware is for the maskrom model not dump-able.

H8 implements the MPU-401 stack, the second UART chip, cooperating with the gate-array. H8 main work is to handle MIDI messages (Note on/off, prog change and others) , reads coefficients stored in IC23, sends information to the custom PCM-CHIP for samples that are going into the mix. H8 is also responsible, to get the overview of number of tones in the current mix, the ADSR parameter reading/sending, drops tones in a FIFO-manner, and other functions. But again, the H8 is not responsible for the sound generation itself. Most of people here are able, to program and immitate H8's program on an UC3A UC. Don't forget, H8 is not a sprinter, H8 never would be able to even calculate linear interpolation for up to 24 tones in the mix with 10 MHz, even not with fixed point aritmetic.
Of course it would make our work here complete, if firmware of IC30 would be available. I guess it is a 84 pin qlf, perhaps someone will slaughter a SC55 to desolder the H8 and give a try to read them out.

Attachments

  • Filename
    H8_532-Programmierung.pdf
    File size
    158.79 KiB
    Downloads
    16 downloads
    File comment
    H8/532 ROM Datasheet
    File license
    Fair use/fair dealing exception

Reply 213 of 321, by yawetaG

User metadata
Rank Oldbie
Rank
Oldbie

Thank you for the detailed explanation.

Does the H8's limited calculation abilities also explain why the encryption Roland used is fairly weak?

Point 2) makes me wonder about something. The SC55 and similar have a second LFO that is accessible only via sysex. From your explanation, the H8 would only contribute to its use for receiving sending the parameters that are used to control it. If the two LFOs are to be able to work independently, would that imply some data is duplicated in IC23? I assume the second LFO is also present in Virtual Sound Canvas...

Reply 214 of 321, by Alex-aut

User metadata
Rank Newbie
Rank
Newbie
yawetaG wrote on 2020-12-06, 09:19:

Thank you for the detailed explanation.

Does the H8's limited calculation abilities also explain why the encryption Roland used is fairly weak?

Point 2) makes me wonder about something. The SC55 and similar have a second LFO that is accessible only via sysex. From your explanation, the H8 would only contribute to its use for receiving sending the parameters that are used to control it. If the two LFOs are to be able to work independently, would that imply some data is duplicated in IC23? I assume the second LFO is also present in Virtual Sound Canvas...

The encryption in SC55, SC88 is done by adress-line mixing as well as data line bit-mixing. Hmmm... we can discuss, if this encryption is fairly weak, we are talking of faculty of 20-4 ((20-4)!) in case of adress-line, and faculty of 8! in case of data-bit shuffling. Perhaps In case of SC88 16 bit data-bit shuffling, because SC88 ROMS are configured in 16 bit mode. @MattW, @kitrinix, @newRisingSun and many others had made very very great work on it. You cannot compare this kind of encryption to a cesar encryption with a bijetive f(x) relation between 26 elements. Adress-line-decryption as well as bit-decryption is in my opinion done by IC24 (custom PCM). In an FPGA adress-swapping and data-swapping is done (even if its internal buffered) in a few clockcycles.
----
Hmmm... LFO's could be realized by a quater Sinewave Look-Up Table with fixed point aritmetic for sample-multiplier coefficents. So the only thing that sound-generation has to know, if, and at witch speed the coefficent-lookup table should be used. For example, a look-up table has to be used in the mix as well. If you sum in the mix in worst case 24 samples, you would run into clipping. You can argue, why not shifting one to the right per added sample, but this would lead volume-control of every tone to ad absurdum. So i guess, there is a sigmoid function f(x) implemented as a look-up table, to smooth the sum of samples. So even there not much calculation needed.

Reply 215 of 321, by mattw

User metadata
Rank Member
Rank
Member
nukeykt wrote on 2020-12-04, 20:54:

H8/532 CPU that SC-55 use has internal 32K mask ROM

that is IC30, I have no idea if it'is involved in any sound-generation, but the other Control ROM , IC23:

Re: About Roland Virtual Sound Canvas 3

the actual executable code inside it is less than 32K, everything after those first roughly 0x8000 bytes are 2 demo MIDI songs and the structures with 0xd3 size that define the tones, also where each PCM sound is located, i.e. PCM-address-maps to call it in short (all those are discussed in previous posts here).

Alex-aut wrote on 2020-12-04, 20:21:

Praying to God, that I can them resolder after desoldering.

haha, that reminds me many years ago when I had no experience with soldering, such job really looked totally impossible.

BTW, I am still looking (when my free time allows) at your SC-88 Waverom dumps - I am a little bit confused by them, because I made 8 address lines brute-force, assuming I manually guessed first 11 or 12 address line shuffling that I posted here. So, such brute-force takes almost 30 minutes on my Intel i7 (because only 1 core is utilized, I was too lazy to make it multi-threaded). In any way, I was not able to get address line bit shuffling that gives what is inside "SCCore.dll". So, I start to think there is something more to it - maybe due to that Word-mode you mentioned either the ROM dumps are not good or the shuffling needs to be done a little different. It's still interesting open question what is really going on.

Reply 216 of 321, by mattw

User metadata
Rank Member
Rank
Member

Wow, it took me some time, but I believe I finally fully descrambled @Alex-aut dumps of his SC-88:

Re: About Roland Virtual Sound Canvas 3

I am attaching the source code of my "sc88decv2" - the code does the descrambling for IC25 (or is it called IC325?). So, you need to do exactly the same for the rest 3x 2MB ROMs. I hope now more people to look into it and confirm that the descrambling is correct - it seems correct to me.

[UPDATE] It seems I confirmed by myself the descrambling done by "sc88decv2" is good with converting the descrambled Waverom to playable WAV. So, the algorithm for converting descrambled SC-88 Waverom to PCM data is the same as SC-55 and what @NewRisingSun posted here:

Re: About Roland Virtual Sound Canvas 3

So, yeah, it seems SC-88 Waverom scrambling is now found and it's as per address line scrambling defined in "sc88decv2.c".

Attachments

Reply 217 of 321, by mattw

User metadata
Rank Member
Rank
Member

per @Trevor0402 request (because he has some problem converting descrambled SC-88 Waverom to PCM data), I am attaching to this post fast (and ugly) modification of @NewRisingSun posted here:

Re: About Roland Virtual Sound Canvas 3

that works with SC-88 Waverom. You need to add WAV header to the generated output WAVEDAT88.BIN file if you want to make it playable as WAV file. BTW, the other output file "sc88dec.BIN" should be identical to the output of "sc88decv2.c" from my previous post.

Attachments

Reply 218 of 321, by Alex-aut

User metadata
Rank Newbie
Rank
Newbie

@mattw: I thank you so so much for your work!!! I cant belive, that my dream comes true, build a synt with the original SC 88 waves. I am very grateful for your work, and of course of other work too.
Thank you so much!