summaryrefslogtreecommitdiff
path: root/blog/post/2020-11-20.html
diff options
context:
space:
mode:
Diffstat (limited to 'blog/post/2020-11-20.html')
-rw-r--r--blog/post/2020-11-20.html2522
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 &amp; 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 &lt;= 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&amp;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 &nbsp;&nbsp;
+</td>
+<td>
+&nbsp;&nbsp; 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 &amp; 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 &amp; 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 &amp; 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 &amp; 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 &amp; 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 &amp; 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 &amp; 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 &amp; 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 &lt;-&gt; JV-880, SC-88 &lt;-&gt; JV-1080, SC-88Pro
+&lt;-&gt; JV-2080, SC-8850 &lt;-&gt; 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