mainThe OpenVortex Project - Support: sr #102975, Wavetable Synthesizer

 
 

sr #102975: Wavetable Synthesizer

Submitter:  None
Submitted:  Sun 04 Apr 2004 12:47:37 PM UTC
   
 
Category:  None Priority:  5 - Normal
Severity:  1 - Wish Status:  None
Privacy:  Public Assigned to:  None
Originator Email:  -email is unavailable- Open/Closed:  Open
Operating System:  None
* Mandatory Fields

Add a New Comment Rich Markup
   

Jump to the original submission

Mon 15 Nov 2004 12:03:49 PM UTC, comment #16: 


http://patft.uspto.gov/netacgi/nph-Parser?Sect1=PTO1&Sect2=HITOFF&d=PALL&p=1&u=/netahtml/srchnum.htm&r=1&f=G&l=50&s1=6,167,465.WKU.&OS=PN/6,167,465&RS=PN/6,167,465

Wavetables, such as wavetable 342, are commonly used in audio processing. Thus, in the exemplary embodiment, a number of DMA channels are dedicated to wavetable operations. Queue list 401 may be dedicated to conventional DMA channels while queue list 402 may be dedicated to wavetable DMA channels. Correspondingly, a number of sub-buffer tables 380, previously discussed, may be dedicated to wavetable DMA channels without significant alteration from the sub-buffer tables disclosed. Further, some of FIFOs 306 may be dedicated to wavetable DMA channels.

http://lists.gnu.org/archive/html/openvortex-dev/2004-09/msg00001.html


Anonymous
Wed 07 Jul 2004 05:55:06 PM UTC, comment #15: 

I have put the ARL, DLS and MIDI parsers in Vortex Control Panel 0.0.6 , this may help the developer who want to implement driver for the hardware wavetable synthesiser

support #103017

Anonymous
Sat 19 Jun 2004 03:34:27 AM UTC, comment #14: 

How to pass the properties of sample in sound bank and the properties of midi to the registers of au88x0 wavetable ?

Sample rate : samples not same rate.
Bits per sample : 16

Velocity: volume
Sample Looping : timer

Pitch : Varing pitch to produce different notes of an instrument

Lowpass Filter
Low Frequency Oscillators

Envelope Generators (delay, hold ,attack, sustain, decay, release)
Effect (Chrous, Reverb, Panning)

Remark : There are some unknown generators in the sound bank.


#define WT_BAR(x) (((x)&0xffe0)<<0x8)
#define WT_BANK(x) (x>>5)
/* WT Bank registers */
#define WT_CTRL(bank) (((((bank)&1)<<0xd) + 0x00)<<2) /* 0x0000 */
#define WT_SRAMP(bank) (((((bank)&1)<<0xd) + 0x01)<<2) /* 0x0004 */
#define WT_DSREG(bank) (((((bank)&1)<<0xd) + 0x02)<<2) /* 0x0008 */
#define WT_MRAMP(bank) (((((bank)&1)<<0xd) + 0x03)<<2) /* 0x000c */
#define WT_GMODE(bank) (((((bank)&1)<<0xd) + 0x04)<<2) /* 0x0010 */
#define WT_ARAMP(bank) (((((bank)&1)<<0xd) + 0x05)<<2) /* 0x0014 */
/* WT Voice registers */
#define WT_STEREO(voice) ((WT_BAR(voice)+ 0x20 +(((voice)&0x1f)>>1))<<2) /* 0x0080 */
#define WT_MUTE(voice) ((WT_BAR(voice)+ 0x40 +((voice)&0x1f))<<2) /* 0x0100 */
#define WT_RUN(voice) ((WT_BAR(voice)+ 0x60 +((voice)&0x1f))<<2) /* 0x0180 */
/* Some kind of parameters. */
/* PARM0, PARM1 : Filter (0xFF000000), SampleRate (0x0000FFFF) */
/* PARM2, PARM3 : Still unknown */
#define WT_PARM(x,y) (((WT_BAR(x))+ 0x80 +(((x)&0x1f)<<2)+(y))<<2) /* 0x0200 */
#define WT_DELAY(x,y) (((WT_BAR(x))+ 0x100 +(((x)&0x1f)<<2)+(y))<<2) /* 0x0400 */

Anonymous
Tue 15 Jun 2004 12:44:57 PM UTC, comment #13: 

There is a midi parser in

alsa-utils/seq/aplaymidi/aplaymidi.c

It seem that if we use au88x0 as synthesizer, we will need to implement functions

typedef struct snd_seq_midi_op {
void (*note_on)(void *private_data, int note, int vel, snd_midi_channel_t *chan);
void (note_off)(void *private_data,int note, int vel, snd_midi_channel_t *chan); / release note */
void (*key_press)(void *private_data, int note, int vel, snd_midi_channel_t *chan);
void (note_terminate)(void *private_data, int note, snd_midi_channel_t *chan); / terminate note immediately */
void (*control)(void *private_data, int type, snd_midi_channel_t *chan);
void (*nrpn)(void *private_data, snd_midi_channel_t *chan, snd_midi_channel_set_t *chset);
void (*sysex)(void *private_data, unsigned char *buf, int len, int parsed, snd_midi_channel_set_t *chset);

} snd_midi_op_t;

