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, 0 insertions, 2522 deletions
diff --git a/blog/post/2020-11-20.html b/blog/post/2020-11-20.html
deleted file mode 100644
index 938ebf5..0000000
--- a/blog/post/2020-11-20.html
+++ /dev/null
@@ -1,2522 +0,0 @@
-<!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