Nuked-SC55
Nuked-SC55 copied to clipboard
Emulating the stairstepping of the original DACs
This is something that may not be able to be satisfactorily accomplished with a software implementation, and likely not relevant to anyone but the nerdiest of audiophile nerds, but I thought I'd mention it:
The original DACs for these devices (NEC UPD63200 and the NEC UPD6376) did stair-stepping for the output:
(logic analyzer traces from the DAC on a SC-55mk2; digital PCM input on top, DAC analog output on the bottom)
This is unlike modern DACs, which interpolate between samples for nice smooth waveforms. So, the audio output of a real SC-55 would sound a bit crunchier than the audio output of this emulator going through a modern DAC.
One option that I can think of that might be able to be done in a software implementation to emulate this behavior would be to resample to a much higher sample rate (like 384k) and ensure that the samples are just straight up copied instead of interpolated. Of course, this would only be an option if the user had a sound card that supported high sample rates, and we would still have to deal with the weird sample rate (66.207khz) of the mk2 by interpolating the bare minimum amount of samples to get it to an integer ratio with the higher sample rate. Anyone else have ideas or suggestions on this?
While having accurate emulation is good, I do think some things should be left behind in the original hardware
I wouldn't say accurate emulation is bad. But I have to differ this suggestion because accurate DAC is often done for very cheap gear (like videogame hardware) which such low-end DACs or specifications defines the music produced in them (in other words, it has a musical/sound design purpose), an musical example of this would be Roland D-50, which the low quality of it made the presets specifically designed based on those low specs. (https://youtu.be/nqiMU8p4PH4 https://youtu.be/VggsB5eZ0oM)
This is not the case for SoundCanvas due to being a "prosumer" product (it was conceived as a professional musical instrument, and that in later revisions, they were increasing the quality of the DAC because it is for music production).
You can see this review from 1991 by a magazine dedicated to music gear, which says:
WHAT'S NOT TO LIKE? Are there any reasons not to like the Sound Canvas? Scant few. The unit is a little noisy, with a white-noise tail plus a very small bit of 'grunge' at the very end which hangs on the end of every sound. https://www.muzines.co.uk/articles/roland-sc55-sound-canvas/7496
I bet that in the hardware there is some analogue output circuits to smooth this out nearly 100%.
I bet that in the hardware there is some analogue output circuits to smooth this out nearly 100%.
perhaps; I haven't tested the audio output from the RCA jacks with a scope yet. Here's the schematic for the analog circuit attached to the DAC (far left, IC9, UPD63200)
I would be very surprised if the output stage LPF of the SC55 doesn't de-alias those steps completely tbh, so if you can please measure from the RCA output, curious about the result!
That said, I'm also pretty sure that the analog output stage introduces some harmonic distortion, noise and frequency boost that would be cool to replicate. The MUNT MT-32 emulator emulates it using a FIR impulse response (https://github.com/munt/munt/blob/master/mt32emu/src/Analog.cpp#L35), which could be simple to implement for the SC-55 as well. It should be enough to use the DAC to produce a sine sweep and use a deconvolution tool to get the IR. I can try to do that for my JV-880.
I've plotted the frequency response of an ideal zero-order hold DAC up to its 4th Nyquist zone. (If I didn't make any mistakes) Also from the schematic assuming the filters are two ideal 1st order LPF with 72.3 kHz, 111 kHz cutoff frequency each I think the effects to the audible spectrum is minimal. (Probably to reduce interference from the much higher harmonics when connected to a long cable)
I've had thoughts on how to simulate zero-order hold DACs in the past, but I'm not sure whether the frequency droop due to DAC, or the second Nyquist zone component from 16 to 20 kHz is noticeably audible. Or if it is audible whether such post-processing should be considered within the scope of bit- or cycle-accurate emulators.
#!/usr/bin/env python3
import numpy as np
import scipy.signal
import matplotlib.pyplot as plt
fs = 66207/2
f = np.linspace(0, 2*fs, 1024)
# Zero-order hold
zh = np.sinc(f/fs)
# Output filter response
fc1 = 1/(2*np.pi*22e3*100e-12)
fc3 = 1/(2*np.pi*12e3*120e-12)
h1 = 1/(1 + 1j*f/fc1)
h3 = 1/(1 + 1j*f/fc3)
h = h1 * h3
# Plotting
plt.plot(f, 20*np.log10(np.abs(zh)), label='DAC Ideal Zero-order Hold')
plt.plot(f, 20*np.log10(np.abs(h)), label='Output filter')
plt.plot(f, 20*np.log10(np.abs(zh*h)), label='Combined Output')
# Annotations
for i in (1, 2, 3):
plt.plot([fs/2*i, fs/2*i], [-50, 10], '--k')
plt.xlabel('Frequency [Hz]')
plt.ylabel('Filter response amplitude [dB]')
plt.grid(True)
plt.ylim(-50, 10)
plt.legend()
#plt.xscale('log')
plt.show()
IMHO, such thing is outside the scope and most importantly the main goal of this project, which aims to achieve bit-perfect output of the digital circuit and doing so with using hard-evidence based on decapping of the PCM chip, otherwise it can be done based on educated assumption what the PCM chip is supposed to do (similarly how MAME Yamaha SWP00 emulator is done or even what the old "emusc" project is trying to do). so, adding on top of that what the DAC chip is supposed to do (and even the analog circuit after that) based on educated assumptions defeats the whole purpose of the PCM chip decapping.
IMHO, such thing is outside the scope and most importantly the main goal of this project, which aims to achieve bit-perfect output of the digital circuit and doing so with using hard-evidence based on decapping of the PCM chip, otherwise it can be done based on educated assumption what the PCM chip is supposed to do (similarly how MAME Yamaha SWP00 emulator is done or even what the old "emusc" project is trying to do). so, adding on top of that what the DAC chip is supposed to do (and even the analog circuit after that) based on educated assumptions defeats the whole purpose of the PCM chip decapping.
Because of this, I request this issue to be closed.
IMHO, such thing is outside the scope and most importantly the main goal of this project, which aims to achieve bit-perfect output of the digital circuit and doing so with using hard-evidence based on decapping of the PCM chip, otherwise it can be done based on educated assumption what the PCM chip is supposed to do (similarly how MAME Yamaha SWP00 emulator is done or even what the old "emusc" project is trying to do). so, adding on top of that what the DAC chip is supposed to do (and even the analog circuit after that) based on educated assumptions defeats the whole purpose of the PCM chip decapping.
Because of this, I request this issue to be closed.
agreed
IMHO, such thing is outside the scope and most importantly the main goal of this project, which aims to achieve bit-perfect output of the digital circuit and doing so with using hard-evidence based on decapping of the PCM chip, otherwise it can be done based on educated assumption what the PCM chip is supposed to do (similarly how MAME Yamaha SWP00 emulator is done or even what the old "emusc" project is trying to do). so, adding on top of that what the DAC chip is supposed to do (and even the analog circuit after that) based on educated assumptions defeats the whole purpose of the PCM chip decapping.
Pretty much the issue here is we are emulating a device that is meant to be profesional, unlike other emulations.
We should think the Nuked SC-55 as a SC-55 with digital audio output (and that's what people actually want, people wanted the SC-55 to sound high quality, CD quality level music from their devices).
If people want to try to emulate the DAC, I have no problems with it, is just this is kind very niche and doesn't make much sense in practice imho.
It reminds me when people went from analog to digital audio recording in early 70s, and they seen that as a positive thing.
It would be something like this with this emulator, the fact we can output totally clean audio is a positive thing, not something to be "fixed" as such in most cases.
If people want to try to emulate the DAC, I have no problems with it
I don't have problem with it in general, but my point is Nuked-* emulators are always based on decapped chips and thus on hard-evidence how the emulated chip(s) exactly work. so, even as approach current DAC proposal is not conceptually compatible with this project - I mean, at least I make huge difference between "educated guesses" how it's supposed to work and derived work from a decap chip. So, if someone wants to decap the DAC and make code that exactly emulates its work, then it can be added to this project as an option, but otherwise, if it will be work based on educated guesses how the DAC is supposed to work - then it's just not its place to be in Nuked-* emulator. of course, everyone is free to fork the open-source code and make a branch with DAC guesstimation there.
If people want to try to emulate the DAC, I have no problems with it
I don't have problem with it in general, but my point is Nuked-* emulators are always based on decapped chips and thus on hard-evidence how the emulated chip(s) exactly work. so, even as approach current DAC proposal is not conceptually compatible with this project
Yeah, I understand the point, but also I wanted to explore the issue based on a musical perspective too. There's not much gain emulating a DAC from that perspective.
There is one thing to be perfectly emulated and an other to emulate perfectly authentic. Like waterfalls in sonic games are made in a way to look good on crts, the midis we listen to are made on this, imperfect, analog, hardware. So to make it perfect instead of authentic changes conditions in a way that the midis might not sound "as the composer intended".
I can agree though that it might be out if scoop.
I also fail to find where nukeykt declares is intensions for this project. Good that we have people here that can speak for them.
-
The audio is already a bit crunchy like the original units were. You can hear it when listening through good headphones. I'd say that a lot of the character of the original has been preserved. This would be a result of mid 90s digital signal processing, an issue of managing limited processing resources, not DAC related.
-
The idea that actual stair stepping was in the analog output is unlikely. Something in this analysis is wrong, the output character would be far different from what everyone knows as the SC55 sound, if it were, and given the available tech in the mid-90s, DACs that were able to fully reconstruct a continuous waveforms were readily available, even relatively cheaply. So you would have to argue that Roland chose ultra budget components for a professional device which is unlikely.
This would be a result of mid 90s digital signal processing, an issue of managing limited processing resources, not DAC related.
I very much agree with that, I think that when people are discussing about how "a synth sounds good because of the DAC" they are most of the times wrong, as DACs are always designed to be as accurate as possible.
That said, I'm measuring the output of the JV880 vs the emulated one (I don't have an SC55 but they are very close) and I can hear some difference. Not really stair stepping, but the frequency response is different probably due to the design of the output amplifier and LPF filter.
I tried to check the difference with a matching EQ in Logic Pro and I got the following results:
You can see how the real unit has some level of analog EQ in the output stage, mostly increasing the low and high end. Reproducing that in software could be very easy and could make the emulator sound even closer to the original, especially if it becomes a feature that the user can opt out from.
I would be very surprised if the output stage LPF of the SC55 doesn't de-alias those steps completely tbh, so if you can please measure from the RCA output, curious about the result!
It doesn't!
Hooked it up to my digital scope, captured at 50Mhz:
Here's the output of the sine wave from the sound test, which makes it a bit more obvious:
I'd do a comparison vs. Nuked SC-55 coming from my PC's sound interface for the sine wave, but I can't seem to get it into test mode.
Edit: Nvm, here it is, DAC at 48khz, Zoom U-44 audio interface.
seems like this may very well need to be done after all, then.
If people want to try to emulate the DAC, I have no problems with it, is just this is kind very niche and doesn't make much sense in practice imho.
Just to add something about this. I made a very vulgar test with a hardware SC-55mkII raw recorded midi file vs Nuked SC-55 and switched between them, blind.
It's basically a WAV vs OGG case (or whatever high quality lossy compression format), the differences are entirely psychological, to the point that you have to use absurdly specialized equipment in order to be able to pick up the differences.
There is one thing to be perfectly emulated and an other to emulate perfectly authentic. Like waterfalls in sonic games are made in a way to look good on crts, the midis we listen to are made on this, imperfect, analog, hardware. So to make it perfect instead of authentic changes conditions in a way that the midis might not sound "as the composer intended".
This is false for the SC-55, there's no equivalent of "waterfall effect" in the SC-55 because all of it is digital and played through digital gear pretty much the CC values and the way those are synthesized are the same. The way the patches were programmed are the same, and so on. This argument could be applied to the official Roland's plugins instead which has a worse emulation in comparison which indeed changes the intention of composer, but not for the case of Nuked SC-55. The intention of the composer are in the digital algorithms of the SC-55, not in the DACs, this is not a videogame chip where composers made some hardware tricks to enhance certain things (4-bit PCM in SID, ladder DAC effect in Genesis' FM chip, ...)
And as I said earlier, the audio differences between hardware and emulated are practically unaudible, and of course, the composers cannot heard these effects (because these composers used high-end gear to playback the SC-55, a very clean output) and therefore the DAC effect was totally ignored for their compositions because in a musician perspective it was an imperfection of the device and not a feature.
i'd think you'd be able to hear a difference in the sine wave tests between real hardware and the emulator. i agree it would probably be hard to hear a difference for most stuff, but there's a certain character to the "charang" at pretty low pitches that i hear on every version of VSC, sound canvas va, and the ms samples that seems to be missing in nuked-sc55. and i made a dance cover midi file of automatic lover that actually depended on this, using the charang patch to do an imitation of the words "automatic lover" that you could kinda hear. i of couse don't have a real sc55 to play the midi back on.
was the charang sample updated at some point between sc55 and sc8820? I know some of the samples from the MS set were lifted from sc-88 and not sc-55, but i don't know which ones.
was the charang sample updated at some point between sc55 and sc8820? I know some of the samples from the MS set were lifted from sc-88 and not sc-55, but i don't know which ones.
SC-55 patches are very different in terms of synthesis in later models, and if you're comparing it with the SC8820, well, SC8820 is so different to the original SC-55 even if are "the same patches" we have this issue with the people that are into sample finding.
but there's a certain character to the "charang" at pretty low pitches that i hear on every version of VSC, sound canvas va, and the ms samples that seems to be missing in nuked-sc55.
This is called sample interpolation, these emulations from VirtualSoundCanvas, SoundCanvasVA and Microsoft Synthesizer, all of them use linear interpolation in the samples, which is considered a low quality interpolation and not used in profesional environment (it's used to save CPU resources). So yeah, you made a midi file based on a innacurate representation of a SoundCanvas.
PS: iirc SCVA does use linear interpolation but during 32kHz output, not in the samples.
actually, i tried again, and sound canvas va in sc-55 mode pretty much sounds the same as nuked with my midi after all.
but pretty much every soundfont i've found as well as every other sound canvas imitation softsynth has a dropoff in the high frequency as if the charang was filtered a bit, possibly due to use of a lower sampling rate to save space.
there's also the fact that the chorus and reverb of fake sound canvas is wrong. my 127 reverb and chorus on bank 1 variation sounds quite different on sondu canvas va and nuked sc-55, versus the soundfonts and earlier VSC.
here's the midi file. automatic_Lover.zip
actually, i tried again, and sound canvas va in sc-55 mode pretty much sounds the same as nuked with my midi after all.
Set your SCVA in "SC-55 mode" to preset 49 (Strings) and you will find a surprise
Spoiler: is not even the same instrument as the original SC-55
i know there are differences between the samples even in compatibility modes, but my point is that this wasn't my problem after all. just that the soundfonts and earlier softsynths were wrong, and i would need to add some TVF NRPN to actually fix it on a real SC.
Nice to see that after like 5 pages of detailed technical speculations some people actually listened to the analog output with their ears too 😏
The analog stages or whatever extra circuitry is after the digital stages definitely impact the sound you actually hear coming out of the unit. I could hear this difference when comparing my SC-55 mk2 real hardware recordings with the SCVA, and the results are very similar with the NukedSC55.
All my recording are available, check links in my article: https://blog.johnnovak.net/2023/03/05/grand-ms-dos-gaming-general-midi-showdown/
The differences are quite audible in full spectrum, busy audio with lots of bass, high end, and lots of sharp transients, aka drums. The Shadow Warrior soundtracks and the System Shock intro tune are perfect examples. So yeah, hard-hitting rock and electronic styled music is where you hear the analog ouput being fuller, better, more exciting.
With orchestral tracks, sparse tracks with acoustic instruments, or anithing without deep bass and drums, you won't hear much of a difference. But on rock/electro the bass and the spikey transients cause some pleasant subtle distortion in the analog stages. You can hear this as extra fatness, sparkle, and "more 3D-ness" because of the added harmonics caused by these subtle distortions.
Do note my overdrive tests in my article. E.g. the Shadow Warrior soundtrack starts clipping the analog stages with the output volume set to around 10 o'clock. This is clearly visible on the recorded waveforms. You can actually turn the volume up to 3 o'clock and it still sounds very good, even better! But the waveform starts looking like a fat sausage with the spikey transients chopped off. That's analog magic for ya 😎 Sound engineers all over the world have been using analog saturators to make the signal more interesting since the 60s. Digital recreation of these analog saturators are highly sought after and very common in digital music production (Google "saturator plugin daw"l.
The real sound of the unit is with these characteristics. But accurately emulating these are hard, super expensive, and a bit pointless because you can approximate it with some multiband saturator/distortion plugin to add some overdrive to the lower frequency bands.
People designed audio devices as systems in the 80s/90s, and the analog characteristics were taken into account in these systems consisting of both digital and analog parts. The SC-55 of course continues that tradition, being a product of the early 90s and building on Roland's expertise of designing similar digital-analog hybrid systems. The digital output of many 89s/90s synths sound cold and sterile versus their analog out. Many studio guys prefer the analog out, as that's the real sound of the device.
Anyway, that's probably out of scope for the project at this stage. Accurate analog circuit emulation would be way overkill, but slapping on a multiband saturator with some nice presets would do the job to get closer to the real sound. But that's the last missing 5-10%, to be fair 😎
Peace 🖖🏻
@johnnovak agreed, I could hear a clear difference and even measure it as proved with the frequency response chart I posted before. Do you think that an approximation with an impulse response could yield some results? The idea would be to create it playing a sine sweep through the sound chip in the real device recording the audio output.
@giulioz A static EQ curve an impulse response can provide is better than nothing, I guess, but saturation is a non-linear process, and that is what is responsible for 90% of the analog sound here.
So what I'd do is to simply use a multiband distortion/saturator plugin and tweak it by ear to taste. That's the shortest path to the goal in this case, just to approximate it. I've been using the multiband saturator from the iZotope Ozone mastering plugin suite with great success on my own music to bring in some "analog fatness". Most often a tasteful distortion of the low mids mixed back to the original signal in abou 10-15% amount does the trick.
So yeah, you can emulate non-linear complex distortions on full program materials with EQ curves, and doing this "scientifically" is pretty hard because of its non-linear nature (test signals won't tell you much how the saturation colours the sound on full program material).
If you think about it, the EQ curve so to speak is dynamic; you'll get very minimal saturation on orchestral material with no deep bass. But on electro and rock tracks, the deep bass will drive some parts of the analog stages into slight overdrive, which will add... not bass, but harmonics, so extra high mids and top end!
No standard EQ or impulse response will do that. Plus this is deep in psychoacoustics territory where we're dealing less with science and technical parameters and more with art and human perception. I'd say musical equipment designers use electronic circuitry a bit like an artist a colour palette. Lots of technically OK solutions on paper, but the real test is not the measurements, but how does it sound to a human.
So... tweak by ear until it sounds close enough 😎
It reminds me when people went from analog to digital audio recording in early 70s, and they seen that as a positive thing.
You interviewed the wrong people then 😄
People were initially shocked as fuck how sterile and cold 100% early digital productions sounded. Remember AAD, ADD, and DDD? Maybe DDD was OK for classical, but definitely not anything with bass and drums in it.
People are still searching for the "holy grail" of recreating the analog magic in the digital realm to this day.
Digital is the best reproduction and archival medium (probably), but that is its weakness for creative work: it lacks "colour" and "artifacts" that makes analog synths and audio gear so exciting to use.