alsa-kernel/include/seq_midi_emul.h

Not sure those midi reverb and chrous 

SNDRV_MIDI_SYSEX_GS_CHORUS_MODE,
SNDRV_MIDI_SYSEX_GS_REVERB_MODE,

are suitable for 3D sound

Anonymous
Sun 13 Jun 2004 01:23:25 AM UTC, comment #12: 



The wavetable daughter board is a completely separate Synthesizer which takes MIDI IN/OUT from the external MIDI port and puts out audio to the video input of the AC97 CODEC. The only control our drivers have over it is volume

http://3dsoundsurge.com/faq/4.29.html


Anonymous
Wed 09 Jun 2004 03:22:06 PM UTC, comment #11: 

W2K driver write special routes (the upper 16 bits is non zero) in the routes table when playing midi limiting number of voices to 64.

Wl:0xf710a080,0xffff         28080  
Wl:0xf710a000,0xf7183a20     28000    
Wl:0xf710a198,0xeb843b00     28198   
.
.
.
Wl:0xf710a188,0xffff         28188         

Wl:0xf710a184,0x81cb0162     28184  
Wl:0xf710a080,0x161          28080  
.
.
.
Wl:0xf710a104,0xffff         28104  

Wl:0xf710a100,0xf5490041     28100  

Wl:0xf710a2b8,0x40           282b8
.
.
.
Wl:0xf710a19c,0xffff         2819c 

Wl:0xf710a198,0xf5492167     28198
Wl:0xf710a24c,0x2066         2824c

Anonymous
Sun 06 Jun 2004 12:04:52 PM UTC, comment #10: 

64-voice hardware Wavetable synthesizer, with 8 real-time effects (any 2 can be assigned at one time) including Delay, Room/Chamber/Hall Reverb, Cabinet (Organ Tremolo), Flange, Chorus, Distortion and Wah-Wah. Supports multi-layered sound banks for better realism (try out the Electric Pianos at low and high velocities). Default sound bank is almost 5MB and is multi-layered. Wavetable engine uses fourth-order interpolation, 4-pole resonance filtering, five-stage envelope generation and support for up to 16-bit 48KHz PCM samples. 512 software synthesizer voices using same Wavetable samples as the hardware synth.

http://myweb.tiscali.co.uk/chris.day/faq/vortex08.htm

Anonymous
Sun 06 Jun 2004 12:49:25 AM UTC, comment #9: 

Not all of the samples in sound bank file are 16 bits, some of them are 8 bits.

sample rate of some samples are > 48000 , this may be a bug of sound bank file.

