preenfm Forum
PreenFM => preenfm2 and preenfm3 => Topic started by: SMF on February 06, 2021, 09:36:06 PM
-
Hi,
this is not directly related to the PreenFM in any way, so please bear with me for this off-topic post... But I think it could be interesting for the one or the other here. I always wanted a RoboVox (who doesn't?). But getting the chips is getting more and more difficult and I didn't want to rip it off one of my extension-cards. So, I tried to emulate the thing on a microcontroller (UNO R3 with AT16U for USB). I am quite pleased with the result:
https://youtu.be/50V5BVDGWm0
I am currently in the process of smoothing out some rough edges in the FW. After that I would be pleased to share it.
best,
Stefan
-
Please do!
Is it based on LPC? It sounds different....
-
Really cool. Want ;D
-
Is it based on LPC? It sounds different....
No, it is based on "synchronous-windowed-additive-synthesis". This tries to relatively closely model the output of a bandpass-filter when fed with a sawtooth wave (or noise). So it should sound quite similar to the Votrax SC-2 but of course not identical. The Votrax used (depending on the model) either a sawtooth or a pulse-wave (in both cases mixed with noise) to excite three bandpass filters.
LPC indeed does sound completely different. More like a speak'n'spell...
Essentially the synthesis-engine calculates 7 wavetable-oscillators, four of them synchronised to each other and windowed for the voiced sounds and three of them free-running for the unvoiced sounds. All of these oscillators produce a sine-wave. In case of the three oscillators for the unvoiced sounds the oscillators are frequency-modulated with white-noise to simulate the output of a bandpass-filter fed with white-noise.
Usage currently works like this:
- On the lowest three MIDI octaves you can choose the f0 frequency (pitch of the voice). This will not trigger a phoneme. It just silently sets the frequency.
- On the octaves above that you can choose to play several phonemes. If played legato these morph into each other. Otherwise they are played separately.
- Using CCs you can
- change the position of the formants from super-male to Mickey Mouse
- change the noisiness of the voice
- the morphing-time, tremolo,...
- ...
best,
Stefan
-
brilliant stuff
:)
-
Compile this with your favourite Arduino IDE, push it to the UNO and get your first RoboVox-Preview while it is hot... ;D
Notes:
a) you should use a LP-filter on Pin 11 (Audio-Out) to get rid of aliasing above ~8kHz
b) you should use a HP-filter (before or after the LP mentioned under (a)) with about 25Hz to get rid of the DC component
c) you should either
* attach MIDI via TX/RXs pins (see usual tutorials for this) OR
* re-programm the AT8U/AT16U with either HIDuino or MIDIklik, so that it behaves as USB-MIDI-interface.
Brief Usage:
=========
Play Midi-Notes C0-C3 (omni-channel) for setting f0. Play higher notes to select phoneme. Velocity changes volume. CCs for controling/altering parameters: See source.
And don't forget to look at the "usage_example.mid" for more details.
Have fun!
Stefan
PS: If you actually do stuff with it, let me know... ;-)