Designing a NES compatible console - nesdev designs, part 2.

You can talk about almost anything that you want to on this board.

Moderator: Moderators

User avatar
FrankenGraphics
Formerly WheelInventor
Posts: 2064
Joined: Thu Apr 14, 2016 2:55 am
Location: Gothenburg, Sweden
Contact:

Re: Designing a NES compatible console - nesdev designs, par

Post by FrankenGraphics »

re terminology: Studio equipment companies are (like many industries) full of commercial buzzwords. Everything between heaven and earth has been called "phat" and "analog", for instance :lol: In the modular counter-culture, "snappy" has become a holy word which has caught on as its meaning gets dilluted. Wavetable synthesis probably sounded a lot cooler and selling to a marketeer than s+s, sample synthesis, and sampling. Another term that was used largely to obfuscate what the synth underneath really was about was "vector synthesis". In yamaha products, it's a combined fm synth and rudimentary sampler. In KORG (wavestation) it is actually a wavetable synth. Their common factor? A joystick for blending sounds and/or steering control messages with semi-alterable addressing. :roll: Not to diminish the feature - It gave back a dimension of control synthesizers had abandoned since the minimoog generation.

I think the distinction between a sampler and a wavetable synth being if the samples repeat after one cycle/period or not is very clear. Other distinctions (like if it is able to record a sample) aren't waterproof and have been blurred as new products have entered the market.

I'm not sure if all this stuff would've made the chip expensive in the late 80s to early 90s though.
Most probably, that chip was already pretty advanced for its time. Today you can get pretty advanced synths/delays/reverbs on a chip, but they're also generally costly. Example of a lower end FX chip. There might be bucket brigade chips on the cheap, but i don't know. The problem here is for a commercial, easy to source part, the legal dimension of emulating it can potentially get tricky (it's someone's product). For old stuff, you can't reliably source them. So i think there's two options: Emulate and program a suitable DSP pic / mcu / fpga, or make a circuit from more discrete parts (might be too expensive and labourous) and emulate that in turn. Or a combo/compromise.

Some FX are both cheap to build discrete, and easy to emulate. If you want do give each or some channels a suboctave side channel, all you basically need to use is optionally a comparator and essentially a d-flip flop. Especially if the sub channel is directly derived after tone generation (where the amplitude is known) and then summed/mixed in prior to any volume envelope (and filtering, if that applies). Mixing would require a programmable mixer, of course.

FM/AM synthesis is good in retro gaming (i think) because it offloads the CPU by some (but with 65816, would it matter?). Besides the audio range modulation, you can create vibrato and tremolo just the same way without continously feeding new pitch/volume data to the unit, and tremolo/vibrato would work independent of their famitracker-style instrument envelopes (apart from you wanting to change rate and amplitude of those effects).
psycopathicteen
Posts: 3140
Joined: Wed May 19, 2010 6:12 pm

Re: Designing a NES compatible console - nesdev designs, par

Post by psycopathicteen »

I wonder if the SPC700 ditched the compression, Gaussian interpolation and the CPU part, it would be able to fit more channels in. If they really need interpolation, I think linear would have been fine.
lidnariq
Posts: 11430
Joined: Sun Apr 13, 2008 11:12 am

Re: Designing a NES compatible console - nesdev designs, par

Post by lidnariq »

I'd hunch that the channel limitation is a matter of bandwidth instead of silicon.
tepples
Posts: 22705
Joined: Sun Sep 19, 2004 11:12 pm
Location: NE Indiana, USA (NTSC)
Contact:

Re: Designing a NES compatible console - nesdev designs, par

Post by tepples »

Based on low level timing in nocash's Fullsnes, in the worst case, with all eight channels playing at maximum rate (127.9 kHz) and straddling the loop point, the DSP has to read and write 48 bytes: 5 bytes per channel per sample (two loop start pointer bytes, one BRR header, and two BRR data representing four input samples), plus read one stereo frame (4 bytes) from the echo buffer and write one (4 bytes) back. This times 32000 samples per second fills three-fourths of the 2048000 ARAM access slots per second that the DSP gets.
User avatar
FrankenGraphics
Formerly WheelInventor
Posts: 2064
Joined: Thu Apr 14, 2016 2:55 am
Location: Gothenburg, Sweden
Contact:

Re: Designing a NES compatible console - nesdev designs, par

Post by FrankenGraphics »

If a 'new chip' is on the table: Why not combine wavetable oscillators with fm operation?

Each oscillator could be something like N163 in itself. It's a unit. It doesn't even have to have 8 channels per oscillator like the N163 has, because that takes its toll on fidelity. Maybe 4 is enough. Maybe one or two.

-Now, you could either route its sum to Out, or you could route it to modulate another units' registers. What is needed is an interface from audio -> control register.

-There's the question how low the N163/Super-N163/hypothetical wavetable unit could go. Sub audio territory is very useful. Here, interpolation plays a big role. It'd also play a big role naturally since you don't want your modulator signal to be too jagged in FM/AM synthesis.

-All units can switch between a shared wave ROM onboard and a shared RAM space. The musician/programmer can make their lives easy and send all outs to Audio Out, or they can facilitate some to take benefits of FM/AM operation. If it's possible to force an oscillator to reset its period, you'd gain hardsync effects as a bonus.

-No fm operators goes to waste by not being used. You'd use them for ordinary sound channels. And if you want to use the wavetable synth as a wavetable synth or just as an oscillator with selectable waveforms, that'd be up to you. Or open the envelope and stream samples. It's all up to the music engine to set the limitations, with regard to processing bandwidth and ease of use.
lidnariq
Posts: 11430
Joined: Sun Apr 13, 2008 11:12 am

Re: Designing a NES compatible console - nesdev designs, par

Post by lidnariq »

FrankenGraphics wrote:-Now, you could either route its sum to Out, or you could route it to modulate another units' registers. What is needed is an interface from audio -> control register.
-There's the question how low the N163/Super-N163/hypothetical wavetable unit could go. Sub audio territory is very useful. Here, interpolation plays a big role. It'd also play a big role naturally since you don't want your modulator signal to be too jagged.
Both the SNES and TG16 support this. (The SPC isn't really tuned for audio-rate FM, but it does work... PMON allows channel 0-6 to be fed in as a modulator for the next higher channel)

TG16 is quite a bit more limited, only channel 1 can feed into channel 0.
User avatar
FrankenGraphics
Formerly WheelInventor
Posts: 2064
Joined: Thu Apr 14, 2016 2:55 am
Location: Gothenburg, Sweden
Contact:

Re: Designing a NES compatible console - nesdev designs, par

Post by FrankenGraphics »

I suppose having something like the n163* as an operator unit would also have the benefit that this way you could facilitate all of the "many operators modulate the one other" type of algorithms present on yamaha DX7 up to SY77/99 (and probably onwards, don't know what yamaha is up to these days). You'd set it to simulate as many oscillators as you'd need and let the sum of them modulate the next operator unit.

If they weren't summed before sent to modulation, they could instead be used for polyphonic FM patches.

*edit: as in something that simulates several oscillators by cycling through their tasks in a round robin fashion.
psycopathicteen
Posts: 3140
Joined: Wed May 19, 2010 6:12 pm

Re: Designing a NES compatible console - nesdev designs, par

Post by psycopathicteen »

I've been thinking about APU bandwidth, and I thought of this:

-No header bytes. All samples are just 4-bit PCM, or IMA ADPCM.
-Loop points and sample length are stored in hardware registers.

So with this it could fetch 28 channels plus echo at 2Mhz.
Post Reply