View Single Post
Old 16 January 2016, 13:26   #99
Megol
Registered User
 
Megol's Avatar
 
Join Date: May 2014
Location: inside the emulator
Posts: 377
Quote:
Originally Posted by meynaf View Post
Yuck. I don't want to hear that.
The Covox or the 8088? :P

A resistor ladder DAC coupled to an amplifier sounds surprisingly good for 8 bit playback, it's when one starts with 12..16 bits the resistor values begin to be critical IIRC.

If you want to hear something worse: [ Show youtube player ]

Jump to 6:59 for a 4 channel playback routine on the PC speaker :P

Quote:
But without any kind of interpolation.
Perhaps. I've never coded a playback device for the 386.
Interpolation isn't always useful though, some modules sound strange with it.

Quote:
Not necessarily better because of the extra loop control.
In itself it doesn't do too much, helps keeping cache misses down + allows some shortcuts like simplifying changing pitch. It's in combination with other tricks it starts paying off big.

Quote:
Totally useless, unless this number is reduced to just one.
Nope. Think table lookup with a small data cache -> 64*256 =16kiB, 16*256 = 4kiB.

Quote:
This kind of trick was used on the ST for the TCB tracker. NOT nice.
Can't but agree. Still better than no playback at all though.

Quote:
Impractical ; not useful.
It's been done before so... If one have short samples + memory not used by anything else then it can be useful. Sure, not a tool for arbitrary mixing but for playing a custom module.

Quote:
Ugly. Fails on any cpu with a cache.
Maybe 68k but not for x86.
But the kind of SMC I'm talking about here uses large enough code blocks that flushing the cache isn't a problem. Perhaps I should call it dynamic code generation?

Quote:
Reduces overflow management but needs extra instructions to convert from 8 to 16 or 16 to 32. Useless for speed.
Eh... Nope. Personal experience talking. More advantages the more channels are mixed of course.

Quote:
If you have a superscalar processor you have enough horsepower to mix as many channels as you want, with interpolation. Even a 030 can do that. And you don't even need a fast multiply (in fact you don't need a multiply at all).
How do you handle per channel volumes if not by multiply? You may do the multiply via lookup tables but it's still there. In hardware one can "dither" samples but that is essentially multiplication via PWM+smoothing filter.

And I thought we were talking about optimization not if a processor may mix channels?
Megol is offline  
 
Page generated in 0.06944 seconds with 11 queries