mykes@sega0.SF-Bay.ORG (Mike Schwartz) (03/24/91)
Since the Amiga audio hardware has an 8-bit DAC plus 6 bits of volume for each audio voice, it should be trivial to play 14-bit samples. Using Audio interrupts, you can feed audio data and volume right to the DACs (it would use a lot of CPU on a 68000). Using another feature of the hardware, you can have the output of one channel modulate the volume of another. So it looks like you can use DMA to do 2 channels of 14-bit sound. Any feedback? -- ******************************************************* * Assembler Language separates the men from the boys. * *******************************************************
<DXB132@psuvm.psu.edu> (03/24/91)
In article <mykes.0120@sega0.SF-Bay.ORG>, mykes@sega0.SF-Bay.ORG (Mike Schwartz) says: >Since the Amiga audio hardware has an 8-bit DAC plus 6 bits of volume >for each audio voice, it should be trivial to play 14-bit samples. Using >Audio interrupts, you can feed audio data and volume right to the DACs >(it would use a lot of CPU on a 68000). Using another feature of the >hardware, you can have the output of one channel modulate the volume of >another. So it looks like you can use DMA to do 2 channels of 14-bit >sound. >Any feedback? It's certainly possible. It might not be "true" 14 bit, but certainly much better than 8 bit. The other way to do it is to set one channel's volume to 1 and another to 64 and just let the soft channel be the least significant bits of the 14 bit audio data. Do the same with the other two channels and you now have "15 bit" sound! Then use a non-real-time synthesis program and get an infinite number of simulatenous "voices" with 15 bit sound! (getting carried away now :-) -- Dan Babcock
trantow@csd4.csd.uwm.edu (Jerry J Trantow) (03/25/91)
In article <mykes.0120@sega0.SF-Bay.ORG> mykes@sega0.SF-Bay.ORG (Mike Schwartz) writes: >Since the Amiga audio hardware has an 8-bit DAC plus 6 bits of volume >for each audio voice, it should be trivial to play 14-bit samples. Using >Audio interrupts, you can feed audio data and volume right to the DACs >(it would use a lot of CPU on a 68000). Using another feature of the >hardware, you can have the output of one channel modulate the volume of >another. So it looks like you can use DMA to do 2 channels of 14-bit >sound. > >Any feedback? I have done a little bit of work on this.(using the DMA volume modulation) The first approach that I tried was believing that the product of the two channels would be the output. I divided each 14 bit sample into two factors (volume <=64) * (-128<=waveform<=127) and got miserable results. I don't think the two DACs change at the same time and you get a glitch when the volume changes much. ( I have not verified this on a scope.) My other attempt was to use an envelope which has the property of changing the volume gradually. This would reduce the volume change glitch, and would allow the volume to be sampled at a slower rate. I am VERY interested in what others have found. (BTW, audiotools has a demo of volume modulation.) _____________________________________________________________________________ Jerry J. Trantow | A basic premise is an absolute that permits no 8967 N. Pelham Parkway | co-operation with its antithesis and Milwaukee, Wi 53217-1954 | tolerates no tolerance. (414) 228-4689 | Ayn Rand _____________________________________________________________________________
karl@sugar.hackercorp.com (Karl Lehenbauer) (03/25/91)
In article <mykes.0120@sega0.SF-Bay.ORG> mykes@sega0.SF-Bay.ORG (Mike Schwartz) writes: >Since the Amiga audio hardware has an 8-bit DAC plus 6 bits of volume >for each audio voice, it should be trivial to play 14-bit samples. Using >Audio interrupts, you can feed audio data and volume right to the DACs >(it would use a lot of CPU on a 68000). Using another feature of the >hardware, you can have the output of one channel modulate the volume of >another. So it looks like you can use DMA to do 2 channels of 14-bit >sound. Yes, it is possible and Soundscape does it. However, I wouldn't call it 14-bit because, unless you pretty much dedicate the CPU to the job, no arbitrary sample could have an arbitrary 14-bit value. I would call this 8-bit companded, like the Emulator II has. The way to do it, then, is to subdivide the sample into parts, calculate the RMS level of each subpart, figure out a 6-bit volume level, then scale the samples to be full-scale 8-bit. I looked into doing this for my SMUS and MIDI players, but haven't done so yet and am now not too likely to. You'll also need a 14-bit or greater sampling source. I use a Casio FZ-1 16-bit sampling synth, download the samples at full 16-bit resolution over MIDI to the Amiga, then downsample. The piano and bass included in my recently posted SMUS player were created in this manner, and I think you'll agree if you listen to them (with the filter off) that they are pushing the state of the art in Amiga sounds played only on the built-in hardware. -- -- uunet!sugar!karl Keeping 255 messages and deleting 158. --
jlavi@ujocs.joensuu.fi (Jarkko Lavinen) (03/26/91)
DXB132@psuvm.psu.edu writes: >It's certainly possible. It might not be "true" 14 bit, but certainly much >better than 8 bit. >The other way to do it is to set one channel's volume to 1 and another to >64 and just let the soft channel be the least significant bits of the >14 bit audio data. Mixing two channels sounds great. That way in theory we should get 14 bits linear output. However there are few things to remember... 14 bits means 84db dynamic range. I don't think Amigas audio hardware is designed for near CD quality ? Thinking about the simple circuits there are, 10 bits would sound more reasonable. Mixing may not be linear. The two channels may not have the same zero-point. This can be overcame with software, adjusting the zero level of the channel with lower volume. This also reduces the amount of bits available. At least one bit has to be sacrfied for this. A simple test might be to play in one channel square wave with amplitude 1, volume 64 and on another channel with amplitude 64, volume 1. Now delaying the latter channel by 180 degrees (so that when one channel outputs +64, another -64) SHOULD result in zero output. I bet You get nothing but zero out! Thinking about DAC having unlinearity, say, +-0.5bits. In fact one should possibly calibrate all the combinations of the two channels. The unlinearity may easily shift, resulting the performance changing during the session... But even then, If the 14 bits isn't reality, some 10 or 11 bits dynamic range would certainly be welcome! Jarkko Lavinen
DXB132@psuvm.psu.edu (03/27/91)
In article <1991Mar26.154013.3996@ujocs.joensuu.fi>, jlavi@ujocs.joensuu.fi (Jarkko Lavinen) says: > But even then, If the 14 bits isn't reality, some 10 or 11 bits >dynamic range would certainly be welcome! My conclusion exactly... -- Dan Babcock