summaryrefslogtreecommitdiff
path: root/blog/post/2020-11-20.html
blob: 245b88d5b154a4255c5009c781e74dbeefa211b7 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
<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</title>
<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"><code>Light Load</code> vs <code>High Load</code></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)';
    b.innerHTML=dd.getAttribute('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>
<div style="text-align:center;max-width:90%;">
<a href="//filestorage.chrisoft.org/blog/img/sdp2_volbrd_fixattempt.jpg"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1536x1536_sdp2_volbrd_fixattempt.jpg"></a> <br>My terrible SMD soldering
</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="" src="//filestorage.chrisoft.org/blog/data/SD-80/AMEDLEY.SD80.N.ogg">
</audio>
</td>
<td>
<audio controls="" 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="" src="//filestorage.chrisoft.org/blog/data/SD-80/YOSEMITE.SD80.N.ogg">
</audio>
</td>
<td>
<audio controls="" 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="" src="//filestorage.chrisoft.org/blog/data/SD-80/passport_Driving.sd_pretending_to_be_xv.ogg">
</audio>
</td>
<td>
<audio controls="" 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
</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
</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. It is <strong>not</strong> based on analysis of the actual chip, but instead 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.</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.</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.</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.</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. SC-8850 has the same Piano sound.</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 sounds identical to the one with the same name (“Flute Vib3 A”) 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>There’s going to be a separate article on this.</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="" 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="" 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="" 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="" 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="" src="//filestorage.chrisoft.org/blog/data/SD-80/Oxigenizer.ogg">
</audio>
</td>
</tr>
<tr>
<td>
Quasar
</td>
<td>
Ring Modulator
</td>
<td>
<audio controls="" src="//filestorage.chrisoft.org/blog/data/SD-80/Quasar.ogg">
</audio>
</td>
</tr>
<tr>
<td>
Reed Romance
</td>
<td>
Enhancer
</td>
<td>
<audio controls="" 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="" 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>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 are 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></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>