static snd_pcm_hardware_t snd_vortex_playback_hw_wt = {
.info = (SNDRV_PCM_INFO_MMAP |
SNDRV_PCM_INFO_INTERLEAVED |
SNDRV_PCM_INFO_BLOCK_TRANSFER | SNDRV_PCM_INFO_MMAP_VALID),
.formats = SNDRV_PCM_FMTBIT_S16_LE,
.rates = SNDRV_PCM_RATE_8000_48000 | SNDRV_PCM_RATE_CONTINUOUS, // SNDRV_PCM_RATE_48000,
.rate_min = 8000,
.rate_max = 48000,

Anonymous
Sat 05 Jun 2004 03:22:16 PM UTC, comment #8: 


static snd_pcm_hardware_t snd_vortex_playback_hw_wt = {
.info = (SNDRV_PCM_INFO_MMAP |
SNDRV_PCM_INFO_INTERLEAVED |
SNDRV_PCM_INFO_BLOCK_TRANSFER | SNDRV_PCM_INFO_MMAP_VALID),

http://www.mail-archive.com/alsa-devel@lists.sourceforge.net/msg06655.html

http://www.mail-archive.com/alsa-devel@lists.sourceforge.net/msg06672.html

Anonymous
Fri 04 Jun 2004 12:19:51 PM UTC, comment #7: 

If the number of samples between startloop and endloop of a sound bank is an odd number, do it mean that we are forced to use period size = 1 ?

Anonymous
Fri 16 Apr 2004 02:38:42 PM UTC, comment #6: 

sb << ((0xf - (wtdma & 0xf)) * 2)           ????????????

sb << ((0xf - (adbdma & 0xf)) * 2)


static void vortex_adbdma_setstartbuffer(vortex_t * vortex, int adbdma, int sb)
{
stream_t *dma = &vortex->dma_adb[adbdma];
hwwrite(vortex->mmio, VORTEX_ADBDMA_START + (adbdma << 2), sb << (((NR_ADB-1)-((adbdma&0xf)*2))));
hwwrite(vortex->mmio, VORTEX_ADBDMA_START + (adbdma << 2),
sb << ((0xf - (adbdma & 0xf)) * 2));
dma->period_real = dma->period_virt = sb;
}


static void vortex_wtdma_setstartbuffer(vortex_t * vortex, int wtdma, int sb)
{
stream_t *dma = &vortex->dma_wt[wtdma];
hwwrite(vortex->mmio, VORTEX_WTDMA_START + (wtdma << 2), sb << ((0x1f-(wtdma&0xf)*2)));
hwwrite(vortex->mmio, VORTEX_WTDMA_START + (wtdma << 2),
sb << ((0xf - (wtdma & 0xf)) * 2));
dma->period_real = dma->period_virt = sb;
}

Anonymous
Thu 15 Apr 2004 08:47:02 AM UTC, comment #5: 

There are 8 drum kits and 128 instruments in aureal sound bank.

A riff parser will be need to upload the sound font into system memory.

Anonymous
Wed 14 Apr 2004 12:15:40 PM UTC, comment #4: 

It sound at a higher pitch ( seem src not set properly )

> aplay -v -D hw:0,3 /root/music/a3d/bee.wav

Playing WAVE '/root/music/a3d/bee.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Mono
Hardware PCM card 0 'au8830' device 3 subdevice 0
 
Its setup is:
stream       : PLAYBACK
access       : RW_INTERLEAVED
format       : S16_LE
subformat    : STD
channels     : 1
rate         : 44100
exact rate   : 44100 (44100/1)
msbits       : 16
buffer_size  : 22528
period_size  : 2048
period_time  : 46439
tick_time    : 10000
tstamp_mode  : NONE
period_step  : 1
sleep_min    : 0
avail_min    : 2048
xfer_align   : 2048
start_threshold  : 22528
stop_threshold   : 22528
silence_threshold: 0
silence_size : 0
boundary     : 1476395008
aplay: pcm_write:1088: write error: Input/output error



Anonymous
Wed 14 Apr 2004 12:08:34 PM UTC, comment #3: 

After removinng some wt routes and changing the order of wt routes at vortex_wt_connect()

28140 : 00007151  CODECIN1->MIXIN1
28144 : 00006052  WTMIX(0,0)->MIXIN2
28148 : 0000a053  WTMIX(1,0)->MIXIN3
2814c : 00006154  WTMIX(0,1)->MIXIN4
28150 : 0000a155  WTMIX(1,1)->MIXIN5
28154 : 0000a696  A3DOUT0->XTALKIN0
28158 : 00006757  XTALKOUT1->MIXIN7
28220 : 00007f89  EQOUT1  ->CODECOUT1
28224 : 0000328c  MIXOUT2 ->CODECOUT4
28230 : 0000338d  MIXOUT3 ->CODECOUT5
28234 : 00007050  CODECIN0->MIXIN0
28248 : 00003593  MIXOUT5 ->SPDIFOUT1
28258 : 0000a79b  A3DOUT1->XTALKIN5
2825c : 0000a99c  A3DOUT3->XTALKIN6
28260 : 0000ab9d  A3DOUT5->XTALKIN7
28264 : 0000ad9e  A3DOUT7->XTALKIN8
2826c : 0000a897  A3DOUT2->XTALKIN1
28270 : 0000aa98  A3DOUT4->XTALKIN2
28274 : 0000ac99  A3DOUT6->XTALKIN3
28278 : 00006656  XTALKOUT0->MIXIN6
28280 : 000031a1  MIXOUT1 ->EQIN1
28284 : 00007e88  EQOUT0  ->CODECOUT0
282f8 : 000030a0  MIXOUT0 ->EQIN0
28304 : 00003492  MIXOUT4 ->SPDIFOUT0


> aplay -D hw:0,3 /root/music/a3d/bee.wav


It sound at a higher pitch (non-stop) and and need to abort by control break.

Anonymous
Wed 14 Apr 2004 09:48:13 AM UTC, comment #2: 

I think Soundfont need SRC in WT to increase/decrease pitch.

sf2 contain 128 instruments but only 64 wavetable in WT.




Anonymous
Thu 08 Apr 2004 08:49:05 AM UTC, comment #1: 

It seem that we have to fix out the bugs for addroutes()/delroutes(), rearrange default mixer in/out assignment in order to have any progress with wt and a3d.

Anonymous
Sun 04 Apr 2004 12:47:37 PM UTC, original submission:  

How do I upload soundfont DLS or ARL to aureal sound card ?

Do I need specific program to play MIDI using wavetable synthesizer ?

Anonymous

 

(Note: upload size limit is set to 16384 kB, after insertion of the required escape characters.)

Attach Files:
   
   
Comment:
   

No files currently attached

 

Depends on the following items: None found

Items that depend on this one: None found

 

CC list is empty

 

There are 0 votes so far. Votes easily highlight which items people would like to see resolved in priority, independently of the priority of the item set by tracker managers.

Only logged-in users can vote.

 

No changes have been made to this item

Back to the top

Powered by Savane 3.14-f13d.
Corresponding source code