From georg@nlp.physik.th-darmstadt.de Wed May 4 12:37:08 1994 Date: Wed, 4 May 94 12:19:50 +0200 From: Georg Mueller To: analogue@magnus.acs.ohio-state.edu Subject: Wavetables (was: Vector synths) A WaveTable consists of up to 61 different Waves (00..60) plus tri, sqr and saw. There are (000..245) Rom-Waves, (246..306) internal UserWaves, (307..367) Card Waves and (368..505) Rom-Waves, new with V2.0. A Wave consists of 64 Bytes (8-Bit), thats the positive cycle. The Wave(Control)Tables are (00..27) Rom-Tables, (28..31) arithmetically generated, (32..43) internal User Ram-Tables, (44..55) Card-Ram Tables, (56..74) arithmetically generated, new with V2.0 and (75..87) ROM tables, new with V2.0. In the WaveTable you select the Waves, that should sound. There are 61 free positions, but you must only specify valid Wave for pos 0 and 60. For the others you assign -1. So the MicroWave interpolates in between. Example: POS 0 1 2 3 .. 20 21 22 .. 59 60 61 62 63 WAV 256 -1 -1 -1 -1 257 -1 -1 258 -1 -1 -1 I took an oscillograph and looked at the way the uW plays and interpolates the Waves. For simplicity lets assume a Wave has 8 Nibbles (4-Bit), a WaveTable has 4 free positions plus tri, sqr and saw. Wave 1: -_ Wave 2: -_ -_ -_ ________ 76543210 00000000 That's what the uW spits out: Wave 1: -_ -_ Wave 2: -------- -_ -_ -_ -_ -_ -_ ________ 7654321076543210 0000000077777777 For the first half of the period the uW simply sends the number from the Wave to the DAC. For the second half it reverses the readout direction and sends the difference between the maximum value and the actual number. Now lets investigate the spectral interpolation. Consider this WaveTable POS 0 1 2 3 4 5 6 WAV 1 -1 -1 2 -1 -1 -1 We get: -_ -_ -__ --___ -------- -_ -_ -_ -__ --- -_ -_ --_ -_ ___ -_ -_ --_ ---__ ________ 7654321076543210 5433211076654432 2221110077666555 0000000077777777 Well, that's simple linear interpolation. Marketing Hype: "Spectral" Georg.