|
12
oscillators
72 x 2 voices
127 midi channels
|
Spartan
3E Virtual Analog Organ - V03
.
A Spartan 3E FPGA board is used
to build a remake of my PLD-ORGAN
project. Here, all components are made the digital way meaning,
that they are virtually modeled. The main PLD component is basically
the same as in the version of 2003 - only the analog components
like the wave generator and the filters are replaced. Also the
keyboard is virtually modeled and has been replaced by a simplified
MIDI-box being capable to play up to 65535 music notes sequentially.
Music Box / MIDI
Engine
The Music Engine
produces MIDI-like tone information, based on pre defined tone
information which is kept in a local memory in the FPGA. The
notes are initially copied to the RAM during synthesis process
of the FPGA. 127 MIDI notes are available, where 72 keys (6
octaves) are used. The data entry is done with the classical
piano roll method using an Microsoft Excel sheet which automatically
generates the code for the FPGA music player.
Music entry is easy this way because for an organ, there
is only on off required. The length of the lines = the cells
covered indicate the time which the sound has to be applied.
A second sheet analyzes the lines and eventually creates on
off tags from it which are text-summarized in the last column
finally.
The code in the final column is used as a so called COE-file
and will be loaded into the Block-RAM of the Xilinx FPGA during
the compilation process. The data format is TTTT.NN.II "point
of time", "note number", "intensity"
where 0 means "off".
Sound Engine
The sound synthesizer takes the music
notes and produces audio signals for each midi channel using
the virtual wave module and synthesis module described in the
physical organ project version 2003.
Limitations
Because of the limited space in the little Spartan 3e FPGA,
some restrictions do apply:
- only triangle or sine wave
is possible - only one large organ register is implemented
so far - only balanced tuning is available - no "analog"
distorted R2R behavior - no analog filtering / de-BIAS-ing
is done - PDM output is used instead of S/PDIF - no music
keyboard control
Enhancements
- digital pre filtering is applied to emulate the former
analog conversion circuit - digital analog noise is introduced
to smooth calculation and emulate analog noise - analog boost
is applied using amp modeling to emulate non linearity -
automatic music player included to emulate keyboard.
Comparison
The following table shows the features of the two organ projects
and their virtual remakes:
|
PLD ORGAN 1 |
PLD ORGAN 2 |
|
V PLD ORGAN '01 |
V PLD ORGAN '03 |
|
2001 |
2003 |
|
2006 |
2007 |
|
XC4000 |
XC4000 |
|
S3 |
S3E |
Clock Frequency |
15 MHz |
25 MHz |
|
15 MHz |
25 MHz |
Master Tones |
12 |
12 |
|
12 |
12 |
Octaves |
5 |
6 |
|
5 |
6 |
Tones |
60 |
72 |
|
60 |
72 |
Keyboard |
61 |
72 |
|
61 |
72 |
Tuning |
balanced |
balanced / pure |
|
balanced |
balanced / pure |
Wave Forms |
3 |
4 |
|
3 |
3 |
Tone Accuracy |
99,27% |
99,85% |
|
99,27% |
99,85% |
Max Error |
0,34 Hz |
0,17 Hz |
|
0,34 Hz |
0,17 Hz |
Phase Res |
7 Bits |
8 Bits |
|
7 Bits |
8 Bits |
Amplitude Res |
6 Bits |
8 Bits |
|
6 Bits |
8 Bits |
AD - Conversion |
real R2R |
real R2R |
|
linear |
linear |
Filtering |
analog |
analog |
|
binary IIR |
binary IIR |
Filter Groups |
60 |
60 |
|
5 |
12 |
Grouped Notes |
1 |
1 |
|
12 |
6 |
Summation |
1 |
1 |
|
1 |
2 |
Outputs |
Mono |
Mono |
|
Mono |
L, R |
DAC OUT |
10 Bits |
12 Bits |
|
12 Bits |
16 Bits |
One Bit Out |
|
|
|
PDM 15 MHz |
PDM 25 MHz |
Stereo |
Mono |
Mono |
|
Panned XY |
Quasi XY + Quasi AB |
|
|
|
|
|
|
Configuration |
|
|
|
|
|
Octaves |
5 |
6 |
|
|
|
Registers |
2 |
3 |
|
|
|
Modules |
10 |
18 |
|
|
|
|
|
|
|
|
|
|
* balanced / pure tuning setup at compile time |
|
* balanced / pure tuning setup at run time
|
|
* R2R -
network with non ideal linearity |
|
* no R2R
- network -> ideal linearity |
|
* R2R -
network makes individual tuning possible |
|
* no R2R
- network -> no individual note behavior |
|
* true analog filtering |
|
|
* notes
grouped before filtering |
|
* 18 analog wave modules required to create
full organ setup |
* all modules included |
|
Download an
example FPGA-programming-file for S3E:
churchdemo If
you do not have this hardware, you can listen to a
sound demo
Click here
for the PLD ORGAN 2001
|
|