Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Emulating the stairstepping of the original DACs #50

Open
nikitalita opened this issue Apr 18, 2024 · 55 comments
Open

Emulating the stairstepping of the original DACs #50

nikitalita opened this issue Apr 18, 2024 · 55 comments

Comments

@nikitalita
Copy link
Contributor

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:

image
(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?

@Axis4s
Copy link

Axis4s commented Apr 18, 2024

While having accurate emulation is good, I do think some things should be left behind in the original hardware

@michael02022
Copy link

michael02022 commented Apr 18, 2024

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

@Burrito78
Copy link

I bet that in the hardware there is some analogue output circuits to smooth this out nearly 100%.

@nikitalita
Copy link
Contributor Author

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)
image

@giulioz
Copy link
Contributor

giulioz commented Apr 18, 2024

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!
image

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.

@myon98
Copy link
Contributor

myon98 commented Apr 18, 2024

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.

dac-freq-resp

#!/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()

@matt713
Copy link

matt713 commented Apr 18, 2024

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.

@Grieferus
Copy link

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.

@Axis4s
Copy link

Axis4s commented Apr 18, 2024

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

@michael02022
Copy link

michael02022 commented Apr 18, 2024

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.

@michael02022
Copy link

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.

@matt713
Copy link

matt713 commented Apr 18, 2024

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.

@michael02022
Copy link

michael02022 commented Apr 18, 2024

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.

@Karmeck
Copy link

Karmeck commented Apr 19, 2024

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.

@markanini
Copy link

markanini commented Apr 19, 2024

  1. 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.

  2. 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.

@giulioz
Copy link
Contributor

giulioz commented Apr 19, 2024

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:

image

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.

@nikitalita
Copy link
Contributor Author

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:
image
image

@nikitalita
Copy link
Contributor Author

nikitalita commented Apr 21, 2024

Here's the output of the sine wave from the sound test, which makes it a bit more obvious:
image

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.

Logic_cRdAGPEM5H

@zaphod77
Copy link

seems like this may very well need to be done after all, then.

@michael02022
Copy link

michael02022 commented Apr 25, 2024

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.

@zaphod77
Copy link

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.

@michael02022
Copy link

michael02022 commented Apr 25, 2024

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.

@michael02022
Copy link

michael02022 commented Apr 25, 2024

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.

@zaphod77
Copy link

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

@michael02022
Copy link

michael02022 commented Apr 25, 2024

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

@zaphod77
Copy link

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.

@johnnovak
Copy link

johnnovak commented May 2, 2024

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 🖖🏻

@giulioz
Copy link
Contributor

giulioz commented May 2, 2024

@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.

@johnnovak
Copy link

johnnovak commented May 2, 2024

@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 😎

@johnnovak
Copy link

johnnovak commented May 2, 2024

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.

@markanini
Copy link

I would be harder for me to accept two statements to be true at the same time.
"A mid-1990s Roland digital synth module has warmth and character in it's outputs akin to a current day saturator plugin."
"Digital is cold and sterile"

@johnnovak
Copy link

johnnovak commented May 3, 2024

I would be harder for me to accept two statements to be true at the same time. "A mid-1990s Roland digital synth module has warmth and character in it's outputs akin to a current day saturator plugin." "Digital is cold and sterile"

Trust your ears 😎 Unless you have a SPDIF jack at the back of your head, what you're listening to had to go through some analog stages somewhere 😏

@matt713
Copy link

matt713 commented May 3, 2024

