diff options
Diffstat (limited to 'blog/post/2020-11-20.html')
-rw-r--r-- | blog/post/2020-11-20.html | 2522 |
1 files changed, 2522 insertions, 0 deletions
diff --git a/blog/post/2020-11-20.html b/blog/post/2020-11-20.html new file mode 100644 index 0000000..938ebf5 --- /dev/null +++ b/blog/post/2020-11-20.html @@ -0,0 +1,2522 @@ +<!DOCTYPE html><html><head> +<meta charset="utf-8"> +<meta name="viewport" content="width=device-width,initial-scale=1"> +<meta name="theme-color" content="#000000"> +<title>Chrisoft::Blog(r#"EDIROL SD-80: The Adventure Continues")</title> +<meta name="description" content="«EDIROL SD-80: The Adventure Continues» de spelunca ursae"> +<meta name="author" content="Chris Xiong"> +<script type="text/javascript" src="/panel.js"></script> +<script type="text/javascript" src="/themer.js"></script> +<script type="text/javascript" src="/blog/footnoter.js"></script> +<script type="text/javascript" src="/blog/aes-js.js"></script> +<script type="text/javascript" src="/blog/scrypt.js"></script> +<script type="text/javascript" src="/blog/sha256.js"></script> +<script type="text/javascript" src="/blog/decryptor.js"></script> +<link rel="stylesheet" type="text/css" href="/common.css"> +<link rel="stylesheet" type="text/css" href="/panel.css"> +<link rel="stylesheet" type="text/css" href="/theme0a.css" id="theme0a"> +<link rel="stylesheet" type="text/css" href="/theme0b.css" id="theme0b"> +<link rel="stylesheet" type="text/css" href="/theme1a.css" id="theme1a"> +<link rel="stylesheet" type="text/css" href="/theme1b.css" id="theme1b"> +<link rel="stylesheet" type="text/css" href="/theme2a.css" id="theme2a"> +<link rel="stylesheet" type="text/css" href="/theme2b.css" id="theme2b"> +<link rel="stylesheet" type="text/css" href="/theme3a.css" id="theme3a"> +<link rel="stylesheet" type="text/css" href="/theme3b.css" id="theme3b"> +<link rel="stylesheet" type="text/css" href="/blog/blogext.css"> +<script> +function ol() +{ + window.onresize=function() + { + if(window.innerWidth<768) + setupevents(); + else unsetevents(); + } + window.onresize(); + loadTheme(); + _decryptonload(); +} +</script> +</head> +<body onload="ol()" style="overflow-x:hidden;"> + <div id="panel" class="TText"> + <ul id="panellist"> + <li><a href="/"><h1>Chrisoft</h1></a></li> + <li><a href="/blog"><h2>Blog</h2></a></li> + <li><a href="#"><h3 id="title">EDIROL SD-80: The Adventure Continues</h3></a></li> + <li><span>Tags</span> + <ul id="tagslist"> + <li><a href="/blog/list/device-review/">device-review</a></li><li><a href="/blog/list/midi/">midi</a></li><li><a href="/blog/list/music/">music</a></li></ul> + </li> + <li id="tocouter"> + <span>Table of Contents</span> + <ul id="tocroot"> + <li><a class="toctarg" href="#tocanch0">“Official” Service Manual</a></li><li><a class="toctarg" href="#tocanch1">USB-PD Mod</a></li><li><ul class="tocnode"><li><a class="toctarg" href="#tocanch2">(Accidentally) Circuit bent +SD-80</a></li></ul></li><li><a class="toctarg" href="#tocanch3">Recording Setup Update Part +1</a></li><li><a class="toctarg" href="#tocanch4">Recording Setup Update Part +2</a></li><li><a class="toctarg" href="#tocanch5">Recording Setup Update Part +3, 4, 5…</a></li><li><a class="toctarg" href="#tocanch6">Rompler Preservation</a></li><li><ul class="tocnode"><li><a class="toctarg" href="#tocanch7">Emulation</a></li><li><a class="toctarg" href="#tocanch8">Sampling the Rompler</a></li><li><a class="toctarg" href="#tocanch9">Dumping and Deciphering</a></li><li><ul class="tocnode"><li><a class="toctarg" href="#tocanch10">Extra rambling about the ROM +chip</a></li></ul></li><li><a class="toctarg" href="#tocanch11">SD-20 MIDI File Converter</a></li><li><ul class="tocnode"><li><a class="toctarg" href="#tocanch12">FrankenTTS-1</a></li><li><a class="toctarg" href="#tocanch13">Other observations</a></li><li><a class="toctarg" href="#tocanch14">So… is this it?</a></li></ul></li><li><a class="toctarg" href="#tocanch15">Roland Cloud</a></li></ul></li><li><a class="toctarg" href="#tocanch16">A +History lesson from someone who barely knows anything about it</a></li><li><ul class="tocnode"><li><a class="toctarg" href="#tocanch17">LA</a></li><li><a class="toctarg" href="#tocanch18">(Unnamed synth engine in +U-110)</a></li><li><a class="toctarg" href="#tocanch19">EP</a></li><li><a class="toctarg" href="#tocanch20">GP</a></li><li><a class="toctarg" href="#tocanch21">XP</a></li><li><ul class="tocnode"><li><a class="toctarg" href="#tocanch22">Original XP</a></li><li><a class="toctarg" href="#tocanch23">XP2</a></li><li><a class="toctarg" href="#tocanch24">XP3</a></li><li><a class="toctarg" href="#tocanch25">XP6</a></li><li><a class="toctarg" href="#tocanch26">XP7</a></li></ul></li><li><a class="toctarg" href="#tocanch27">XV</a></li><li><a class="toctarg" href="#tocanch28">WX</a></li><li><a class="toctarg" href="#tocanch29">Beyond WX</a></li></ul></li><li><a class="toctarg" href="#tocanch30">Role played by the +CPU in sound generation</a></li><li><a class="toctarg" href="#tocanch31">Other Curious Stuff</a></li><li><ul class="tocnode"><li><a class="toctarg" href="#tocanch32">SD-80 is an XV-5080 …</a></li><li><ul class="tocnode"><li><a class="toctarg" href="#tocanch33">SD-80’s sound content</a></li></ul></li><li><a class="toctarg" href="#tocanch34">More on SD-80 vs SD-90 vs +SD-20</a></li><li><ul class="tocnode"><li><a class="toctarg" href="#tocanch35">What does a SD-90 have +that SD-80 doesn’t?</a></li><li><a class="toctarg" href="#tocanch36">What does a SD-80 have +that SD-90 doesn’t?</a></li><li><a class="toctarg" href="#tocanch37">What’s the SD-20 anyway?</a></li><li><a class="toctarg" href="#tocanch38">What role does MFX play?</a></li></ul></li><li><a class="toctarg" href="#tocanch39">Light Load vs +High Load</a></li><li><a class="toctarg" href="#tocanch40">Block Diagram</a></li><li><a class="toctarg" href="#tocanch41">Other weird and interesting +stuff</a></li></ul></li><li><a class="toctarg" href="#tocanch42">Errata of the original post</a></li><li><a class="toctarg" href="#tocanch43">References</a></li></ul> + </li> + <li style="margin-left:-0.5em"><a id="prevp" href="2019-09-04.html">Prev post</a></li> + <li style="margin-left:-0.5em"><a id="nextp" href="2021-06-03.html">Next post</a></li> + </ul> + </div> + <div id="content"> + <h2 id="titleh" class="TText" style="font-wight:normal;">EDIROL SD-80: The Adventure Continues</h2> + <div id="datetags" class="TText" style="margin-bottom:1em;">2020-11-20<br>#device-review #midi #music</div> + <hr><div id="article" class="TText"><script> +window.addEventListener("DOMContentLoaded",function(){ +const cl=document.querySelectorAll('div.collapse'); +let n=0; +for(let x of cl) +{ + const d=document.createElement('blockquote'); + const dd=x.cloneNode(true); + x.parentNode.insertBefore(d,x); + x.parentNode.removeChild(x); + dd.id=`cc${n++}`; + dd.style.display='none'; + const s=document.createElement('span'); + const b=document.createElement('b'); + const a=document.createElement('a'); + a.classList.add('ca'); + a.setAttribute('x',n-1); + a.innerHTML='show'; + a.href='javascript:void(0)'; + if (dd.hasAttribute('caption')) + b.innerHTML=dd.getAttribute('caption'); + else + b.innerHTML=dd.getAttribute('data-caption'); + s.appendChild(b); + s.appendChild(document.createTextNode(' [')); + s.appendChild(a); + s.appendChild(document.createTextNode(']')); + d.appendChild(s); + d.appendChild(dd); + a.onclick=function() + { + let x='none'; + if(a.innerHTML=='show') + { + a.innerHTML='hide'; + x='block'; + } + else + { + a.innerHTML='show' + } + document.getElementById(`cc${a.getAttribute('x')}`).style.display=x; + } +} +const al=document.querySelectorAll('audio'); +n=0; +for(let x of al) +{ + x.id=`a${n++}`; + x.onplay=function() + { + for(let x of al) + { + if(x.id!=this.id)x.pause(); + } + } +} +}); +</script> +<article> +<p>This the follow up article of my first post on the SD-80. View it <a href="https://chrisoft.org/blog/post/2019-04-25.html">here</a>.</p> +<p>It’s been <del>one year and a half</del> +<del style="text-decoration-style: double">two years</del> three years +since I got my SD-80. A lot of stuff happened (including the great +pandemic of COVID-19 and my escape from Wuhan). I’ve also discovered a +lot more about the SD-80. Instead of updating the original post (which +is already excessively long), I decided to start a new post instead.</p> +<p>The actual publish date of this post is 2022-06-30 <del>because I +have crippling procrastination</del>.</p> +<p>My special thanks go to:</p> +<ul> +<li>Kalas, who contacted me for my original SD-80 post, without whom +half of this article wouldn’t even exist.</li> +<li>Discord user KR.Palto#7592, who also has a <a href="https://www.youtube.com/c/KRPalto47_th_MIDI">YouTube channel</a>, +for providing plenty of useful information and PCB shots of various +Roland synth modules.</li> +</ul> +<p>I’ve been procrastinating the release of this post for too long +(almost 2 years by now). For this reason, the information I had on these +modules may have updated half-way through the writing of this post. +Therefore this post may contain self-contradicting statements. I’ll try +to clear up any confusing parts. Feel free to reach to me if you find +any, or just for any thoughts you have on this post. I would encourage +anyone reading this post to get in touch with me if you have anything to +discuss or find a mistake in this post. Every message will be greatly +apprecitated. You can find ways to contact me in the “about” section of +the home page.</p> +<h2 id="tocanch0" class="tvis">“Official” Service Manual</h2> +<p>The site where I got my other service manuals for Roland synths (none +of which I really own) has been updated with a service manual for SD-80. +I got one copy immediately once I knew about this (Special thanks go to +Kalas for letting me know).</p> +<p>Most of the service manual goes as expected: the general format, most +chips (I correctly identified all chips that has Roland marking on them +somehow), the block diagram and testing mode. There’s really not that +much information in this manual that is new to me. The schematics are +extremely useful for modding and repairing though.</p> +<div class="collapse" data-caption="Updated list of integrated circuit chips on SD-80 main board"> +<table> +<colgroup> +<col style="width: 8%"> +<col style="width: 18%"> +<col style="width: 21%"> +<col style="width: 51%"> +</colgroup> +<thead> +<tr class="header"> +<th style="text-align: center;">Label</th> +<th style="text-align: center;">Engravement</th> +<th style="text-align: center;">Model</th> +<th style="text-align: center;">Description</th> +</tr> +</thead> +<tbody> +<tr class="odd"> +<td style="text-align: center;">IC 1</td> +<td style="text-align: center;">62292 361</td> +<td style="text-align: center;">M62292FP-D60J</td> +<td style="text-align: center;">Regulator</td> +</tr> +<tr class="even"> +<td style="text-align: center;">IC 2</td> +<td style="text-align: center;">6417706 SH3 BC13008 133 0413</td> +<td style="text-align: center;">HD6417706</td> +<td style="text-align: center;">SH3 CPU</td> +</tr> +<tr class="odd"> +<td style="text-align: center;">IC 3</td> +<td style="text-align: center;">LH28F 160BJE-BTL80 SHARP JAPAN 0428 +7xN</td> +<td style="text-align: center;">LH28F 160BJE-BTL80</td> +<td style="text-align: center;">16Mbit Flash Memory</td> +</tr> +<tr class="even"> +<td style="text-align: center;">IC 4, IC 6</td> +<td style="text-align: center;">SANYO LC381616IET-70 KZA7G0CD1 0042</td> +<td style="text-align: center;">SDRAM LC3816161ET-70-TLM</td> +<td style="text-align: center;">16Mbit SDRAM (System RAM)</td> +</tr> +<tr class="odd"> +<td style="text-align: center;">IC 5, IC 37</td> +<td style="text-align: center;">‘H5’ or ‘115’ (illegible)</td> +<td style="text-align: center;">TC7SH04FU</td> +<td style="text-align: center;">Inverter</td> +</tr> +<tr class="even"> +<td style="text-align: center;">IC 7</td> +<td style="text-align: center;">4D46 LV 00A</td> +<td style="text-align: center;">HD74LV00A</td> +<td style="text-align: center;">NAND Gate</td> +</tr> +<tr class="odd"> +<td style="text-align: center;">IC 8, IC 20, IC 22~25</td> +<td style="text-align: center;">4C1Y LV 245A</td> +<td style="text-align: center;">HD74LV245A</td> +<td style="text-align: center;">8-bit Transceiver</td> +</tr> +<tr class="even"> +<td style="text-align: center;">IC 9, IC 11</td> +<td style="text-align: center;">F P42AB VT245A</td> +<td style="text-align: center;">74VHCT245A</td> +<td style="text-align: center;">8-bit Transceiver</td> +</tr> +<tr class="odd"> +<td style="text-align: center;">IC 10, IC 12</td> +<td style="text-align: center;">0431H LVXC3245</td> +<td style="text-align: center;">TC74LVXC3245FS</td> +<td style="text-align: center;">Configurable 8-bit Transceiver</td> +</tr> +<tr class="even"> +<td style="text-align: center;">IC 13</td> +<td style="text-align: center;">VHC T139A 4 23</td> +<td style="text-align: center;">TC74VHCT139AFT</td> +<td style="text-align: center;">Dual 2/4 Decoder</td> +</tr> +<tr class="odd"> +<td style="text-align: center;">IC 14</td> +<td style="text-align: center;">‘H12’ or ‘H2’ (illegible)</td> +<td style="text-align: center;">TC7SH08FU</td> +<td style="text-align: center;">AND Gate</td> +</tr> +<tr class="even"> +<td style="text-align: center;">IC 15</td> +<td style="text-align: center;">4D36 LV 04A</td> +<td style="text-align: center;">HD74LV04A</td> +<td style="text-align: center;">Hex Inverter</td> +</tr> +<tr class="odd"> +<td style="text-align: center;">IC 16</td> +<td style="text-align: center;">4D16 LV 14A</td> +<td style="text-align: center;">HD74LV14A</td> +<td style="text-align: center;">Hex Schmitt-Trigger Inverter</td> +</tr> +<tr class="even"> +<td style="text-align: center;">IC 17</td> +<td style="text-align: center;">Roland R02902867 137 352B100</td> +<td style="text-align: center;">M37641M8-137FP</td> +<td style="text-align: center;">7641 8-bit microcontroller, MIDI/USB +interface</td> +</tr> +<tr class="odd"> +<td style="text-align: center;">IC 18</td> +<td style="text-align: center;">VH3 139 4 24</td> +<td style="text-align: center;">TC74VHC139FT</td> +<td style="text-align: center;">Dual 2/4 Decoder</td> +</tr> +<tr class="even"> +<td style="text-align: center;">IC 19, IC 27</td> +<td style="text-align: center;">Roland R01455956 RA08-503 JAPAN 0330EAI +F0032ZAC</td> +<td style="text-align: center;">TC223C660CF-503</td> +<td style="text-align: center;">Tone Generator + Effects Processor with +integrated LCD & Input Controller</td> +</tr> +<tr class="odd"> +<td style="text-align: center;">IC 21</td> +<td style="text-align: center;">7WU04 4.F</td> +<td style="text-align: center;">TC7WU04FU</td> +<td style="text-align: center;">Inverter</td> +</tr> +<tr class="even"> +<td style="text-align: center;">IC 26, IC 30</td> +<td style="text-align: center;">HYUNDAI GM71C18163CJ6 0040 AG1 +KOREA</td> +<td style="text-align: center;">GM71C18163CJ-6</td> +<td style="text-align: center;">16Mbit EDO DRAM (XV RAM / Effects delay +line)</td> +</tr> +<tr class="odd"> +<td style="text-align: center;">IC 28</td> +<td style="text-align: center;">Roland R02678601 23C128L-529J +0224E7007</td> +<td style="text-align: center;">UPD23C128040ALGY-***-MJH</td> +<td style="text-align: center;">128Mbit Mask ROM (Wave ROM)</td> +</tr> +<tr class="even"> +<td style="text-align: center;">IC 29</td> +<td style="text-align: center;">Roland R02678612 23C128L-535K +0222E7005</td> +<td style="text-align: center;">UPD23C128040ALGY-***-MKH</td> +<td style="text-align: center;">128Mbit Mask ROM (Wave ROM)</td> +</tr> +<tr class="odd"> +<td style="text-align: center;">IC 31, IC 35</td> +<td style="text-align: center;">4570 431</td> +<td style="text-align: center;">UPC4570G2</td> +<td style="text-align: center;">Operational Amplifiers</td> +</tr> +<tr class="even"> +<td style="text-align: center;">IC 32, IC 34</td> +<td style="text-align: center;">PCM1716E 27ZDHFM</td> +<td style="text-align: center;">PCM1716E</td> +<td style="text-align: center;">DAC</td> +</tr> +<tr class="odd"> +<td style="text-align: center;">IC 33</td> +<td style="text-align: center;">04 16H TC9271FS</td> +<td style="text-align: center;">TC9271FS</td> +<td style="text-align: center;">Digital Audio Modulator/Transmitter</td> +</tr> +<tr class="even"> +<td style="text-align: center;">IC 36</td> +<td style="text-align: center;">A E</td> +<td style="text-align: center;">TA78L05F</td> +<td style="text-align: center;">Regulator</td> +</tr> +</tbody> +</table> +<p>The CPU is in clock mode 1 (MD2=MD1=0, MD0=1). Input clock is 12MHz +from the 8-bit 7641 controller. Actual clock of the SH-3 CPU depends on +the value of its FRQCR register. However, the only possible values of +the internal clock speed is either 48MHz or 96MHz (refer to the +datasheet of SH7706 for details) <a id="n1" href="#note1" class="note">[1]</a>. Either way, the CPU is downclocked by quite a +large margin.</p> +<p>The tone generator RA08-503 “XV” is an ASIC manufactured by Toshiba +on a 300nm process (type TC223C).</p> +</div> +<h2 id="tocanch1" class="tvis">USB-PD Mod</h2> +<p>WARNING: I’m a computer scientist (in its loosest sense), not an +electrical engineer. Do not take any part of this section as advice. If +you fried your equipment (I did!!) following this as an instruction, +don’t blame it on me.</p> +<p>The 220V to 110V converter brick I have to carry around has been +bugging me since the very first day I got my SD-80. Because the unit +only consumes around 10 watts of power, I’ve always been dreaming of +alternative ways to power it. When I first cracked my module open, I +measured the power rails going out from the power supply unit: there is +a ±15V pair, plus a +5V rail.</p> +<p>My top candidate was a solution based around USB-PD. I’ve seen people +modding their ThinkPads to charge through USB Type-C on r/ThinkPad, so I +thought that module plus some DC-DC converter circuitry will do the job. +I also had a fallback plan, which is basically to use any switching mode +power supply that accepts universal voltage has two output rails (one +positive and one negative), and stick some additional regulator +circuitry to generate the 5V output.</p> +<p>The USB-PD trigger module is actually very easy to come by nowadays, +especially for someone in China. While others struggles to find these +weird stuff on ebay and aliexpress, we just source them straight from +taobao (which is essentially aliexpress for domestic users). There are +even ready-to-use multi-rail voltage converter modules out there (they +are either based around LM337/LM317, or TPS543x). Finally I picked the +(seemingly) most popular PD trigger module people use to mod laptops +from YZXstudio, and an adjustable voltage converter module based around +TPS5430. The pictures below are from their sellers.</p> +<table> +<tbody><tr> +<td> +<div style="text-align:center;max-width:98%;"> +<a href="//filestorage.chrisoft.org/blog/img/sdp2_pdtrigerboard.jpg"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_600x600_sdp2_pdtrigerboard.jpg"></a> <br>USB-PD +trigger board +</div> +</td> +<td> +<div style="text-align:center;max-width:98%;"> +<a href="//filestorage.chrisoft.org/blog/img/sdp2_vrm.jpg"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_600x600_sdp2_vrm.jpg"></a> <br>Adjustable VRM +Module +</div> +</td> +</tr> +</tbody></table> +<p>I also bought some basic tools for soldering (Chinese knock-off of +Quick 936A, lead-based solder and solder wick – I was too dumb to +remember purchasing any flux) to make sure I can do the modding in my +dorm.</p> +<p>I waited a few days for all packages to arrive. After that I tested +every component I need and they worked just fine. It’s time to pull the +trigger. I started with desoldering the AC input socket. That went +decently smoothly. My confidence started to build up and proceeded to +desolder the original SMPS module, which is a rectangular daughter board +that has quite a few pins soldered on both sides of the board. Things +went horribly wrong (particularly because I didn’t have any flux and the +original lead-free solder refused to flow or blend with my leaded +solder) and I started ripping tracks off the base board. Finally I +decided it was an impossible task for me to desolder it without +completely destroying both boards, so I simply drilled the pins out of +the board. While the base board wasn’t totally destroyed, it was pretty +close. I soldered wires directly to the components on the base board +(because tracks on the other end have been ripped off). At this time my +soldering job was just totally awful because I was pissed and it was +super late into the night. Anyway, when I finally piecing everything +together, it somehow worked.</p> +<p>Next it was time to put everything back into place. I had the idea of +designing a 3d-printed holder for the USB Type-C extension cable that +fills the hole for the original AC socket, however I couldn’t even +afford a proper 2d-printing setup, let alone a 3d one. So I have to +scrap that idea for now. None of the screw holes on the converter board +can fit the holes on the chassis, so I just taped the module down. It +was a complete mess inside my SD-80 now, but at least everything still +worked (until a couple minutes later). I did mention that I had the wish +to make custom acrylic chassis for my SD-80 some day in the future, +hopefully I can get this mess fixed by then.</p> +<div style="text-align:center;max-width:90%;"> +<a href="//filestorage.chrisoft.org/blog/img/sdp2_pdmodded.jpg"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1536x1536_sdp2_pdmodded.jpg"></a> <br>The USB-PD +modded SD-80 +</div> +<h3 id="tocanch2" class="tvis">(Accidentally) Circuit bent +SD-80</h3> +<p>I started messing around and decided to try to run the SD-80 without +the ±15V rail. Everything except the front panel phones output and +output 1 on the back panel worked just fine. This is not very surprising +– all chips on the main board only takes <= 5V, and it makes sense to +derivate all those voltages from the 5V rail. After a quick look at the +service notes, I found that the ±15V rail is only used by the OpAmps in +the final output stage of output 1, which is on the volume board.</p> +<p>And then something extremely stupid happened. Any proper electrical +engineer will cringe hard. At this point I was getting cocky, and +started randomly probing around with my multimeter on the volume board. +I “accidentally” shorted the first two pins of the connector going from +the main board into the volume board (pin 1 and pin 2 on CN7 of volume +board). The output from the headphone jack immediately turns into +complete garbage (severe distortions on low frequencies). The OpAmps +chip on the volume board started getting ridiculously hot… crap! I still +managed to fry something for an otherwise “perfect” modding project!</p> +<p>Of course this is undesirable. So I had to find a fix to this.</p> +<p>Fortunately, nothing on the main board seemed to be hurt. I can just +bypass the volume control and get the correct output on output 1 using +some jumper wires. So the fault is contained in the volume board. I’ve +basically sent -15V straight into the base of two transistors, but +measuring those transistors didn’t reveal anything wrong with them. So I +had to assume I have fried the amp chip (NJM4565). I got a few +replacements (NJM4580, compatible spec-wise) from taobao, and replaced +the “faulty” NJM4565 (still without using flux). But the audio output is +still messed up and the opamp chip still gets very hot after the +replacement. I decided to give up for now, and look into the thing +later. Meanwhile I just tucked some of the wires from CN6 into CN7 so +that I can still get analog output from output 1 on the back panel.</p> +<table> +<tbody><tr> +<td> +<div style="text-align:center;max-width:98%;"> +<a href="//filestorage.chrisoft.org/blog/img/sdp2_volbrd_fixattempt.jpg"><img style="width: 33%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1536x1536_sdp2_volbrd_fixattempt.jpg"></a> <br>My +terrible SMD soldering +</div> +</td> +<td> +<div style="text-align:center;max-width:98%;"> +<a href="//filestorage.chrisoft.org/blog/img/sdp2_bypass.jpg"><img style="width: 33%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1536x1536_sdp2_bypass.jpg"></a> <br>Recombined plug +for volume board bypass +</div> +</td> +</tr> +</tbody></table> +<div style="text-align:center;max-width:90%;"> +<br> +</div> +<h2 id="tocanch3" class="tvis">Recording Setup Update Part +1</h2> +<p>Since I have always wanted to record my SD-80 through a digital link +(even before frying the analog output), I have been keeping an eye on +cheap digital recording solutions. Modern professional audio interfaces +never come with digital input on budget models. Among the older +interfaces, UA-25(EX) from Roland (EDIROL / Cakewalk) seems to be a +reasonable choice. There are also a bunch of different models from +various brands of the same era that have digital inputs. However these +models are virtually impossible to get in China. Then some cheapo +consumer grade stuff caught my attention – several relatively nameless +brands have “sound cards” for home theater uses that have digital I/O. +Those are priced at roughly 200~300 Chinese yuan. Among those I found a +more widely recognized brand called Terratec. They have PCI-e and USB +sound cards that comes with digital I/O and are available for purchase +in China. Price are on the higher end (300+ CNY), however still way +cheaper than the cheapest professional audio interface that doesn’t have +digital I/O (those start from ~800 CNY). Plus these models seem to have +a reasonable Linux user base, so I got their Aureon 7.1 USB.</p> +<p>This thing feels extremely cheap on first sight, weights close to +nothing, and is made entirely out of plastic. It comes with an extremely +thin S/PDIF fiber optical cable which looks so fragile that a single +touch may break it. It does work out of the box. ALSA recognizes it as +“Aureon 7.1 USB” without further clue about the chip it uses, however +the Windows driver is more telling. Its control panel associates the +chip with a Taiwanese company called Cmedia, and the kernel driver is +named <code>cm106.sys</code>. Upon further investigation this thing is +likely to be based on their CM106 chip (which is an ancient solution +from 2003), or its pin-compatible successor CM6206. I don’t have +interest in disassembling it right now (update: confirmed by a teardown +later. It’s indeed based around the CM6206), but either way it’s a cheap +consumer grade solution.</p> +<p>SD-80’s digital output is fixed at 44100 Hz sample rate. So the sound +card must also record at 44100 Hz to make a correct recording (unless it +has internal resampling). This is easily doable under Windows (just +select the appropriate sampling rate in the device properties dialog). +It’s also reasonably easy with Jack, where you can just start the server +on that specific device with the correct sampling rate. But this is not +that easy to achieve for pulseaudio. By default, recent versions of +pulseaudio auto detects cards with the <code>module-udev-detect</code> +module, which doesn’t allow setting a different sample rate for a single +sound card. Setting <code>alternate-sample-rate</code> doesn’t work +either because this card supports digital signals at 48000Hz which in my +case is the value for <code>default-sample-rate</code>, and therefore +would not fallback to <code>alternate-sample-rate</code>. I had to write +a small function to fix this:</p> +<pre><code>spdif_samplerate() +{ + pacmd unload-module `pacmd list-modules | grep -B 2 Aureon_7 | awk '/index:/ {print $2}'` + pacmd load-module module-alsa-card device_id=`awk '/Aureon 7\.1 USB$/{print $1}' /proc/asound/cards` name="usb-0ccd_Aureon_7.1_USB-00" card_name="alsa_card.usb-0ccd_Aureon_7.1_USB-00" namereg_fail=false tsched=yes fixed_latency_range=no ignore_dB=no deferred_volume=yes use_ucm=yes avoid_resampling=no rate=44100 +}</code></pre> +<p><del>Using a cheap consumer grade card does come with consequences. +The recording seems to have a small DC bias – it’s not real DC though, +the offset changes from time to time. When the input signal goes silent, +the offset might differ from the offset when the signal was silent last +time.</del> <a id="n2" href="#note2" class="note">[2]</a> For this reason, I always add a high-pass filter +when using the material recorded by this sound card. With the HPF +applied, this sound card does produce clearer digital recording than my +Scarlett Solo with very cheap cables.</p> +<p>There’s no ASIO driver for this card either (Aureon 7.1 PCIe does +have ASIO driver, but I can’t install that card on my laptop), which +means I have to either use Steinberg’s generic ASIO driver, or ASIO4ALL, +both of which are… kind of trash, but still usable. The card doesn’t +have a bad latency issue though: it’s obviously way worse than the +Scarlett, but still tolerable.</p> +<p>So that’s my <del>current</del> recording setup. I’m currently OK +with it. However I’m not going to stick with it forever. I’ll upgrade to +a UA-25(EX), or better yet, an SD-90 because that way I can use its ASIO +output directly, plus I’ll be able to chain my SD-80 to it and use both +at the same time.</p> +<h2 id="tocanch4" class="tvis">Recording Setup Update Part +2</h2> +<p>(This part is written Q4 2021)</p> +<p>Yes I did upgrade to a UA-25 (non-EX). I got mine for about $60 +(after a long struggle against eBay’s virtually non-existent customer +service to lift a stupid suspension on my account).</p> +<p>Gentoo Linux handles this new interface without any problem. The +troublesome part is Windows (again). Just like the SD-80, Roland didn’t +release any Windows 10 driver for the UA-25. <a href="https://chrisoft.org/blog/post/2019-04-25.html#tocanch4">The +trick</a> I used to make their SD-80 Windows 8/8.1 driver install on +Windows 10 worked fine, and the driver installed correctly. But things +quickly went down hill. Whenever I open an application that uses ASIO, +the driver freaks out and causes audio dropouts like crazy. This glitch +makes the driver basically unusable.</p> +<p>I tried drivers for different Windows versions. Nothing changed. When +I was desperate and searching around the web, I discovered that UA-25EX +has an official Windows 10 driver. UA-25EX is virtually the same as +UA-25 except it comes with an improved limiter section which I assume +has largely nothing to do with the driver. So I decided to try some “mad +hax”.</p> +<p>Windows driver for UA-25EX is only available from Microsoft as a +Windows update package. Roland says if you have a UA-25EX, the package +will automatically install itself once you plug it in. But I don’t have +a UA-25EX: I only have a UA-25. So I had to go to the Windows Update +Catalog, looked for the driver package there, and download the build for +my computer (which turned out to be much harder than it needs to be, but +I won’t go deeper into that here). I extracted the package, and modified +the USB product ID the driver is designed for in the INF file:</p> +<pre><code>%DriverDeviceDesc%=DriverInstall, USB\VID_0582&PID_00E6 ; UA-25EX</code></pre> +<p>Just change <code>PID_00E6</code> to <code>PID_0074</code> (and also +the comment if you wish). AND IT FRICKING INSTALLED. ASIO also worked +perfectly. (Insert a thousand-word essay trashing Roland’s bad practice +here.)</p> +<p>So did the upgrade work? Nope. The DC bias is still there. Now it’s +more likely that the DC bias is from the SD-80 itself. Also another very +telling clue is that when the sound generator inside the SD-80 is reset, +the DC bias immediately goes away. I did some additional research on the +Internet and discovered people have theorized that the DC bias is from +the effect processor. They are having a <a href="https://gearspace.com/board/electronic-music-instruments-and-electronic-music-production/1302162-roland-xv5080-spdif-issue.html">similar +problem</a> with their XV-5080 and XV-5050 as well, both of which have +the same synth engine as the SD-80. By replicating their experiments and +getting the same result, I personally conclude that the DC bias comes +from the amp / gain / filter section of the integrated effects +processor. So I guess I’ll have to keep using high-pass filters on the +output for now.</p> +<p>So the only upgrade is that now I can record S/PDIF signal with +native ASIO. Besides that, it’s actually a downgrade: Output from the +computer will be muted if the digital input of the UA-25 is enabled. +This forced me to keep using the analog input for monitoring.</p> +<h2 id="tocanch5" class="tvis">Recording Setup Update Part +3, 4, 5…</h2> +<p>Yes I did upgrade. (again!!)</p> +<p>I saw a UA-101 in a listing for $80. I bought it. Then there was a +whole saga which ended in me getting two of them for the price of one. +And then I saw a SD-90 for $120… you know what happened.</p> +<p>This is getting too long to write in detail here. I’ll give detailed +information on my current recording setup in a new post, if I care to +write it at all.</p> +<h2 id="tocanch6" class="tvis">Rompler Preservation</h2> +<p>Kalas was extremely keen on preserving the sounds of SD-90/80 during +our communications. I have the intention to keep these legendary Roland +sounds around long into the future as well. We discussed the following +possibilities. Note that due to the locked-down nature of SD-90/80, we +referred to them mostly as “Romplers”, but these methods listed below +apply to those expandable models as well, especially considering they +are nothing but romplers that you can add more ROMs to, and the +architecture of Roland’s PCM synth.</p> +<p>In this section I’ll start using the word “SD-90” and “SD-80” +interchangeably, and by saying “SD-90”, I’m actually referring to the +synthesizer module built into it. If Roland was being honest when they +were saying “the newly developed multitimbral MIDI sound module, as +built into the well-received SD-90” when they were introducing the SD-80 +<a id="n3" href="#note3" class="note">[3]</a>, it should be +safe to assume they are virtually the same thing. I know this is kind of +sloppy. If you want to read more on this, checkout the <a href="#tocanch33">“More on SD-80 vs SD-90 vs SD-20”</a> section.</p> +<h3 id="tocanch7" class="tvis">Emulation</h3> +<p>This method was brought up by Kalas. Indeed there are a couple of +sound modules / synthesizers that has been emulated with reasonable +success. <a href="https://github.com/munt/munt">Munt</a> has an amazing +emulation of Roland’s LA synthesis found in the MT-32 or D-50. +<a id="n4" href="#note4" class="note">[4]</a> Yamaha’s FM +synthesis chips have been reverse engineered from inside out: there are +<a href="https://github.com/gtaylormb/opl3_fpga">implementations on +FPGA</a>, multiple nearly perfect software implementations, and other +bizarre stuff. MAME has emulation for multiple MU-series models, plus +work has been put into making an emulated SC-55 in MAME.</p> +<p>However, I personally don’t think emulation is the way to go for +SD-90/80. The success (or lack thereof) of these emulated models does +have their reasons:</p> +<ul> +<li>Emulation of Yamaha’s FM chips is a success because those chips are +available to third-party sound card makers, and therefore have public +datasheets that contains critical information for emulating the chip, +which includes register mapping, and the detailed architecture of the FM +synthesizer. This drastically decreased the amount of reverse +engineering required to get a perfect emulated implementation. Roland +has never made their synthesizer chips available to third-party vendors, +and therefore it’s impossible to take advantage of public +datasheets.</li> +<li>Emulation of several early gaming consoles’ sound system has been +successful because +<ul> +<li>They are relatively sample.</li> +<li>Similar to Yamaha’s FM chips, programmers can also directly +interface with them. Therefore their programming manuals have detailed +description on how sound generation works in the chips. SD-90/80’s +synthesizer chip XV meets neither of these two criteria.</li> +</ul></li> +<li>Most emulated sound modules in MAME have been a failure in terms of +real-world usability. The emulated MU-series either freezes, produces no +sound at all, or makes loud unexpected noise when playing the demo +track. The SC-55 emulation barely works – they only got the CPU working +and running its dumped control ROM. Please don’t get me wrong: the fact +that some emulated MU model could make any sound is almost a miracle for +me, and definitely a huge achievement despite the far-from-ideal results +it currently has, as Yamaha’s sample based synth chips +(<code>GEW/SWP</code> stuff) are no easy nut to crack. This approach is +highly unlikely to work for the SD-90/80 because unlike gaming consoles, +getting the CPU to run its system code doesn’t mean much for synthesizer +emulation. It’s the emulation of the actual synth/DSP chip that matters. +And the XV chip found in SD-90/80 is a <strong>monstrosity</strong> +compared to the early SWP chip in the MU-series. For this reason, I find +a pure emulation based solution difficult to implement for +SD-90/80.</li> +<li>Munt is successful because instead of an instruction-to-instruction +emulation, it’s more like a software reimplementation of the LA synth. +It doesn’t try to run the control ROM on an emulated Intel 8098 CPU, but +instead only use it for determining some characteristics of the software +implementation of the LA synth. This approach makes the most sense when +trying to recreate SD-90/80 in software form, but still definitely +require tons of reverse engineering (either blackbox or whitebox).</li> +</ul> +<p>For these reasons, I don’t think an OPL3-level emulation of SD-90/80 +is possible <a id="n5" href="#note5" class="note">[5]</a>. However, I will discuss an approach that +resembles Munt’s in the <a href="#tocanch8">Dumping and Deciphering</a> +section.</p> +<h3 id="tocanch8" class="tvis">Sampling the Rompler</h3> +<p>Many people have attempted to sample the SD-90. We already have the +(in)famous THFont from forever ago that contains some samples from the +SD-90, plus <a href="https://musical-artifacts.com/artifacts/1367">these</a> efforts to +create a complete set of sampled instruments from the SD-90. However, +these folks aren’t doing it in the most efficient way IMHO. Since the +SD-90/80 is extremely editable, one can craft presets ideal for raw +sample extraction (no filters, no LFO, just a plain tone with a constant +amplitude envelope). Since many preset instruments in the SD-90/80 +consist of multiple layers using different samples, instead of sampling +the patches, one can sample every individual waveform and layer the +samples in a way similar to the original presets to make close +imitations of SD-90/80 instruments. If done properly under ideal +conditions, the resulting sample library should be around the same size +of SD-90/80’s sample ROM, but decompressed (my guess is ~64 MiB +<a id="n6" href="#note6" class="note">[6]</a>).</p> +<p>If you’re only going to use the vanilla SD patches without any sort +of modification (including filter response, envelope, and effect +parameters), those existing samples will work just fine and they are +probably the most accurate out there if recorded properly. Of course, +the “efficient” approach of sampling sacrifices some level of that +accuracy (due to a different engine being used for playing back the +samples). But in exchange you get the highest level of freedom to +recombine the raw samples into custom patches including tweaking all +possible parameters and effects available in the synth engine of your +choice (which is a huge plus for me personally, as I love to create +whacky patches).</p> +<p>One problem for extracting the samples is that, a single waveform in +the SD-80 may contain different samples assigned for different key +ranges. This is often called a “multisample” by some sources. The way +the samples are mapped to the keys must be figured out before actually +sampling them. I have written a small(ish) python script to do exactly +that. It records the SD-80 playing two different keys at the same pitch +one after another, and compare them by calculating the correlation. If +the correlation is lower than a threshold, the two keys use different +samples. This approach works reasonably well for most samples, but for a +few analog synth samples, it works poorly. For those samples, I had to +resort to relying on the human ear (DTW, dynamic time warping, is also +used sometimes, but it usually has poor results for these samples as +well). Also the XV engine have some weird quirks near the keys C7-D8 +(96-110). The actual waveform produced within that range varies very +slightly from time to time. This is possibly due to the effect of <a href="https://en.wikipedia.org/wiki/Aliasing">aliasing</a> becoming +prominent for these high-pitched notes. I have already figured out +key-sample mapping for all multisamples (they are not guaranteed to be +correct, due to reasons mentioned above).</p> +<p>Another problem is looping. Roland uses sample looping extensively in +their PCM synths. It’s basically their secret sauce to squeeze thousands +of instruments into a unit with only tens of megabytes of samples. +Sample loop points can also be computed using cross-correlation. But is +nowhere near perfect. Of course it can be done manually, but that would +be a tedious task.</p> +<p>No actual recording of the raw samples have been done by me yet.</p> +<p>I have also dumped the instrument configuration for all preset +instruments and rhythm sets as part of my SD-80 dumping project (for +SD-80’s native mode only. I’m not sure whether this is doable for its +GS/XGLite instruments without a lot of reverse engineering, but nobody +cares about those anyway). For now, it can be used to recreate +parameter-accurate SD-80 patches in Roland’s SRX/Zenology plugins. +However it’s not yet in a very human-readable form (either raw binary +registers dump or decimal values with field names).</p> +<p>Once the samples are there, one can easily piece them together within +the sample playback engine of their choice, be it HALion, KONTAKT, or +even just soundfont synthesizers. Sure the feature set of each +sample-based synth engine is not exactly the same, but I think decent +results could be achieved for most instruments.</p> +<h3 id="tocanch9" class="tvis">Dumping and Deciphering</h3> +<p>The wave ROM in the SD-80 is a standard part despite the custom +Roland engravement on it <a id="n7" href="#note7" class="note">[7]</a>. This is expected because Roland has been +using standard mask ROM parts from various manufacturers for the wave +ROM. This means the content of SD-80’s wave ROM can be easily +dumped.</p> +<p>This might be shocking for some of the readers, but Roland does +compress their samples. This is evident from the specification of +XV-5080 “Wave memory: 64MB (16-bit linear format)” while the XV-5080 +only has 32 MiB wave ROM. The compression, previously unknown to me, has +been identified to be a variant of the differential pulse-code +modulation (DPCM) called FCE-DPCM by <a href="http://www.dtech.lv/techarticles_roland_exp.html">some amazing +person</a>. The same person seemed also figured out the structure of the +wave ROM used by sample-based synthesizers from Roland of that general +era. Unfortunately, I wasn’t able to find the article on the technical +details of the compression method at the time of writing. Anyway, hats +off to Edward of dtech.lv!</p> +<p>I <strong>will surely</strong> make a dump of the wave ROMs of my +SD-80. However, I want to do it in an nondestructive manner – I don’t +want to get a ROM dump and an unusable SD-80 (or end up with no valid +ROM dump and an unusable SD-80). Since I have proved my SMT soldering +job is terrible and shall never be in the vicinity of a SMT board +holding a soldering iron or hot air gun, I might try some clipping the +chip instead. I’m considering to try <a href="https://www.360-clip.com/uni-48.htm">this</a> clip from 360-clip. +It claims to be applicable to any 48-pin TSOP chips. If that’s true, +with the help of this clip and a Raspberry Pi <a id="n8" href="#note8" class="note">[8]</a>, I +can suck that juicy content out of the wave ROM chips of the SD-80.</p> +<p>Once we have the ROM dump, we can start trying to figure out its +structure. If we somehow managed to do that, we would be able to feed +the decompressed samples together with the already dumped patch +parameters to some existing or new, custom sample-based software +synthesizer, and achieve decent results mimicking the SD-90/80. Patches +that make use of MFX would certainly be a pain to deal with. However one +can always simulate MFX with external DAW effects. To hear the +difference MFX makes for various preset patches that use it, see the <a href="#tocanch37">“What role does MFX play?”</a> section.</p> +<p>I believe this approach is very similar to that one used by Munt +(although I only read a small part of Munt’s code base, and I didn’t +read anything about their reverse engineering approach). The SH3 CPU +plays a relatively minor part in the tone generation of SD-80. Instead, +we should focus on replicating the sounds of the XV engine. Also, an +logic-level reverse engineering of the XV chip doesn’t seem reasonable +because it’s such a huge and complex chip (or rather, a huge gate +array). Just save the hassle, treat it like a blackbox and try to +reproduce its output using a software implementation should be able to +produce acceptable result on its own.</p> +<h4 id="tocanch10" class="tvis">Extra rambling about the ROM +chip</h4> +<p>In the part number of <code>μPD23C128040ALGY-***-MJH/MKH</code>, the +<code>***</code> part is the ROM code. When a mask ROM chip is +commissioned, the customer (Roland in this case) needs to submit the +desired ROM content and their choice for various other options (in case +of <code>μPD23C128040ALGY</code>, they can choose how the logic level on +a certain pin controls the outputs). The manufacturer then arrange the +mask according to this information and assigns a ROM code to this +specific mask <a id="n9" href="#note9" class="note">[9]</a>. Therefore, for two +chips of the same type, if they have the same ROM code, their contents +should be identical. This way we can guess with fair amount of certainty +that the XV-3080, XV-5080 and XV-5050 have identical wave ROM contents +(they all use <code>μPD23C128040ALGY-849-MJH</code> and +<code>μPD23C128040ALGY-850-MJH</code>).</p> +<p>Among the chips with Roland markings in the SD-80, the XV chip and +8-bit MCU with Roland-programmed ROM has other markings that matches +Roland’s internal part numbers (the numbers with a prefix R, like +<code>R01455956</code> and <code>R02902867</code>), and followed by a +indicative part number of the actual chip (<code>137</code> and +<code>RA08-503</code>). However, none of these features matches on the +wave ROM chips. The wave ROM chips has internal part number +<code>R02678601</code> and <code>R02678612</code>, while the numbers on +the service manual are <code>03010612</code> and <code>03010623</code> +respectively. The indicative part also doesn’t match either: the chips +in my unit have <code>23C128L-529J</code> and <code>23C128L-535K</code>. +While the J/K variant and the <code>23C128L</code> part does match, what +I presumed is the ROM code doesn’t (529 vs 525 on IC28, 535 vs 526 on +IC29). What does this mean? I don’t really know. My SD-80 is built +relatively late into production (date code on the main board is +2004-08-27, date on the service manual is May 2002 – when the SD-80 was +initially released). Maybe Roland did revise the wave ROM content. If +that’s the case, it would be interesting to find one with the original +ROMs and compare them. I wouldn’t expect there to be any significant +differences, though.</p> +<h3 id="tocanch11" class="tvis">SD-20 MIDI File Converter</h3> +<p>This extremely intriguing piece of software is brought up by Kalas +during our communications. At the time of writing, this application can +be still found <a href="https://www.roland.com/jp/support/by_product/sd-20/">here</a>. The +installer can only proceed if an SD-20 is detected. This can be easily +circumvented by using a InstallSheld extractor. The converter does try +to access a registry key +<code>HKLM\Software\Wow6432Node\Edirol\SD-20 MIDI File Converter\BaseDataFile</code>, +which should be set to a string pointing to the url of its param.dat +file. However, even with this key set, the converter still refuse to do +anything, saying it failed to initialize. By the way even with an SD-20 +connected to the computer via USB, the converter still refuses to start +on Windows 10.</p> +<p>However, this kind of nonsense is not going to stop me. I quickly +found cracks floating around on the Internet. This converter is +extremely simplistic: you pick the midi file to convert, it spits the +wav file into the same folder. Here are some quick samples.</p> +<div> +<table style="position:relative;left:50%;transform:translate(-50%,0);text-align:center"> +<tbody><tr> +<td> +SD-80 +</td> +<td> +SD-20 Converter +</td> +</tr> +<tr> +<td> +<audio controls="" preload="none" src="//filestorage.chrisoft.org/blog/data/SD-80/AMEDLEY.SD80.N.ogg"> +</audio> +</td> +<td> +<audio controls="" preload="none" src="//filestorage.chrisoft.org/blog/data/SD-80/AMEDLEY.SD80.SD20C.N.ogg"> +</audio> +</td> +</tr> +<tr> +</tr><tr> +<td colspan="2"> +AMEDLEY.MID by Earl Gray Fowler from Voyetra Technologies, arranged for +SD-80 (Native Mode) +</td> +</tr> +</tbody></table> +</div> +<p>Used instruments: St.Strings, St.Timpani, St.Harp, St.Fr Horns, Flute +vib, St.Tubular, St.Harp, St.Xylophone, St.Music Box, St.Room, Bassoon +vib, SpaceVoice 3, Atmosphere 3, Ice Rain 3, PanFlute vib, Bird Tweet, +Seashore, Sweep Pad 3, Rockabilly, St.Kalimba, Piccolo vib, Steel Drums, +Tuba vib, Romantic Tp, St.Banjo, Trombone vib, JazzClarinet, Gunshot, +Clavi Bass 3, St.Brass, Dist.Gt 2, St.Orc Hit, Jazz Organ 2, +PhaseFrtless, Solo Vox 3, Reed Romance, Ice Rain 2, St.Power, Oct.JP +Saw, SH-2 Lead, Jazz Slap, OverdriveGt2, Applause.</p> +<p>Reed Romance and SH-2 Lead are from the special 2 set, therefore +cannot be used by the SD-20 MIDI File Converter. They are substituted by +Violin 2 vib and Warm SynHorn automatically. A single SD-80 system +exclusive DT1 message is used to change the patch volume of SH-2 +Lead.</p> +<div> +<table style="position:relative;left:50%;transform:translate(-50%,0);text-align:center"> +<tbody><tr> +<td> +SD-80 +</td> +<td> +SD-20 Converter +</td> +</tr> +<tr> +<td> +<audio controls="" preload="none" src="//filestorage.chrisoft.org/blog/data/SD-80/YOSEMITE.SD80.N.ogg"> +</audio> +</td> +<td> +<audio controls="" preload="none" src="//filestorage.chrisoft.org/blog/data/SD-80/YOSEMITE.SD80.SD20C.N.ogg"> +</audio> +</td> +</tr> +<tr> +</tr><tr> +<td colspan="2"> +YOSEMITE.MID by Passport Designs, arranged for SD-80 (Native Mode) +</td> +</tr> +</tbody></table> +</div> +<p>Used instruments: Enh.Nylon o, Ocarina vib, St.Slow Str2, +PhaseFrtless, Celtic Ens, St.Standard, Soft60’Organ, Pre Bass, +St.BritePno.</p> +<p>St.BritePno is a custom patch. It’s selected using system exclusive +messages generated by SD-80’s bulk dump feature. Enh.Nylon o, Celtic +Ens, Pre Bass are not available in the SD-20 Converter.</p> +<p>The output from the converter is significantly louder than SD-80’s +digital output. I normalized all recordings before uploading them. +Despite the lack of a lot of features and patches, the converter +actually sounded exceptionally good, and exceeded my expectation by +quite a large margin.</p> +<p>The converter is not a software implementation of SD-20’s internals. +There’s misinformation out there claiming so, but that’s simply not the +case. Roland explicitly disclosed this in the readme file of the +converter.</p> +<h4 id="tocanch12" class="tvis">FrankenTTS-1</h4> +<p>Something smells fishy instantly when I got this converter. That file +name “param.dat” looks really familiar. If you have used any of Roland’s +HQ software synthesizer products from the early 2000s +<a id="n10" href="#note10" class="note">[10]</a>, you might feel the same. They all use this file to +store their samples and patch data.</p> +<p>One natural thing to do is to replace the param.dat file of these +plugins with the one supplied with the converter. The result are as +follows:</p> +<ul> +<li>HQ-OR/HQ-QT refuses to load at all after the swap.</li> +<li>HQ-GM2 loads correctly. Instrument names changes to the names from +SD-20’s Classical set (for example, 1:0 changes from Piano 1 st. to +Piano 1w). Only instruments from the Classical set are available. No +NRPN messages can change the instrument set. The sound is pretty much +identical to that from the converter.</li> +<li>GrooveSynth (P5antom) also loads correctly. Besides all instruments +from the Classical set, a couple of instruments from the Contemporary +set and Solo set are also available, but there’s no obvious pattern +there. All rhythm sets are available in the Franken-GrooveSynth.</li> +</ul> +<p>This reveals that the synthesizer engine is identical to that used by +these HQ software synthesizers, proving the claim that this converter is +a software implementation of SD-20 wrong again.</p> +<p>There’s not much information about the structure of this “param.dat” +file online, nor could I figure it out myself (I’m not a huge fan of +doing such work). However this interchangeablility is somewhat +delighting.</p> +<h4 id="tocanch13" class="tvis">Other observations</h4> +<p>The executable of the converter is a mere ~500KiB and doesn’t seem to +use an executable packer. This suggests the “HQ” engine couldn’t be +super complex.</p> +<p>The executable contains references to “Automation”, “User Rhythm” and +such. Apparently they still left some code from the plugin version of +the HQ engine in this converter.</p> +<p>I think I found the entry to the function where param.dat is loaded +(0x004228e0). No idea where to go from there though.</p> +<h4 id="tocanch14" class="tvis">So… is this it?</h4> +<p>Nah, we should not depend on a piece of proprietary junk for the +preservation of anything.</p> +<p>Maybe some wizards could find a way to hack the plugins and make all +instruments available in TTS-1 or something. But that doesn’t really +work as a way to preserve the synth if the binary code it depends on +could stop working at an arbitrary point of time in the future, does +it?</p> +<h3 id="tocanch15" class="tvis">Roland Cloud</h3> +<p>Roland has been pushing their subscription service “Roland Cloud” +since 2018. When it first came out there was no plugin of my interest. +The deal breaker for me back then was there was no permanent licensing +option. If you know me, I’m strongly opposed to the subscription model +used for software products.</p> +<p>Starting from May 2020 though, Roland started offering “lifetime +keys”, which now puts this service within my radar. I took the ultimate +tier trial and installed every piece of plugin replicating SRX boards +and the XV-5080, as well as the then-new “Zenology” synth. I’ve got +mixed results.</p> +<p>The software aspect is okay. It’s much better than SoundCanvas VA +I’ve used years ago, which has glitchy TVA and TVF and was never fixed. +The user interface scales perfectly on high DPI screens. Editing +experience of the SRX/XV plugins is basically the same as the editors +for later Roland PCM synths (such as the SonicCell and the Integra-7) – +that is, much better than the original XV or SD-80 editor. These plugins +still have terrible performance as most previous Roland software synths +do (each instance needs plenty of processing power – if you use a +computer that predates the release of these plugins, the performance +will probably suffer).</p> +<p>The sound is … fine? Didn’t give me the same astonishment when I +heard a real XV-5080 on YouTube though (I thought “no way this thing +only has 32 MiB of sample content!”). For most patches, they sound +“close enough” to an actual XV-5080, despite a handful of caveats. The +synth engine do behave nearly identical to actual XV-based synths, at +least according to my tests. The XV-5080 plugin is especially +underwhelming, considering the original XV-5080 is expandable and can +also load external samples. If only the XV-5080 plugin could load +samples and patches from other SRX plugins installed, it would have been +a lot better (although this is solved by Zenology, it has its own +issues). The MFX uses a different set of effect types from the original +XV-5080 and SD-80: they are modeled after synths after the Fantom-S +era). However I’d say the effects bearing the same name as XV effects do +sound largely the same.</p> +<p>The executables contain a resource folder named “WROM”, and it +contains the wave ROMs used by the plugins. They are all exactly 32 MiB. +The wave ROM files contains a similar 32-byte header to dumps of actual +wave ROM of earlier Roland PCM synths (see the JD-800 wave ROM dump from +Edward of dtech.lv).</p> +<p>I do have some major complaints though. Each executable contains a +copy of the wave ROMs. If you choose to install all plugin formats, that +will install 4 copy of exactly the same wave ROM on your computer. Also +it’s impossible to combine the sounds of different SRX boards. Most +samples originated from Spectrasonics are missing from the SRX plugins +but are reincluded in the EXZ expansions which can be used in Zenology, +indicating a copyright dispute between the two companies that was +resolved later <a id="n11" href="#note11" class="note">[11]</a>. These problems +can be partially solved if you use the newer Zenology plugin instead. +But Zenology is riddled with its own issues. It uses a nearly entirely +new set of MFX (identical to the MFX from their 2019 Fantom-6/7/8 +workstations and other “ZEN-CORE” based products), and completely lacks +reverb effects. Effects that have the same name in Zenology and XV-based +synths doesn’t necessarily behave the same. And Zenology still can’t +load samples from different sample groups to left and right channels of +a single voice. I know it’s a thing in the original XV, but since it’s a +software reimplementation, they don’t have to stick to the same +restrictions do they? Also, why are all these plugins monotimbral? If +your answer is “just use multiple instances”, I would remind you that +these are Roland software synths, and they don’t perform well if you add +multiple to your virtual rack…</p> +<p>Recreating patches of the SD-80 using these plugins does seem to be +possible, and there are already plenty of people doing that. See the +section <a href="#tocanch32">“SD-80’s sound content”</a> for details. +However it does still rely on proprietary Roland software products +(which, if they want to, can cease the support at any time), requires +pricy licenses, and on top of all that, a crappy authenticating +system.</p> +<div> +<table style="position:relative;left:50%;transform:translate(-50%,0);text-align:center"> +<tbody><tr> +<td> +SD-80 +</td> +<td> +XV-5080 VST +</td> +</tr> +<tr> +<td> +<audio controls="" preload="none" src="//filestorage.chrisoft.org/blog/data/SD-80/passport_Driving.sd_pretending_to_be_xv.ogg"> +</audio> +</td> +<td> +<audio controls="" preload="none" src="//filestorage.chrisoft.org/blog/data/SD-80/passport_Driving.xvvst.ogg"> +</audio> +</td> +</tr> +<tr> +<td> +SD-80 using patch parameters pulled from XV-5080 +</td> +<td> + 5 instances of XV-5080 VST using factory patches +</td> +</tr> +<tr> +<td colspan="2"> +“Driving”, by Passport Designs +</td> +</tr> +</tbody></table> +</div> +<h2 id="tocanch16" class="tvis">A +History lesson from someone who barely knows anything about it</h2> +<p>AKA a short history of Roland’s sample-based synths from someone who +has used almost none of them.</p> +<p>Below is a comparison chart of selected sample-based synths from +Roland using information available from their manuals (mostly sysex +address mapping in the MIDI implementation) and service manuals. In a +few occasions sources from the Internet are used as well.</p> +<div class="collapse" data-caption="More detailed comparison of various Roland's PCM based sound modules"> +<p>Chip information on following modules are from actual units:</p> +<ul> +<li>SD-90</li> +<li>SD-80</li> +<li>SD-20</li> +<li>SC-8850</li> +<li>SC-D70 (courtesy of Palto)</li> +<li>SC-55 (courtesy of Palto)</li> +<li>SC-55mkII (courtesy of Palto)</li> +<li>Fantom-XR</li> +<li>XV-5080</li> +</ul> +<p>Others come from service notes.</p> +<table> +<tbody><tr> +<th> +Model +</th> +<th> +Synth Tone Generator +</th> +<th> +Effects Processor +</th> +<th> +Wave ROM +</th> +<th> +CPU +</th> +<th> +Multitimbral Parts +</th> +<th> +Polyphony (partials / voices) +</th> +<th> +Preset Patches +</th> +<th> +Synth Effects +</th> +</tr> +<tr> +<td> +MT-32 +</td> +<td> +MB87136A (LA32) +</td> +<td> +HG61H20R36F (Reverb), 4*64Kbit RAM +</td> +<td> +4 Mbit = 0.5 MiB +</td> +<td> +Intel 8098 +</td> +<td> +9 +</td> +<td> +32 +</td> +<td> +128i + 30r +</td> +<td> +Reverb +</td> +</tr> +<tr> +<td> +JD-990 +</td> +<td> +MB87731A (EP) + MB87424A (TVF) +</td> +<td> +2 * TC6088AF (CSP), 4 Mbit RAM +</td> +<td> +3 * 16 Mbit = 6 MiB, expandable w/ SL-JD80, SO-PCM1, PN-JV80 and SR-JV80 +boards +</td> +<td> +H8/570 +</td> +<td> +8 +</td> +<td> +24 +</td> +<td> +128i + 2r + 32p +</td> +<td> +JD Multi (EQ + Dist + Phaser + Spectrum + Enhancer + Chorus + Delay + +Reverb) +</td> +</tr> +<tr> +<td> +SC-55 +</td> +<td> +24201F002, TC24SC201AF-002 (GP) +</td> +<td> +Integrated, 256 Kbit RAM +</td> +<td> +3 * 8 Mbit = 3 MiB +</td> +<td> +H8/532 +</td> +<td> +16 +</td> +<td> +24 +</td> +<td> +317i + 10r +</td> +<td> +Reverb, Chorus +</td> +</tr> +<tr> +<td> +SC-55MkII +</td> +<td> +TC6116AF (GP4) +</td> +<td> +Integrated, 256 Kbit RAM +</td> +<td> +16 Mbit + 8 Mbit = 3 MiB +</td> +<td> +H8/532 +</td> +<td> +16 +</td> +<td> +28 +</td> +<td> +354i + 10r +</td> +<td> +Reverb, Chorus +</td> +</tr> +<tr> +<td> +JV-880 +</td> +<td> +TC6116AF (GP4) +</td> +<td> +Integrated, 256 Kbit RAM +</td> +<td> +2 * 16 Mbit = 4 MiB, expandable w/ SR-JV80 boards & PN-JV80 / SO-PCM +cards +</td> +<td> +H8/532 +</td> +<td> +8 +</td> +<td> +28 +</td> +<td> +192i + 3r + 48p +</td> +<td> +Reverb, Chorus +</td> +</tr> +<tr> +<td> +SC-88 +</td> +<td> +MBCS30109 (XP) +</td> +<td> +Integrated, 2 * 1 Mbit RAM +</td> +<td> +4 * 16 Mbit = 8 MiB +</td> +<td> +H8/510 +</td> +<td> +32 +</td> +<td> +64 +</td> +<td> +654i + 24r +</td> +<td> +Reverb, Chorus, Delay, EQ +</td> +</tr> +<tr> +<td> +JV-1080 +</td> +<td> +MBCS30109B (XP) +</td> +<td> +Integrated, 2 * 1 Mbit RAM +</td> +<td> +4 * 16 Mbit = 8 MiB, expandable w/ SR-JV80 boards & PN-JV80 / SO-PCM +cards +</td> +<td> +HD6477034, SH7034 (SH1) +</td> +<td> +16 +</td> +<td> +64 +</td> +<td> +512i + 8r + 64p +</td> +<td> +Reverb, Chorus, EFX (40 types) +</td> +</tr> +<tr> +<td> +SC-88VL +</td> +<td> +MB87B105PF-G RHR-2342 (XP2) <a id="n12" href="#note12" class="note">[12]</a> +</td> +<td> +Integrated, 2 * 1 MBit RAM +</td> +<td> +4 * 16 Mbit = 8 MiB +</td> +<td> +H8/510 +</td> +<td> +32 +</td> +<td> +64 +</td> +<td> +654i + 24r +</td> +<td> +Reverb, Chorus, Delay, EQ +</td> +</tr> +<tr> +<td> +SC-88Pro +</td> +<td> +TC170C200AF-005, RA01-005 (XP3), 2 * 1 MBit RAM +</td> +<td> +MB87837PF, 1 MBit RAM +</td> +<td> +5 * 32 Mbit = 20 MiB +</td> +<td> +H8/510 +</td> +<td> +32 +</td> +<td> +64 +</td> +<td> +1117i + 42r +</td> +<td> +Reverb, Chorus, Delay, EQ, EFX (64 types) +</td> +</tr> +<tr> +<td> +JV-2080 +</td> +<td> +TC170C200AF-005, RA01-005 (XP3), 4 MBit RAM +</td> +<td> +TC170C110AF-002, RA03-002, 4 MBit + 1 MBit RAM +</td> +<td> +2 * 32 Mbit = 8 MiB, expandable w/ SR-JV80 boards +</td> +<td> +HD6437034, SH7034 (SH1) +</td> +<td> +16 +</td> +<td> +64 +</td> +<td> +640i + 10r + 64p +</td> +<td> +Reverb, Chorus, EFX (3 slots, 40 types) +</td> +</tr> +<tr> +<td> +SC-8850 +</td> +<td> +2 * TC203C180AF-002, RA09-002 (XP6), 2 * 4 MBit RAM +</td> +<td> +MB87837PF, 4 MBit RAM +</td> +<td> +2 * 128 Mbit = 32 MiB +</td> +<td> +HD6437016E09F, SH7016 (SH2) <a id="n13" href="#note13" class="note">[13]</a> +</td> +<td> +64 +</td> +<td> +128 +</td> +<td> +1640i + 63r +</td> +<td> +Reverb, Chorus, Delay, EQ, EFX (64 types) +</td> +</tr> +<tr> +<td> +SC-8820 +</td> +<td> +TC203C180AF-002, RA09-002 (XP6), 4 MBit RAM +</td> +<td> +MB87837PF, 4 MBit RAM +</td> +<td> +128 Mbit + 64 Mbit = 24 MiB +</td> +<td> +HD64F7017F28, SH7017 (SH2) +</td> +<td> +32 +</td> +<td> +64 +</td> +<td> +1608i + 63r +</td> +<td> +Reverb, Chorus, Delay, EQ, EFX (64 types) +</td> +</tr> +<tr> +<td> +SC-D70 +</td> +<td> +TC203C180AF-002, RA09-002 (XP6), 4 MBit RAM +</td> +<td> +MB87837PF, 4 MBit RAM; TC223C080AF-101, RA0A-101 (ESP4), 4 Mbit RAM +</td> +<td> +128 Mbit + 64 Mbit = 24 MiB +</td> +<td> +HD6437016E19F, SH7016 (SH2) +</td> +<td> +32 +</td> +<td> +64 +</td> +<td> +1608i + 63r +</td> +<td> +Reverb, Chorus, Delay, EQ, EFX (64 types) +</td> +</tr> +<tr> +<td> +XV-3080 +</td> +<td> +2 * TC203C180AF-002, RA09-002 (XP6) +</td> +<td> +Integrated, 2 * 4 MBit RAM +</td> +<td> +2 * 128 Mbit = 32 MiB, expandable w/ SRX & SR-JV80 boards +</td> +<td> +HD6437042F33, SH7042 (SH2) +</td> +<td> +16 +</td> +<td> +128 +</td> +<td> +1024i + 16r + 64p +</td> +<td> +Reverb, Chorus, MFX (1 slot, 63 types) +</td> +</tr> +<tr> +<td> +JV-1010 +</td> +<td> +TC203C180AF-002, RA09-002 (XP6) +</td> +<td> +Integrated, 4 MBit RAM +</td> +<td> +2 * 64 Mbit = 16 MiB, expandable w/ SR-JV80 boards +</td> +<td> +HD6437016F28, SH7016 (SH2) +</td> +<td> +16 +</td> +<td> +64 +</td> +<td> +895i + 18r + 64p +</td> +<td> +Reverb, Chorus, EFX (40 types) +</td> +</tr> +<tr> +<td> +SD-80 +</td> +<td> +2 * TC223C660CF-503, RA08-503 (XV) +</td> +<td> +Integrated, 2 * 16 Mbit RAM +</td> +<td> +2 * 128 Mbit = 32 MiB +</td> +<td> +HD6417706, SH7706 (SH3) +</td> +<td> +32 +</td> +<td> +128 +</td> +<td> +1050i + 30r +</td> +<td> +Reverb, Chorus, EQ, MFX (3 slots, 90 types) +</td> +</tr> +<tr> +<td> +SD-90 +</td> +<td> +2 * TC223C660CF-503, RA08-503 (XV) +</td> +<td> +Integrated, 2 * 16 Mbit RAM; RA0B-B01 for AFX +</td> +<td> +2 * 128 Mbit = 32 MiB +</td> +<td> +HD6417709A, SH7709 (SH3) +</td> +<td> +32 +</td> +<td> +128 +</td> +<td> +1050i + 30r +</td> +<td> +Reverb, Chorus, EQ, MFX (3 slots, 90 types) +</td> +</tr> +<tr> +<td> +SD-20 +</td> +<td> +TC203C180AF-003, RA0C-003 (XP7) +</td> +<td> +Integrated, 4 Mbit RAM +</td> +<td> +2 * 128 Mbit = 32 MiB +</td> +<td> +HD6437016E29FV, SH7016 (SH2) +</td> +<td> +32 +</td> +<td> +64 +</td> +<td> +660i + 23r +</td> +<td> +Reverb, Chorus, EQ +</td> +</tr> +<tr> +<td> +XV-5080 +</td> +<td> +2 * TC223C660CF-503, RA08-503 (XV) +</td> +<td> +Integrated, 2 * 16 Mbit RAM +</td> +<td> +2 * 128 Mbit = 32 MiB (expandable w/ SRX & SR-JV80 boards and EDO +DRAM up to 128 MiB) +</td> +<td> +HD6437042A13F, SH7042 (SH2) +</td> +<td> +32 +</td> +<td> +128 +</td> +<td> +1152i + 23r + 64p +</td> +<td> +Reverb, Chorus, EQ, MFX (3 slots, 90 types) +</td> +</tr> +<tr> +<td> +XV-5050 +</td> +<td> +TC223C660CF-503, RA08-503 (XV) +</td> +<td> +Integrated, 16 Mbit RAM +</td> +<td> +2 * 128 Mbit = 32 MiB (expandable w/ SRX boards) +</td> +<td> +HD6437016E22, SH7016 (SH2) +</td> +<td> +16 +</td> +<td> +64 +</td> +<td> +1280i + 25r + 64p +</td> +<td> +Reverb, Chorus, EQ, MFX (3 slots with restrictions <a id="n14" href="#note14" class="note">[14]</a>, 90 types) +</td> +</tr> +<tr> +<td> +XV-2020 +</td> +<td> +TC203C180AF-003, RA0C-003 (XP7) +</td> +<td> +Integrated, 4 Mbit RAM +</td> +<td> +2 * 128 Mbit = 32 MiB (expandable w/ SRX boards) +</td> +<td> +HD6437016E, SH7016 (SH2) +</td> +<td> +16 +</td> +<td> +64 +</td> +<td> +768i + 17r + 64p +</td> +<td> +Reverb, Chorus, MFX (1 slot, 40 types) +</td> +</tr> +<tr> +<td> +Fantom S-88 +</td> +<td> +TC223C660CF-503, RA08-503 (XV), 4 Mbit RAM +</td> +<td> +TC223C080AF-101, RA0A-101 (ESP4), 16 Mbit RAM +</td> +<td> +2 * 128 Mbit = 32 MiB (w/ 2 * 128 Mbit = 32 MiB sampling RAM, expandable +up to 288 MiB, plus SRX boards) +</td> +<td> +HD6417706, SH7706 (SH3) +</td> +<td> +16 +</td> +<td> +64 +</td> +<td> +904i + 41r + 64p +</td> +<td> +Reverb, Chorus, MFX (3 slots, 78 types), Mastering & Input Effects +</td> +</tr> +<tr> +<td> +Fantom XR/X6/X7/X8 +</td> +<td> +T6TV2TBG-0002 (WX) +</td> +<td> +Integrated, 64 Mbit RAM +</td> +<td> +4 * 128 Mbit = 64 MiB (w/ 2 * 64 Mbit = 16 MiB sampling RAM, expandable +up to 528 MiB, plus SRX boards) +</td> +<td> +HD6417706, SH7706 (SH3) +</td> +<td> +16 +</td> +<td> +128 +</td> +<td> +1280i + 49r + 64p +</td> +<td> +Reverb, Chorus, MFX (3 slots, 78 types), Mastering & Input Effects +</td> +</tr> +<tr> +<td> +Fantom G6/G7/G8 +</td> +<td> +T6TV2TBG-0002 (WX) +</td> +<td> +2 * T6TZ3AFG-0001 (WSP) w/ 64 Mbit RAM each + WX Integrated, 64 Mbit RAM +</td> +<td> +2 * 512 Mbit = 128 MiB (w/ 2 * 128Mbit = 32MiB sampling RAM, expandable +upto 544 MiB, plus ARX boards (external SSC synthesis)) +</td> +<td> +SH7785 (SH4A) +</td> +<td> +16 +</td> +<td> +128 +</td> +<td> +1920i + 73r + 8p +</td> +<td> +Reverb, Chorus, PFX (16 slots, one per channel, 76 types), MFX (2 slots, +78 types), Mastering & Input Effects +</td> +</tr> +<tr> +<td> +INTEGRA-7 +</td> +<td> +R8A02021ABG (SSC7, CPU w/ integrated DSP?) + MB8AA4181 (ESC2) +</td> +<td> +ESC2 256Mbit Effect RAM + SSC7 64Mbit Effect RAM +</td> +<td> +3 * 1Gbit = 384MiB (w/ 4 * 256Mbit = 128MiB DRAM) +</td> +<td> +R8A02021ABG (SSC7), SH4? +</td> +<td> +16 +</td> +<td> +128 +</td> +<td> +6030i + 258r + 64p +<!--64 "Studio Sets" (performances), SuperNATURAL (256 Ac, 1109 Sy, 26 Dr) + XV-5080 PCM (896i, 14d) + GM2 (256i, 9d) + ExSN1-6 (17i, 17i, 50i, 12i, 12i, 7d) + SRX01-12 (41i + 79d, 50i, 128i + 12d, 128i, 312i + 34d, 449i + 5d, 475i + 11d, 448i + 21d, 414i + 12d, 100i, 42i, 50i) + HQGM2 (256i, 9d) + HQPCM (512i, 19d)--> +</td> +<td> +Reverb, Chorus, MFX (16 slots, 67 types), EQ, compressor (drum part), +Surround, Mastering (EQ) +</td> +</tr> +</tbody></table> +</div> +<p>The following section summarizes generation-over-generation +improvements of the synth engine noticed by me reading the manuals. +There is a little bit of technical assessment of the chips, however most +of it is <strong>not</strong> based on analysis of the actual chip, +instead it’s based on analysis of the most capable synth model using +that chip. Some of the features might be added with newer version of +system software (such as the multisampling feature on XV-based synths +mentioned below) rather than improvements on the actual synth chip. It’s +in no way, shape or form complete. A lot of synthesizer keyboard models +are not listed. It could be way too technical for some readers. If +that’s the case, feel free to skip this section.</p> +<h3 id="tocanch17" class="tvis">LA</h3> +<p>Not strictly a PCM synth. Only uses PCM for the attack phase of the +sound. Already showing Roland’s base designs for later PCM synths: 4 +“partials” (this term is from 80s Roland samplers, and was referred to +as either voices or tones in later products) for each patch. Each +partial has its “timbre”, which consists of a WG (“wave generator”), +5-stage envelope generators for filters and amplifiers (which in later +PCM synths were reduced to 4-stage), and a single LFO for mod wheel. +Filters are always low-pass. Poor panning resolution (15 steps instead +of GM’s 128). Rhythm patches reference to individual “timbres” on each +key. Usually paired with external reverb and chorus processing chips. Up +to 32 polyphony.</p> +<p>Used in MT-32, CM-64, CM-32L, D-110 (as MB87136A “LA32”, QFP), and +D-50 (as MB87136, PGA).</p> +<p>Due to the popularity of MT-32, which is supported by a whole bunch +of DOS games, emulation of this engine is pretty well-developed already +(see the aforementioned Munt project).</p> +<h3 id="tocanch18" class="tvis">(Unnamed synth engine in +U-110)</h3> +<p>An early (late-1980s) incarnation of Roland’s PCM only synth. No +filters at all. Amp env reduced to 3 stages (?). The synth structure +looks more closely related to that of LA rather than later Roland PCM +synths. 31 polyphony. The synth consists of two chips: MB87419 and +MB87420. The former seems to act as a controller, while the latter does +the actual sound generation. There’s an additional chip to handle output +selection. Also relies on external chips for effects.</p> +<p>Interestingly, MAME has a partial implementation of this synth engine +(src/devices/sound/rolandpcm.cpp).</p> +<p>Found in U-110, U-220, CM-32P and various R-8 variants.</p> +<h3 id="tocanch19" class="tvis">EP</h3> +<p>Early-1990s PCM synth. Has filters but requires an external TVF +chip.</p> +<p>The models using this engine seems to have roughly the same feature +set as GP-based models. However they lack a lot of controls for rhythm +patches. Some models come with a much more powerful effects engine +(which is external to the EP chip).</p> +<p>Used in HP-3700/2700 (as MB87731), and JD-800/990 (as MB87731A).</p> +<h3 id="tocanch20" class="tvis">GP</h3> +<p>Uses 4-stage envelope generators for filter and amplitude. Has two +filter modes (LPF and HPF). Individual tones can be delayed after the +note is triggered. Each tone has 2 independent LFOs. Has a rudimentary +modulation matrix (with fixed modulation sources). Reverb and chorus +effects are integrated in the chip. Most parameters now accepts values +from 0 to 127 (rather than 0 to 100 in LA-based units). Has FxM +(frequency modulation) capability. More parameters can be modulated by +key follow or velocity, which now also supports velocity curves and +sensitivity offsets. Up to 28 polyphony on GP4 (24 on the original +GP).</p> +<p>The original GP (TC24SC201AF-002) is used in JV-80 and SC-55.</p> +<p>A later variant “GP4” (TC6116AF) is used in JV-880, SC-55mkII and +MC-303. It contains an additional gate array as LCD controller and +handles extra IO.</p> +<h3 id="tocanch21" class="tvis">XP</h3> +<p>This iteration has a lot of variants.</p> +<h4 id="tocanch22" class="tvis">Original XP</h4> +<p>Two additional filter modes (BPF and PKG). Modulation matrix has +partially configurable modulation sources. Introduced random panning and +alternate panning. Key ranges of tones can be limited. Voice priority +(which note to steal when a new note is played if polyphony is maxed) +can be adjusted. Has integrated effects processor with 40 available +effect types. Up to 64 polyphony. This chip seems to have the facilities +for pairing two of them together, but none of the production rack units +make use of this feature as far as I know. 24-bit wave address bus for a +maximum of 16777216 words (=32 MiB) addressable wave ROM per chip.</p> +<p>Used in JV-1080 (as MBCS30109B), and SC-88 (as MBCS30109).</p> +<h4 id="tocanch23" class="tvis">XP2</h4> +<p>Seems to be a drop-in replacement of the original XP.</p> +<p>Used in production units of XP-80 (designed with the original XP) and +SC-88VL (both as MB87B105PF-G or RHR-2342).</p> +<h4 id="tocanch24" class="tvis">XP3</h4> +<p>Seems pin-compatible with the original XP.</p> +<p>Used in JV-2080, SC-88Pro, and JX-305 (as TC170C200AF-005 or +RA01-005).</p> +<h4 id="tocanch25" class="tvis">XP6</h4> +<p>Tones can have different samples on each stereo channel. Two extra +filter modes (LPF2 and LPF3). Fully configurable modulation matrix. 63 +internal effect types. Up to 64 polyphony. Actual models with two of +these chips exist (XV-3080 and SC-8850).</p> +<p>Used in XV-3080, JV-1010, XV-88, SC-8850, SC-8820 and SC-D70 (as +TC203C180AF-002 or RA09-002). XV-88, XV-3080 and SC-8850 use a pair of +XP6.</p> +<h4 id="tocanch26" class="tvis">XP7</h4> +<p>Cut-down variant used in low cost models. Only the 40 “classical” +JV/XP effect types are present. All XP chips <em>before</em> XP7 work at +a 32 kHz output sampling rate (24.576 MHz clock input, 768 clock cycles +per output sample, or 12 clock cycles per voice). XP7 is also capable of +operating at 44.1 kHz with a 33.868 MHz clock input (found in the SD-20 +and DR-880).</p> +<p>Used in XV-2020, SD-20, DR-880, and E-09 (as TC203C180AF-003 or +RA0C-003).</p> +<h3 id="tocanch27" class="tvis">XV</h3> +<p>Mostly the same as XP6, but with COSM effects (guitar/bass +amplifiers, speaker & microphone emulation) and two additional +effect slots. 90 internal effect types. 3 insertion effect slots (40 of +the 90 effect types takes all 3 slots if only one chip is used). Up to +64 polyphony. Has an additional memory controller for sample RAM, +enabling dynamic sampling. Can be paired to double the maximum polyphony +and improve effects DSP power. 25-bit wave address bus for a maximum of +33554432 words (=64 MiB) addressable wave ROM per chip (all XPs have a +24-bit wave address bus).</p> +<p>Used in XV-5080, XV-5050, SD-90, SD-80, Fantom, Fantom S/S88, +MV-8800, and MC-909 (as TC223C660CF-503 or RA08-503). XV-5080, SD-90 and +SD-80 use a pair of XV.</p> +<p>XV-5080 seems unique among these models as it has a (software) switch +between two master clocks for the XV chip that allows for switching +between 44.1 kHz and 48 kHz output. The XV engine in all other models +listed above outputs at 44.1 kHz. Twice efficient compared to the XP +series, the XV chip needs 6 clock cycles to process each voice, which +translate to a input clock of 16.9344 MHz (44.1 kHz output) or 18.432 +MHz (48 kHz output).</p> +<p>Earlier models with sampling capability using this chip doesn’t have +proper external multisample support until Fantom S/S88, suggesting the +multisample support is added with system firmware rather modifications +to the synth engine.</p> +<h3 id="tocanch28" class="tvis">WX</h3> +<p>Capability wise, WX seems to be the equivalent of dual XV with the +external effects chip used in Fantom S/S88 (TC223C080AF-101, RA0A-101) +integrated. 78 internal effect types plus mastering + input effects. +Also added proper multisample support for external samples, which the +XV-5080 lacks. <a id="n15" href="#note15" class="note">[15]</a> Up to 128 polyphony. 25-bit +wave address bus for a maximum of 33554432 words (=64 MiB) addressable +wave ROM per chip. Wave RAM on general data bus instead of wave bus. WX +chip is only seen operating at a 44.1 kHz output, and uses a input clock +of 16.9344 MHz (3 clock cycles per voice).</p> +<p>Found in the Fantom-X series and Fantom-G series, as well as MC-808. +(SonicCell and SD-50 are also likely equipped with this chip, but I’m +not 100% sure.)</p> +<h3 id="tocanch29" class="tvis">Beyond WX</h3> +<p>From this point on the service manuals from Roland have become less +useful. They stopped listing the ICs in their parts list. However the +block diagram and schematics remain.</p> +<p>Roland introduced the so-called “SuperNATURAL” sounds with their +Fantom-G series, together with its new expansion board format (ARX). +These boards has a CPU built on it (the same SSC7 CPU used in +Integra-7). The CPU is connected to a set of RAM named “Effects RAM” in +Roland service manuals. Fantom-G by itself doesn’t appear to have any +“SuperNATURAL” sounds preloaded, and these new sounds clearly breaks +some of the limitations of the old synth engines. This leads to my +suspicion that the ARX boards have self-contained synth engines on +board, and the new “SuperNATURAL” engine is either software based, or +the SSC7 chip has some sort of extra bits that doesn’t belong to the CPU +(that is, an integrated ASIC DSP block). The SSC/SSC7 chip is seen on +all ARX boards, as well as the Integra-7.</p> +<p>Along with this new CPU thing, there are new effect processors/DSPs: +WSP and ESC2. WSP is found in a few relatively earlier (2009-ish) +models, while ESC2 is appears in almost all post 2010 Roland synths +(Integra-7, probably all Boutique models, and the latest Fantom-6/7/8 +series). A single ESC2 chip is able to provide 16 individual effect +slots in the Integra-7. However sometimes two of these chips can be seen +in some of the Boutique units. It also has a JTAG interface, and handles +USB connectivity in the Integra-7, leading to the suspicion that it also +has a microcontroller built-in.</p> +<h2 id="tocanch30" class="tvis">Role played by the +CPU in sound generation</h2> +<p>When I started writing this post, my thoughts were the vast majority +of the synth functionality is contained in the synth chip. In other +words, the synth chip provides a very high level of abstraction, and the +CPU only needs to pass processed voice events to the synth chip. In +retrospect this is not plausible, due to the following facts:</p> +<ul> +<li>Models with the same chips sometimes have significant feature +disparity (Fantom-S with external multisamples which is not found on any +other XV-based models).</li> +<li>Only the CPU has direct access to the memory that stores patch +parameters.</li> +<li>There’s no reason for such a powererful CPU in some low-end +models.</li> +</ul> +<p>My current hypothesis is the CPU handles:</p> +<ul> +<li>control matrix mapping, preprocessing of some parameters (velocity +curves, for example)</li> +<li>voice (individual tone) allocation and parameter specification</li> +<li>effect and output routing configuration (actual routing happens in +the synth chip/DSP obviously)</li> +<li>certain LFOs (maybe? <a id="n16" href="#note16" class="note">[16]</a>). Envelopes (even less likely).</li> +</ul> +<p>This means the synth chip could contain basic blocks for various +subsystems (sample playback, modulation, effect processing, etc). +Routing among these blocks is controlled by the CPU. If you are somewhat +familiar with hardware accelerated rasterization in computer graphics, +you may find this architecture has resemblance to the old fixed function +graphics pipeline.</p> +<h2 id="tocanch31" class="tvis">Other Curious Stuff</h2> +<h3 id="tocanch32" class="tvis">SD-80 is an XV-5080 …</h3> +<p>… locked into performance mode and with samples cherry-picked by +Roland?</p> +<p>Indeed, the address mapping <a id="n17" href="#note17" class="note">[17]</a> for the SD-80 is almost +fully compatible with that of XV-5080. Even a lot of parameters that +make no sense for the SD-80 are preserved: SD-80 has a parameter to +select which wave expansion board to use, wave groups (which the SD-80 +only has one), as well as parameters for “multi-partial” patches, which +on the XV-5080 is a way to put together patches that use samples loaded +into the RAM. Only the first one has its description changed to +“reserved” in the documentation. The SD-80 doesn’t have any wave +expansion board slots hidden inside, nor does it have support for +external sample loading.</p> +<p>Of course from the form factor side of things, the SD-80 looks more +like a cut-down version of XV-5050 which is a full 1U rack unit while +the SD-80 has a 3/4 rack design. However the SD-80 does retain XV-5080’s +128 polyphony and dual XV guts.</p> +<p>What is called “Performance” in XV-5080’s address map is called +“Multitimbre” in SD-80’s address map. They have the exact same content +inside (well, not really exact – SD-80 has quite a few extra parameters +in the “Multitimbre Common” section, mainly to expose some GM2 +parameters and parameters that earlier SoundCanvases had in their +address maps). On the XV-5080, you can save the performance to one of +its 64 performance memory slots. Configuration of all 32 parts of the +synthesizer is restored from the save slot when a performance is loaded. +Just like the XV-5080, the SD-80 has a name assigned to its +“Multitimbre”, which is set to “Native Mode” upon entering its native +mode. But there are no memory slots for “multitimbres” in the SD-80, nor +is the name of multitimbre shown anywhere (either on the LCD screen, or +in the SD-80 Editor), rendering this name useless. This name is not +read-only. You can change it as you wish using system exclusive +messages, and is preserved until the next native mode reset message is +received.</p> +<p>Since the SD-80 is straight up the same when compared to the XV-5080 +in terms of synthesizer engine, and also has extremely similar MIDI +implementation <a id="n18" href="#note18" class="note">[18]</a>, the SD-80 can be seen as a +XV-5080 with locked-down samples. What the StudioCanvas series does +improve over its SoundCanvas predecessors, is its editability in native +mode, which is brought on par with its professional counterparts and +allow the user take full control of the sound for the first time +<a id="n19" href="#note19" class="note">[19]</a>. This is a huge step forward from the +lame set of a few parameters offered by earlier GS models. However there +is also stuff found in earlier models that’s no longer available in the +StudioCanvas, which we are going to touch on in a moment.</p> +<h4 id="tocanch33" class="tvis">SD-80’s sound content</h4> +<p>Only a small chunk of SD-80’s content is brand new (at least to me) – +for example, the harpsichord <a id="n20" href="#note20" class="note">[20]</a>, the clarinet, a few saxes and stereo crash cymbals. +The rest are either from other Roland products, or modified from their +existing content.</p> +<ul> +<li>The sample “Trumpet Vib” used by the now infamous Romantic Tp +(thanks to ZUN) is from SR-JV80-18 Latin expansion board. The original +sample name is “Tp Vib MariA” (or B, or less likely C) <a id="n21" href="#note21" class="note">[21]</a> There are a lot more samples for various trumpet +techniques in SR-JV80-18, particularly designed for Mexican mariachi +music. These samples are also found in SRX-09 World Collection, which +contains all samples from SR-JV80-18.</li> +<li>Acoustic drum set from the solo set is a cut down version of the +studio kit from SRX-03 Studio, which is also the source of Super +Quartet’s drums.</li> +<li>Piano patches are pulled straight from SR-JV80-09, which is also +included in SRX-07. <del>SC-8850 has the same Piano sound.</del> No it +doesn’t. It uses the stereo piano samples from XV. Thanks for Arie on +Discord to point this out.</li> +<li>Clavi is almost identical to one of the many clavi patches from +SC-8820/8850, and is likely ultimately from the JVs and SR-JV80 +boards.</li> +<li>Samples of Flute vib sound identical to those with the same name +(“Flute Vib3 A/B/C”) in SRX-03.</li> +<li>Samples of St.Brass and St.Sm Choir also come straight from +SRX-03.</li> +<li>Multiple sound effects are from earlier SC models. Some are also +used by XV-5080’s GM2 mode.</li> +<li>A lot of patches in the special sets are pulled from the XV-5080. +They use the exact same parameters, except the waveforms. If you can +find a preset with the same name as an instrument from SD-80’s special +set in the XV-5080, chances are they sound almost identical, especially +since a lot of them are analog/digital synth patches, and waveforms +don’t matter as much. There are a few exceptions – a preset with the +name “Cascade” is found in both instruments, but they have nothing in +common except the name. There are also a lot of XV-5080 “inspired” +patches: they have different names from the original XV-5080 patch, but +very similar sound design. In fact, the “Cascade” patch mentioned above +is one of these XV-5080 “inspired” patch, but you have to figure out the +original yourself as I forgot which one it is.</li> +<li>Rave Set, Rust Set and Bully Set are adapted versions of XV’s +RaveDrumSet, XV Rust Kit and XV Bully Kit respectively. The original XV +kits are not GM-compatible.</li> +<li>Multiple orchestral instruments from the contemporary set and solo +set use samples from SRX-06 (SR-JV80-02/16).</li> +<li>Bass and guitar are a mishmash from SR-JV80-09, SRX-03, SRX-07, +SRX-09 and XV-5080. Some of them are used in other Roland products. +(Fingered Bs2 vs SC-8850 Heart Bass, which is also almost identical to +Rock Bass in Super Quartet, and the sample is from SR-JV80-09).</li> +</ul> +<p>This list is far from complete. There has been extensive efforts to +map the multisamples in the SD-80 to XV-5080 and SRX multisamples. <a href="//filestorage.chrisoft.org/blog/data/SD-80/SD-80_Waveform_Comparison.pdf">Here</a> +is one made by Palto. These mappings are extremely useful if you wish to +recreate SD-80 patches with Roland’s VSTi plugins.</p> +<p>So the content of the SD-80 is actually a mixture of XV-5080, SRX +wave expansion boards, SR-JV80 boards, earlier SoundCanvas patches and +maybe a few new sounds. Reusing stuff isn’t surprising for Roland, nor +should it be considered “bad”. They’ve been known to do this <a href="https://www.soundonsound.com/reviews/roland-sc88">since the early +SC days</a>, where they used JV- and SR-JV80 expansion board sounds in +the old SC series. Evidently, the waveforms come with XV-5080 itself +include everything from the JV-2080/1080, which are in turn partially +from the JV-880, and eventually from the JD-800… I’ve also noted that +SuperQuartet has a substantial overlapping set of instruments with +SRX-03. All I want to say in this section is that if you want to get +some particular sounds from the Studio Canvas, instead of waiting for a +second-hand offering, maybe look somewhere else.</p> +<p>Since the content of SD-80 is mostly just cherrypicked XV/SRX +content, it really doesn’t need any additional praise from me. However I +think it’s worth pointing out that Roland’s samples of that era, just +like sounds from most other vendors, are heavily looped. They have loop +periods that are quite short (usually less than a second). They are also +usually heavily preprocessed. As the amount of memory used for +reproducing the instruments saw a huge boom in the 2000s, they no longer +sound downright “fake” or “plasticky” compared to romplers from a decade +ago. However when compared against huge modern sample libraries, most +instruments from these 2000s Roland romplers sound more “idealistic” +rather than “realistic”, just like your average Japanese anime girls +with unrealistically huge eyes. Not saying that such sound is bad, +though.</p> +<p>The GS sounds and XGLite sounds of the SD-80 are completely trash. +The GS sound set is pretty much just the SC-55 map in later SoundCanvas +models using SD-80 samples. The XGLite sound set however, is notably +larger than the average bottom-of-the-line Yamaha Portatones from the +early 2000s (the XGLite instrument listing in SD-80/90’s manual is +incomplete. Check my first SD-80 post for a complete list). There are +probably only 5 or so usable sounds offered in these modes in total +(most of which are in the XGLite sound set, which is kind of ironic for +a Roland sound module). It’s not worth it to switch modes just for those +sounds, especially since these modes don’t support low-level editing +like the native mode.</p> +<p>The SD-80 features 1050 instruments and 30 drum sets, which is a +significant decrease from the last generation SC-8850 (1640 instruments +and 63 drum sets). The loss of SC-8850’s ethnic and analog instruments +is a shame. But the quality of instruments does receive a general +uplift.</p> +<h3 id="tocanch34" class="tvis">More on SD-80 vs SD-90 vs +SD-20</h3> +<h4 id="tocanch35" class="tvis">What does a SD-90 have +that SD-80 doesn’t?</h4> +<p>Easy. The audio interface (together with post-processing effects) and +the large screen.</p> +<p>It is a shame that Roland didn’t implement full XV-level editability +of patches on such a large screen though.</p> +<p>SD-80 is also not capable of switching the output sample rate on its +digital audio outputs.</p> +<h4 id="tocanch36" class="tvis">What does a SD-80 have +that SD-90 doesn’t?</h4> +<p>This may come as a shocker, because the list is surprisingly +long.</p> +<ul> +<li>User instruments and user rhythm sets. <a id="n22" href="#note22" class="note">[22]</a></li> +<li>A few weird switches controlling its global state (MFX on/off, +reverb/chorus switch). They are weird because they are not affected by +the native mode reset message. These switches are also featured in the +SD-80 editor, which Roland says don’t do anything if used with an SD-90. +They are also present in the professional XV line-up.</li> +<li>Multiple outputs from the synthesizer. The SD-90 does have a +secondary output, but the internal synthesizer can only use one of them. +The SD-80 has two stereo outputs, which can also be used as four mono +outputs. This also allows the SD-80 to have…</li> +<li>Ability to output synthesizer effects to a separate bus. You can +specify the output for the internal reverb, chorus and multi-effects as +well.</li> +</ul> +<h4 id="tocanch37" class="tvis">What’s the SD-20 anyway?</h4> +<p>Turns out it’s not much.</p> +<p><a href="https://chrisoft.org/blog/post/2021-10-10.html">There’s +going to be a separate article on this.</a></p> +<h4 id="tocanch38" class="tvis">What role does MFX play?</h4> +<p>It depends. If the MFX is just some reverb, EQ, or chorus, it really +doesn’t make a whole world of difference and can be easily replaced with +basic external effects. If its an amplifier simulator, a pitch shifter, +or an auto filter, disabling MFX will result in a drastic sound change. +Plugins simulating these effects are also usually harder to come by / +more expensive. A few demonstrations of patches with and without MFX are +in the table below.</p> +<div> +<table style="position:relative;left:50%;transform:translate(-50%,0);text-align:center"> +<tbody><tr> +<th> +Patch +</th> +<th> +MFX Type +</th> +<th> +Audio demo (with MFX, then without MFX) +</th> +</tr> +<tr> +<td> +3D Crystal +</td> +<td> +Modulation Delay +</td> +<td> +<audio controls="" preload="none" src="//filestorage.chrisoft.org/blog/data/SD-80/3D_Crystal.ogg"> +</audio> +</td> +</tr> +<tr> +<td> +96 Year +</td> +<td> +Rotary +</td> +<td> +<audio controls="" preload="none" src="//filestorage.chrisoft.org/blog/data/SD-80/96_Year.ogg"> +</audio> +</td> +</tr> +<tr> +<td> +Celtic Ens +</td> +<td> +Reverb +</td> +<td> +<audio controls="" preload="none" src="//filestorage.chrisoft.org/blog/data/SD-80/Celtic_Ens.ogg"> +</audio> +</td> +</tr> +<tr> +<td> +MonoDLY Dist +</td> +<td> +Guitar Multi A +</td> +<td> +<audio controls="" preload="none" src="//filestorage.chrisoft.org/blog/data/SD-80/MonoDLY_Dist.ogg"> +</audio> +</td> +</tr> +<tr> +<td> +Oxigenizer +</td> +<td> +Keysync Flanger +</td> +<td> +<audio controls="" preload="none" src="//filestorage.chrisoft.org/blog/data/SD-80/Oxigenizer.ogg"> +</audio> +</td> +</tr> +<tr> +<td> +Quasar +</td> +<td> +Ring Modulator +</td> +<td> +<audio controls="" preload="none" src="//filestorage.chrisoft.org/blog/data/SD-80/Quasar.ogg"> +</audio> +</td> +</tr> +<tr> +<td> +Reed Romance +</td> +<td> +Enhancer +</td> +<td> +<audio controls="" preload="none" src="//filestorage.chrisoft.org/blog/data/SD-80/Reed_Romance.ogg"> +</audio> +</td> +</tr> +<tr> +<td> +Wah Ana.Clav +</td> +<td> +Stereo Auto Wah +</td> +<td> +<audio controls="" preload="none" src="//filestorage.chrisoft.org/blog/data/SD-80/Wah_Ana.Clav.ogg"> +</audio> +</td> +</tr> +</tbody></table> +</div> +<h3 id="tocanch39" class="tvis"><code>Light Load</code> vs +<code>High Load</code></h3> +<p>There is a toggle for “Light Load” mode in the driver for SD-80 on +all platforms, including Linux. What this option actually does is not +documented. The only thing I know is that in the Linux driver this is +implemented with a single <code>usb_set_interface</code> call.</p> +<p>This setting doesn’t seem to affect the synth engine, only the way +how midi data is transmitted / processed (because the drivers for UA-25 +has this option as well). Weirdly, Roland’s contemporary software +synthesizers (HyperCanvas/TTS-1, SuperQuartet, Orchestral) also have +this option.</p> +<h3 id="tocanch40" class="tvis">Block Diagram</h3> +<p>I made <a href="//filestorage.chrisoft.org/blog/data/SD-80/sd80blk_notext_o.svg">this +vectorized version</a> of SD-80’s block diagram printed on its chassis +when I was bored. You can also get a <a href="//filestorage.chrisoft.org/blog/data/SD-80/sd80blk_notext_o_nt.png">rasterized +version</a>.</p> +<h3 id="tocanch41" class="tvis">Other weird and interesting +stuff</h3> +<ul> +<li>Very few (if any) preset patches uses the modulation matrix of the +XV engine correctly. All of them has the modulation source set to +‘OFF’.</li> +<li>Only 5 of all preset patches used non-default tone structures: +“Runaway Rez”, “Purple Spin”, “FM layer”, “FM Delight”, and “Xmod EP”. +All of them are in the special sets. 3 of them are unmodified XV-5080 +patches.</li> +<li>There doesn’t seem to be a way to set the system tempo of the +SD-80/90 with MIDI messages, nor can the SD-80/90 sync its MIDI clock +with a host, rendering the system clock mostly useless. Neither of these +two is true for the XV-5080.</li> +<li>Ever wondered why some patches have seemingly nonsensical waveforms +selected in disabled tones <a id="n23" href="#note23" class="note">[23]</a>? Just look up those wave +numbers in the waveform list of XV-5080 or the corresponding SRX board! +<a id="n24" href="#note24" class="note">[24]</a> This, once again, suggests +Roland used the XV-5080 as the development platform for the +StudioCanvas.</li> +<li>From Sound On Sound’s review of the SD-90: “To me, however, USB +audio and the Sound Canvas sound set don’t add up to £799, and although +I grew to like the SD90, I’m not sure how many people will find it +attractive at this price point.” – ZUN, apparently.</li> +</ul> +<h2 id="tocanch42" class="tvis">Errata of the original post</h2> +<ul> +<li>The non-zero “modulation level” (which is actually “modulation +depth”) on the SD-80 isn’t the value of the modulation wheel itself, but +rather how deep a modulation wheel pushed all the way to the top will +modulate the sound. SD-90 also has a default value of 10 for it (“Mod +LFO Pitch Depth” in the address mapping). There’s no GM incompatibility +here.</li> +<li>Instruments sampled with vibrato are not from the XV-5080, they are +from the SRX / SR-JV80 boards. Duh.</li> +<li>XP6 <em>was</em> used in professional products. In fact, a handful +of them (XV-3080, XV-88, JV-1010 and possibly more).</li> +<li>Roland still makes romplers today. It’s a model from a decade ago. +You’ll have to guess which model it is.</li> +</ul> +<h2 id="tocanch43" class="tvis">References</h2> +<ul> +<li><a href="https://www.dtech.lv/techarticles_roland_exp.html">Roland +Wave Expansion Cards by Edward D-tech</a></li> +<li><a href="http://www.donsolaris.com/?p=404">Don Solaris’ ultimate +Roland JV/JD/XV FAQ</a></li> +<li><a href="https://www.sweetwater.com/insync/cosm/">What is +COSM?</a></li> +<li><a href="https://www.soundonsound.com/reviews/roland-xv5080">SOS +Review of XV-5080</a></li> +<li><a href="https://www.soundonsound.com/reviews/edirol-sd90">SOS +Review of SD-90</a></li> +<li><a href="https://www.soundonsound.com/reviews/edirol-sd80">SOS +Review of SD-80</a></li> +<li><a href="https://www.soundonsound.com/reviews/roland-sc88">SOS +Review of SC-88</a></li> +</ul> +</article> +</div><br><hr> + <div class="TText" id="notediv" style="font-size:80%;"><span class="TText"><a id="note1" href="#n1">[1]</a>: Judging by the way Roland +utilized the SH-3 CPU in MC-909, which has a 16MHz external clock input +and a 8x multiplier (128MHz internal clock), I would guess the CPU in +SD-80 also works at 8x multiplier and therefore 96MHz +internally.<br></span><span class="TText"><a id="note2" href="#n2">[2]</a>: Later the source of this DC bias is determined to +be SD-80 itself, not the recording device. See the next +section.<br></span><span class="TText"><a id="note3" href="#n3">[3]</a>: オールインワン・モデルSD-90でご好評いただいた、新開発MIDI音源部を搭載したマルチティンバー音源が登場。 +As seen <a href="https://web.archive.org/web/20020604015208/http://www.roland.co.jp/products/dtm/SD-80.html">here</a>. +I don’t actually know any Japanese and just pieced stuff together +randomly. Sorry if I butchered your language.<br></span><span class="TText"><a id="note4" href="#n4">[4]</a>: Munt isn’t strictly an emulation. It doesn’t emulate the CPU +or actual circuitry of the MT-32. See below.<br></span><span class="TText"><a id="note5" href="#n5">[5]</a>: without Roland losing their mind and releasing all +internal documentation on the XV engine, or some absolute madlad +spending 15 hours everyday on reverse engineering the thing for half a +year, that is.<br></span><span class="TText"><a id="note6" href="#n6">[6]</a>: SD-80 has 32MiB of compressed wave ROM, see the “list of +integrated circuit chips on SD-80 main board” in the first section. +Roland’s waveform compression scheme usually results in a ~50% +compression ratio. Therefore the content is roughly equal to 64 MiB of +uncompressed 16-bit PCM wave.<br></span><span class="TText"><a id="note7" href="#n7">[7]</a>: The “23C128” kind of gave it away – +they are the <code>μPD23C128040ALGY</code> mask ROM chips from NEC, +which is the exact same type of ROM used in XV-5080. Unlike the XV-5080 +though, the SD-80 makes use of both its J variant and K variant, while +the XV-5080 only uses the J variant (these variants have symmetric pin +configuration). <br></span><span class="TText"><a id="note8" href="#n8">[8]</a>: Well, the +Raspberry Pi isn’t really suitable for this task because it doesn’t have +enough GPIO pins. But there’s an easy workaround for that.<br></span><span class="TText"><a id="note9" href="#n9">[9]</a>: For readers who wonders what “mask” means in +this context: you can treat a mask ROM as a huge array of tiny switches +that can’t be turned on or off once manufactured. You can access the +state of a group of switches by giving an address to its input pins. The +mask is used as a template of the states of these switches during the +manufacture process. This is electrical engineering amateur Chris trying +to explain mask ROM in layman’s terms.<br></span><span class="TText"><a id="note10" href="#n10">[10]</a>: HyperCanvas (HQ-GM2) or Cakewalk TTS-1, which is a rebranding +of the former; SuperQuartet (HQ-QT) and Orchestral (HQ-OR). A plugin +called GrooveSynth (P5antom) bundled with several earlier Cakewalk +products providing patches from the MC-303 Groovebox also uses this +engine.<br></span><span class="TText"><a id="note11" href="#n11">[11]</a>: which is kind of weird considering +Spectrasonics basically spun off from Roland<br></span><span class="TText"><a id="note12" href="#n12">[12]</a>: Also used in XP-80, see the errata +section of its service manual.<br></span><span class="TText"><a id="note13" href="#n13">[13]</a>: HD64F7017F28, SH7017 in parts +list<br></span><span class="TText"><a id="note14" href="#n14">[14]</a>: 40 of the +90 types will take up all three slots, most likely due to the reduced +DSP power.<br></span><span class="TText"><a id="note15" href="#n15">[15]</a>: Support for multisamples also exist in Fantom +S/S88, so this is more likely due to an updated system software rather +than changes of the synth engine.<br></span><span class="TText"><a id="note16" href="#n16">[16]</a>: There is evidence that some of them +are handled by software (SD-80 having one more LFO per part than the +XV-5080). However it can also be using LFO blocks in the XV chip that is +unused in the XV-5080.<br></span><span class="TText"><a id="note17" href="#n17">[17]</a>: This mapping is used for +DT1/RQ1 system exclusive messages.<br></span><span class="TText"><a id="note18" href="#n18">[18]</a>: The first half is also true for earlier SC +models (SC-55 <-> JV-880, SC-88 <-> JV-1080, SC-88Pro +<-> JV-2080, SC-8850 <-> XV-3080). However the second half +isn’t. Earlier SC models employs a GS-specific address map which looks +nothing like their counterparts.<br></span><span class="TText"><a id="note19" href="#n19">[19]</a>: And also the last time, since neither the SD-20 nor the SD-50 +has such editability.<br></span><span class="TText"><a id="note20" href="#n20">[20]</a>: Apparently it’s from the +SC-8850.<br></span><span class="TText"><a id="note21" href="#n21">[21]</a>: The +multisample from Roland Cloud seem to have an extra sample in the +highest register, which sounds like it’s processed with a low-pass +filter with very low cut off frequency and makes it sound like garbage. +This is also the case for the version included in the original SRX-09 +boards.<br></span><span class="TText"><a id="note22" href="#n22">[22]</a>: The owner’s manual +of the SD-80 contains blatant lies. It says “It is not possible for the +edited sounds to be saved in the internal memory of the SD-80” (which is +directly copied from SD-90’s manual), and goes on to teach you how to +save a user patch.<br></span><span class="TText"><a id="note23" href="#n23">[23]</a>: For example, nearly all acoustic +bass patches have a disabled tone with wave number 249 “TenBlwSaxVib” +selected, and the Fiddle 2 vib patch have a disabled tone with wave +number 276 “Blow Pipe” selected.<br></span><span class="TText"><a id="note24" href="#n24">[24]</a>: Wave #249 in XV-5080 is UprightBs 2A, and Wave #276 in SRX-09 +is Fdl Pizz 1C (Fiddle Pizzicato).<br></span></div> + <div id="insanch" style="height:3em;"></div> + <div id="footer" style=""> + <div id="pagesw" class="TText" style="width:100%;height:0.5em;"></div> + <div style="text-align:center;" class="TText"> + Proudly powered by SSBS <reduced style="font-size:70%;">(the static stupid blogging system)</reduced> 2.5 + <br> + Content licensed under CC BY-SA 4.0. <span id="purgep" style="display:none;font-size:70%;">This page has passphrase(s) stored. Click <a href="javascript:_purgep()">here</a> to purge.</span> + </div> + </div> + <div id="cmdbuf" class="TText" style="transition:500ms;padding:1em;font-size:2em;color:white;position:absolute;background-color:rgba(0,0,0,0.6);left:50%;top:50%;transform:translate(-50%,-50%);pointer-events:none;opacity:0;"> + </div> + </div> + <div id="decryptui" style="display:none;opacity:0;color:white;z-index:1000;position:fixed;left:0;top:0;width:100%;height:100%;background-color:rgba(0,0,0,0.4);transition:opacity 0.5s;"> + <div id="decryptdlg" class="TText" style="padding:10px 20px;position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);background-color:rgba(0,0,0,0.6);"> + <div id="keyhint" style="margin-bottom:8px;"></div> + <div style="margin-bottom:8px;">Key: <input id="keyinp" type="text" style="color:#fff;"></div> + <div style="height:2.25em;"> + <button id="btndecrypt" onclick="decryptor(decid,document.getElementById('keyinp').value);" style="position:absolute;left:20px;">Decrypt</button> + <button onclick="hidedecryptui();" style="position:absolute;right:20px;">Cancel</button> + </div> + + </div> + + +</div></body></html>
\ No newline at end of file |