- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I wonder how one would implement an envelope generator for a synthesizer with UDB or LUT? An envelope generator is a finite state machine so it makes sense implementing one with UDB.
What I'm interested is if it even makes sense to implement hardware envelope instead of software one? I'm concerned multiple envelope generators would take up too much memory, CPU time or hog DMA channels. Thank you for the help in advance!
Solved! Go to Solution.
- Labels:
-
PSOC5 LP MCU
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
greg79,
CPU is more flexible compared to hardware when it comes to generating sound. This is because of relatively slow output rate needed for tone generation (40-200kHz). It is convenient to store ADSR profile in memory array, rather than calculating it each time. Usually the ADSR profile is much slower than waveform period, so small inaccuracies do not matter. For better accuracy and smaller RAM space, two arrays can be utilized to store the AD (fast) and SR (slow) portions of the envelope.
Another issue using UDB is that each voice requires its own ADSR generator, so you will run out of hardware rather quickly.
You can find a polyphonic piano basic demo project, using simple interrupt technique here:
Polyphonic piano basic demo using KIT-059 and MIDI Keyboard
/odissey1
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
greg79,
CPU is more flexible compared to hardware when it comes to generating sound. This is because of relatively slow output rate needed for tone generation (40-200kHz). It is convenient to store ADSR profile in memory array, rather than calculating it each time. Usually the ADSR profile is much slower than waveform period, so small inaccuracies do not matter. For better accuracy and smaller RAM space, two arrays can be utilized to store the AD (fast) and SR (slow) portions of the envelope.
Another issue using UDB is that each voice requires its own ADSR generator, so you will run out of hardware rather quickly.
You can find a polyphonic piano basic demo project, using simple interrupt technique here:
Polyphonic piano basic demo using KIT-059 and MIDI Keyboard
/odissey1
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
The idea is to drive an analog synth chip, AS3944. I believe you have had a project based on the same voice IC. I think I will just generate envelopes using tables in the memory, instead of calculating them sample-by-sample. Thanks for the brilliant and informative reply, I accepted it is a solution.