ok, I want to ask - In your opinion (the people commenting here) what is the "authentic" or "true" or whatever SC-55 analog sound? I am asking this, considering Roland used the same Digital board (RLP-XYZT, e.g. RLP-3037) in literally countless number of products with different DACs and designs: CM-300, CM-500, MT-200, JW-50 just to name a few and then - are they all in your eyes (or should I say "ears") a "lesser" SC-55 GS synthesizer?! Also, CM ("Computer Module") series of devices are reported to be the only giving proper compatibility with number of games, at least based on the following posts (I haven't tested/investigated it myself):

https://www.vogons.org/viewtopic.php?p=1110160#p1110160

https://www.vogons.org/viewtopic.php?p=1092925#p1092925

I don't know about CM-500, but CM-300 is using Burr-Brown DAC - I guess then even it has excellent DOS/Games compatibility according to the discussion here it's worse SC-55/GS Synth, because it doesn't use "stair-stepping" NEC UPD63200 or NEC UPD6376 DAC as some of the other SC-55 units. Do I understand right, because at least I am lost in the exact purpose of this discussion?

@giulioz
Copy link
Contributor

giulioz commented May 3, 2024

@matt713

No, it's not about stair stepping at all, which is instead only the product of a wrong measurement. What is being discussed here is the analog output stage of the different devices.

It's not about the SC-55 specifically. Every single Roland device that has an analog output has at least a DAC, an amp and a series of filters/EQ, from the MT-32 to the SC-series to the CM-series, ALL of them. The goal of those components is to transform the digital bits to a voltage audio signal that can be put into amplified speakers. While the digital emulation does 95% of the job, there is still a tiny bit of sound character that gets lost in emulation because of those missing components.

Imagine emulating a Nintendo NES perfectly but showing the digital video output only. It would be technically accurate, but it would lose all the smoothing effect of the composite video output and the CRT-look, which is the thing that the developer expected to have in the final result.
What we are talking about here though is audio: aliasing in high frequencies, harmonic distortion, background noise. Having those would make the emulation "less precise", but much closer to the experience that you would get with the real deal.

The discussion here is: should this emulator only precisely reproduce the digital behavior, or should it also reproduce those effects? And if so, what's the depth in which this should be done? Because compared to the digital part, for this there is absolutely no "right" way to do it. A simple EQ could be implemented or it could go as far as emulating every transistor, resistance and capacitor (not happening lol).

And this would not be a first: the MUNT emulator for the MT-32 takes care of analog emulation as well, which is approximated using a FIR filter: https://github.com/munt/munt/blob/master/mt32emu/src/Analog.cpp

@johnnovak
Copy link

johnnovak commented May 3, 2024

ok, I want to ask - In your opinion (the people commenting here) what is the "authentic" or "true" or whatever SC-55 analog sound?

Did you listen to my recordings? Do you hear the difference? That's my answer—listen to the recordings, and hear it for yourself 😄

People went into the woods here with all sorts of theories, which they came up with by just staring at circuit diagrams, etc. Until @giulioz posted his experiences of actually listening to the device!

The idea is that you can get the digital emulation perfect, bit perfect in fact, but still not get 100% the sound of the device. The idea is very simple: treat it as a black box. When listening to the emulator, does it give you the same sound as the hardware box? Yes or no? As I see (hear 😄) it, the digital only emulation gets you about 90% there, depending on the program material. Which is very good. But on tracks like the System Shock intro, the Shadow Warrior soundtrack, etc, so any "busy" material with deep bass and hard hitting drums, the digital only emulation simply sounds a bit wimpy.

No fatness, no 3D-ness, no "weight" to the bass. So yeah, "wimpy" is the scientific term 😎

The SCVA suffers from the same problem—it's a digital-only recreation. This is a well-known problem in musician circles, many soft-synths or recreations of real synths in the digital realm just sound weak and wimpy when they only emulate the digital parts.

So I guess the point here is it would be nice to fully emulate the sound of the SC-55 for posterity.

But sure, the 90% results are still very useful, and so it the SCVA, which is digital-only. But there's room for improvement.

Of course, if you listen A/B my recordings on laptop speakers or a $20 earbud, probably they will sound "the same". But they're definitely not the same in studio headphones or better quality gear. It could also be that people with untrained ears won't hear the difference. But me and @giulioz are musicians, so we certainly do (I assume you are @giulioz; not many people dare to fire up Logic Pro who aren't 😎).

@johnnovak
Copy link

johnnovak commented May 3, 2024

The discussion here is: should this emulator only precisely reproduce the digital behavior, or should it also reproduce those effects? And if so, what's the depth in which this should be done? Because compared to the digital part, for this there is absolutely no "right" way to do it. A simple EQ could be implemented or it could go as far as emulating every transistor, resistance and capacitor (not happening lol).

And this would not be a first: the MUNT emulator for the MT-32 takes care of analog emulation as well, which is approximated using a FIR filter: https://github.com/munt/munt/blob/master/mt32emu/src/Analog.cpp

And so does reSIDfp, various Amiga emulators, and my own analog output filter emulations I added to DOSBox Staging. All attempt to emulate analog filtering and distortions to various degrees and the pecularities of the DAC / analog stage. E.g., the Amiga outputs basically square waves at MHz rates (I think), then they slapped some crude lowpass filters at the end to smooth out the output somewhat. It's aliasing city but that is the sound of the Amiga! That accurate "DAC" emulation in WinUAE really gets me in the mood given I spent hundreds of hours writing music on the Amiga. Digital-only recreations just don't cut it. If you play the PCM samples with "high-quality" inteprolation methods, that's not the Amiga sound but something completely different. The character is in that low-fi crud.

And so on.

Incidentally, I also attempt to emulate the disgusting aliasing distortion of the sample-and-hold (zero order hold) style DAC found on the pre-SB16 Sound Blasters in Staging. Yeah it's hideous on paper, but that gives you that typical Sound Blaster sound! Crunchy, yumm! 😋 (Disabled by default in Staging because people got used to the "high-quality" fantasy recreation in the past 20 years that uses linear interpolation...)

@nikitalita
Copy link
Contributor Author

No, it's not about stair stepping at all, which is instead only the product of a wrong measurement. What is being discussed here is the analog output stage of the different devices.

How is it "wrong"? Did you not see the capture from the RCA jacks I did??

#50 (comment)

If you mean that "the other analog effects have a greater influence on the sound than the stairstepping", that's fine, but I've shown that this does in fact show up in the output.

@johnnovak
Copy link

2. So you would have to argue that Roland chose ultra budget components for a professional device which is unlikely.

Just saw this. The SC-55 was never intended to be a professional device. I was intended for gamers as a low-cost entry-level device, and yeah, at least the mk1 is full of cheap hacks. I noticed these quantisation noise tails in my recordings too, and the unit is generally very noisy.

1991 review:
https://www.muzines.co.uk/articles/roland-sc55-sound-canvas/7496

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. The length of the tail varies from about three to six seconds, and varies among the different instruments, but it is not in any way (as far as I could tell) related to an instrument's envelope. It is not velocity related, so quiet passages end up with proportionally more noise than loud ones, nor is it pitch related.

Even when it is present, it is more curious than objectionable, but it makes the Sound Canvas unsuitable for situations when a large dynamic range and low noise floor are called for — you would not want to cut a solo piano CD with this box, even though the grand piano sound is quite respectable.

@Grieferus
Copy link

  1. So you would have to argue that Roland chose ultra budget components for a professional device which is unlikely.

Just saw this. The SC-55 was never intended to be a professional device. I was intended for gamers as a low-cost entry-level device, and yeah, at least the mk1 is full of cheap hacks. I noticed these quantisation noise tails in my recordings too, and the unit is generally very noisy.

1991 review: https://www.muzines.co.uk/articles/roland-sc55-sound-canvas/7496

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. The length of the tail varies from about three to six seconds, and varies among the different instruments, but it is not in any way (as far as I could tell) related to an instrument's envelope. It is not velocity related, so quiet passages end up with proportionally more noise than loud ones, nor is it pitch related.

Even when it is present, it is more curious than objectionable, but it makes the Sound Canvas unsuitable for situations when a large dynamic range and low noise floor are called for — you would not want to cut a solo piano CD with this box, even though the grand piano sound is quite respectable.

I wouldn't say original SC-55 was intended for gamers. Rather, it was aimed at amateur MIDI composers, because it contains lots of buttons that would be necessary only if you're composing MIDIs for games. However, lots of playback-only versions, such as SC-55ST and SC-7 were intended for gamers.

@johnnovak
Copy link

johnnovak commented May 3, 2024

I wouldn't say original SC-55 was intended for gamers. Rather, it was aimed at amateur MIDI composers, because it contains lots of buttons that would be necessary only if you're composing MIDIs for games. However, lots of playback-only versions, such as SC-55ST and SC-7 were intended for gamers.

My bad, I think you're right, that's more accurate, agreed. I happen to have both the SC-55 mk1 and the SC-55st, and yeah.

I guess my (badly formulated) point was it wasn't a pro studio device, so budget components and cost cutting was definitely what they did there. The Yamaha MU80 which wasn't exactly top of the line either and was intended mostly for hobbyists (so semi-pro at best), is much higher quality. Of course, it came a good 3-4 years later.

@nikitalita
Copy link
Contributor Author

nikitalita commented May 3, 2024

The SC-55 was STEEP for anyone at the time; it retailed at $695 ($1,593 inflation adjusted). The reduced versions (SC-50, SC-55ST) went for around $595. Gamers were not buying these things. Professionals on a budget were buying these things.

@johnnovak
Copy link

johnnovak commented May 5, 2024

The SC-55 was STEEP for anyone at the time; it retailed at $695 ($1,593 inflation adjusted). The reduced versions (SC-50, SC-55ST) went for around $595. Gamers were not buying these things. Professionals on a budget were buying these things.

They were, just the rich ones. Same story as for the MT-32, the prices were comparable.

Remember, most of the Sierra adventure game fanbase was 30-40 year old loaded professionals in the US, not kids. They could afford this stuff. Then they threw in AdLib mode for the rest.

Original list price for the MT-32 in 1987 was $695 (USD).

@johnnovak
Copy link

johnnovak commented May 8, 2024

People interested in recreating the actual analog sound of the unit vs the digital only parts, please read the relevant parts of my article where I compare the hardware SC-55 and Yamaha MU80 units and their software recreations (NukedSC55 wasn't available then, but the SCVA findings fully apply to it regarding the missing analog character).

Note that I've uploaded FLAC recordings of 46 DOS soundtracks (!), meticulously recorded on all these devices and software recreations. They are all volume-matched to make honest A/B comparisons possible. Links and details in the blog post; I recommend reading the whole thing and listening to the recordings.

Key sections for people who really dislike reading 😎

Roland SC-55 vs Roland Sound Canvas VA
https://blog.johnnovak.net/2023/03/05/grand-ms-dos-gaming-general-midi-showdown/#roland-sc-55-vs-roland-sound-canvas-va

Footnote about SPDIF vs analog outs
https://blog.johnnovak.net/2023/03/05/grand-ms-dos-gaming-general-midi-showdown/#fn:2

Yamaha MU80 vs Yamaha S-YXG50
https://blog.johnnovak.net/2023/03/05/grand-ms-dos-gaming-general-midi-showdown/#yamaha-mu80-vs-yamaha-s-yxg50

@markanini
Copy link

If an apples to apples comparison is desired, assuming that you don't have SC-55 hardware on hand. Here are analogue SC-55 captures of some popular 1990s game titles. It can be compared to Nuked SC55s output playing source midi files, for instance sourced from here https://www.vgmpf.com

Johnnovak's selection of captures were before Nuked SC-55 was released, thus you will need to take the extra steps above If you want to tell by your own ears about Nuked SC-55 vs hardware SC-55 specifically.

@Karmeck
Copy link

Karmeck commented May 10, 2024

If an apples to apples comparison is desired, assuming that you don't have SC-55 hardware on hand. Here are analogue SC-55 captures of some popular 1990s game titles. It can be compared to Nuked SC55s output playing source midi files, for instance sourced from here https://www.vgmpf.com

Johnnovak's selection of captures were before Nuked SC-55 was released, thus you will need to take the extra steps above If you want to tell by your own ears about Nuked SC-55 vs hardware SC-55 specifically.

I'm confused, what is wrong with the recordings johnnovak made? The hardware ones that is.

@johnnovak
Copy link

johnnovak commented May 10, 2024

I'm confused, what is wrong with the recordings johnnovak made? The hardware ones that is.

Nothing. I haven't recorded the NukedSC55 versions yet, that is all. Just SCVA and real hardware (SC-55 mk1).

EDIT: Oh, okay, I see @markanini is talking about getting the real hardware recordings from vgmpf.com. Well, you can do that too. But better yet, use my REAPER projects to send the MIDI data to NukedSC55 via virtual MIDI cables using my own 46 game MIDI captures.

@Karmeck
Copy link

Karmeck commented May 10, 2024

I'm confused, what is wrong with the recordings johnnovak made? The hardware ones that is.

Nothing. I haven't recorded the NukedSC55 versions yet, that is all. Just SCVA and real hardware (SC-55 mk1).

EDIT: Oh, okay, I see @markanini is talking about getting the real hardware recordings from vgmpf.com. Well, you can do that too. But better yet, use my REAPER projects to send the MIDI data to NukedSC55 via virtual MIDI cables using my own 46 game MIDI captures.

I'm confused once more. Are your recordings not hardware recordings? Did you not record audio from a real sc-55?

I'm guessing there I some terminology here that I don't understand.

@markanini
Copy link

markanini commented May 10, 2024

I'm confused, what is wrong with the recordings johnnovak made? The hardware ones that is.

Nothing. I haven't recorded the NukedSC55 versions yet, that is all. Just SCVA and real hardware (SC-55 mk1).
EDIT: Oh, okay, I see @markanini is talking about getting the real hardware recordings from vgmpf.com. Well, you can do that too. But better yet, use my REAPER projects to send the MIDI data to NukedSC55 via virtual MIDI cables using my own 46 game MIDI captures.

I'm confused once more. Are your recordings not hardware recordings? Did you not record audio from a real sc-55?

I'm guessing there I some terminology here that I don't understand.

I'm saying that johnnovaks comparison page doesn't include Nuked SC55 at this time, and sharing the basic steps in making your own comparison. VGMPF is useful as a source for midi files, listed under the "game rip" header for every game.

@johnnovak
Copy link

I'm confused once more. Are your recordings not hardware recordings? Did you not record audio from a real sc-55?

Read my article, man :)

@hikari-no-yume
Copy link

hikari-no-yume commented May 19, 2024

There are far too many comments here and you should all stop arguing.

I am curious however. In my and some others' experience, the early SC DACs have a weird aliasing-related behaviour; all the frequencies below 32kHz get reflected above 32kHz. I'm not sure how high they get reflected to but it's easy to see on a 44.1kHz recording. That affects the sound of them, giving a bit of extra brightness, though it's fairly subtle. Could this be emulated? This is probably not a complicated effect to reproduce.

@Karmeck
Copy link

Karmeck commented May 19, 2024

There are far too many comments here and you should all stop arguing.

I am curious however. In my and some others' experience, the early SC DACs have a weird aliasing-related behaviour; all the frequencies below 32kHz get reflected above 32kHz. I'm not sure how high they get reflected to but it's easy to see on a 44.1kHz recording. That affects the sound of them, giving a bit of extra brightness, though it's fairly subtle. Could this be emulated? This is probably not a complicated effect to reproduce.

I wonder if this I related to this issue:
https://www.vogons.org/viewtopic.php?p=1261758#p1261758

@johnnovak
Copy link

all the frequencies below 32kHz get reflected above 32kHz. I'm not sure how high they get reflected to but it's easy to see on a 44.1kHz recording.

Aliasing is when frequencies above half the Nyquist frequency (half the sample rate) get folded back to the audible range, for a variety of reasons. It can happen at the ADC stage, DAC stage, sample interpolation stage, DSP calculations, etc.

In this case, all sorts of junk above 16kHz will get folded back. I tried to find some videos online that illustrate this with a sweep, but couldn't and all textual descriptions are vague...

If you play some SC-55 patch in the high octaves, and you use the pitch wheel, and you examine the output in a spectrum analyser, you'll see the actual note you are playing go up as you bend up, but there will be some junk at much lower frequencies moving in the opposite direction, so downwards!

Yeah aliasing can add some brightness because of added quasi-random freqs, but the problem is those extra freqs are inharmonic, so generally it sounds ugly... especially with pitch bends, vibrato, etc.

But it can sound cool with drums.

@markanini
Copy link

Am I the only one who thinks the output of Nuked SC55 sounds punchier and better defined than any analogue capture of a real SC-55? I for one don't miss anything. Just my two cents.

@johnnovak
Copy link

Am I the only one who thinks the output of Nuked SC55 sounds punchier and better defined than any analogue capture of a real SC-55? I for one don't miss anything. Just my two cents.

A/B compare the System Shock intro tune with exactly matched volumes, then report back again 😄

@markanini
Copy link

markanini commented May 20, 2024

A/B compare the System Shock intro tune with exactly matched volumes, then report back again 😄

I did with this as my point of comparison https://www.youtube.com/watch?v=DENSsyd2igY and this for the midi files https://www.systemshock.org/index.php?topic=2285.0 The snare was obviously different so I tried using the capital fallback feature in FSMP and it worked to match the instrument sounds. No matter what I think it's likely better to discuss midi music that doesn't have issues with sounds being changed between different SC55 versions in the first place, a novice might
misattribute the differences they hear. (Nuked SC55 sounded better here to me, just my opinion)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests