Author |
Message |
JovianPyx
Joined: Nov 20, 2007 Posts: 1988 Location: West Red Spot, Jupiter
Audio files: 224
|
Posted: Mon Feb 22, 2010 10:09 am Post subject:
Microtonal FM Bell Synth using FPGA |
|
|
Another experiment...
I was quite taken with what seraph has done with microtonal music and I want to experiment with it.
I have a 16 voice polyphonic FM bell synth (8 operators total per voice, organized as four 2-OP generators per voice) and I've embarked on a design modification to support microtonal music.
So far, I've recomputed the tuning ROM for 96ET instead of 12ET. Using a microtune value of zero, the synth works as before in 12ET. The tuning ROM will support 12ET, 24ET, 48ET and 96ET. Microtuning is implemented using a MIDI undefined continuous controller number 0x66.
This will work as follows:
The microtune amount is 0 to 7, positive only, so microtuning can be accomplished only upward. The reason I did this is that I will be using a sequencer (Cakewalk) to sequence my work. Cakewalk doesn't support negative numbers for CC messages. I could still have used negative numbers but they would have to tbe encoded in Cakewalk as "positive" values and would make things confusing. Using only positive microtune values allows me to see the tuning easily. And of course, the result of negative values are still possible by dropping the note by one semitone first.
I may decide to allow negative microtune values by using CC 0x66 for positive values and CC 0x67 for negative values, where any CC 0x66 replaces CC 0x67 values and vice versa.
The synth will initialize with microtuning set to zero. If during the course of a sequence a CC66 message is received, the value will be saved and applied as the microtune value for all successive note-on messages. Each time a CC66 message is received, the microtune value is updated. Note that CC66 messages affected the tuning of only new note on messages, not notes which are currently ringing out.
I realize that 96ET will not support all possible microtuning schemes, but it is a start and is fairly easy to implement. If this experiment is successful, I will probably play with other scales. _________________ FPGA, dsPIC and Fatman Synth Stuff
Time flies like a banana. Fruit flies when you're having fun. BTW, Do these genes make my ass look fat? corruptio optimi pessima
|
|
Back to top
|
|
|
JovianPyx
Joined: Nov 20, 2007 Posts: 1988 Location: West Red Spot, Jupiter
Audio files: 224
|
Posted: Mon Feb 22, 2010 3:32 pm Post subject:
|
|
|
The first tests are complete, the system works as I intended. I've decided that the use of two CCs one for positive microtune offset and one for negative microtune offset would be desirable, so that's next to go into the design. _________________ FPGA, dsPIC and Fatman Synth Stuff
Time flies like a banana. Fruit flies when you're having fun. BTW, Do these genes make my ass look fat? corruptio optimi pessima
|
|
Back to top
|
|
|
emeb
Joined: Dec 16, 2008 Posts: 35 Location: Arizona
|
Posted: Mon Feb 22, 2010 4:35 pm Post subject:
|
|
|
Cool idea. What happens if you dial in both positive and negative offsets? Does one override the other, or do they cancel out? |
|
Back to top
|
|
|
JovianPyx
Joined: Nov 20, 2007 Posts: 1988 Location: West Red Spot, Jupiter
Audio files: 224
|
Posted: Mon Feb 22, 2010 5:06 pm Post subject:
|
|
|
Only the last one sent remains in effect.
For example, if 66 is sent with 3 (positive 3) and then 67 is sent with 4 (negative 4) new note on events will be offset negative 4, even if there are not intervening note on events.
Either CC having a zero value will set the microtune offset to zero.
Currently working on the code to implement. _________________ FPGA, dsPIC and Fatman Synth Stuff
Time flies like a banana. Fruit flies when you're having fun. BTW, Do these genes make my ass look fat? corruptio optimi pessima
|
|
Back to top
|
|
|
frijitz
Joined: May 04, 2007 Posts: 1734 Location: NM USA
Audio files: 54
|
Posted: Wed Feb 24, 2010 6:29 pm Post subject:
|
|
|
Oh, cool! Do try the 88cET scale also. I've been fooling with it for the last year or so, inspired by Seraph's 88 East composition.
Ian |
|
Back to top
|
|
|
JovianPyx
Joined: Nov 20, 2007 Posts: 1988 Location: West Red Spot, Jupiter
Audio files: 224
|
Posted: Wed Feb 24, 2010 8:06 pm Post subject:
|
|
|
Hi Ian!
Heh, I'm *just* getting started with this stuff.
Currently, I'm testing this synth, but I do like what I hear and I can't wait to finish the design work and do some actual music. If this works, I will want to mess with more nonstandard tunings including, but not necessarily ET ones.
Honestly, the reason I implemented 96ET is that given the design I targetted, it was fairly easy.
My current tests are to verify the design and they consist of various patterns in a MIDI sequencer. I'm very much liking what I hear even with just test patterns.
I foresee a need for designs that allow adjustable tuning per note and not just per octave, rather per the whole dang keyboard.
EDIT ADD: Ian, 88cET ?? What is the "c" for ? I thought about this today and it wouldn't necessarily be hard, just weird. - does one simply eliminate (for example) all of the B notes (the B wouldn't play in any octave)? Given an assumption that a standard keyboard is used... 11 x 2 x 2 x 2 doesn't seem too hard to implement if done that way and then all of the keyboard octaves behave the same way, i.e. I can transpose anything an octave up or down quite visually as usual.
EDIT ADD: I got the negative microtuning offset working. Now to see if I can make some music with this. I will certainly want to try the scale 88cET that you mentioned Ian. I will also have to go listen to the piece seraph did.
EDIT ADD: Also, Ian - I'm curious - are you using 88cET via an analog or digital implementation? _________________ FPGA, dsPIC and Fatman Synth Stuff
Time flies like a banana. Fruit flies when you're having fun. BTW, Do these genes make my ass look fat? corruptio optimi pessima
|
|
Back to top
|
|
|
JovianPyx
Joined: Nov 20, 2007 Posts: 1988 Location: West Red Spot, Jupiter
Audio files: 224
|
|
Back to top
|
|
|
JovianPyx
Joined: Nov 20, 2007 Posts: 1988 Location: West Red Spot, Jupiter
Audio files: 224
|
|
Back to top
|
|
|
JovianPyx
Joined: Nov 20, 2007 Posts: 1988 Location: West Red Spot, Jupiter
Audio files: 224
|
|
Back to top
|
|
|
emeb
Joined: Dec 16, 2008 Posts: 35 Location: Arizona
|
Posted: Fri Feb 26, 2010 10:48 pm Post subject:
|
|
|
Hey Scott - cool stuff! Love the discord / beating you can get with the microtonals, and the musical theme is very nice. |
|
Back to top
|
|
|
JovianPyx
Joined: Nov 20, 2007 Posts: 1988 Location: West Red Spot, Jupiter
Audio files: 224
|
Posted: Sat Feb 27, 2010 12:10 am Post subject:
|
|
|
Thank you Emeb.
This is my first microtonal composition experiment. I am discovering what an awesome new direction harmony can take, from sweet chords to almost-chords to oh-what-the-hell-is-that. I'm listening to the piece and I hear what appears to be notes with pitch bend - but there are no pitch messages! I have no idea how that happened but I like it! I like the new kinds of expressions I can get with these weird chords in sequence.
I'm not satisfied with the last 1/3 of this... I will probably mess with it some more. _________________ FPGA, dsPIC and Fatman Synth Stuff
Time flies like a banana. Fruit flies when you're having fun. BTW, Do these genes make my ass look fat? corruptio optimi pessima
|
|
Back to top
|
|
|
frijitz
Joined: May 04, 2007 Posts: 1734 Location: NM USA
Audio files: 54
|
Posted: Sat Feb 27, 2010 1:56 pm Post subject:
|
|
|
JovianPyx wrote: | I'm listening to the piece and I hear what appears to be notes with pitch bend - but there are no pitch messages! I have no idea how that happened but I like it! |
I'm glad to hear you say this, because I saw the same thing just a few days ago doing a bit of a noodle in 88cET! I spent about an hour trying to track the "problem" down, and finally realized it had to be real. Probably the microtonal oldtimers already know all about this.
I'm really enjoying your clips!
Ian |
|
Back to top
|
|
|
JovianPyx
Joined: Nov 20, 2007 Posts: 1988 Location: West Red Spot, Jupiter
Audio files: 224
|
|
Back to top
|
|
|
loydb
Joined: Feb 04, 2010 Posts: 393 Location: Providence, RI
|
Posted: Sat Feb 27, 2010 8:25 pm Post subject:
|
|
|
That's really beautiful. |
|
Back to top
|
|
|
blue hell
Site Admin
Joined: Apr 03, 2004 Posts: 24079 Location: The Netherlands, Enschede
Audio files: 278
G2 patch files: 320
|
Posted: Sun Feb 28, 2010 9:47 am Post subject:
|
|
|
Good stuff Scott! _________________ Jan
also .. could someone please turn down the thermostat a bit.
|
|
Back to top
|
|
|
JovianPyx
Joined: Nov 20, 2007 Posts: 1988 Location: West Red Spot, Jupiter
Audio files: 224
|
Posted: Sun Feb 28, 2010 5:38 pm Post subject:
|
|
|
Thank you loydb and Blue_Hell! _________________ FPGA, dsPIC and Fatman Synth Stuff
Time flies like a banana. Fruit flies when you're having fun. BTW, Do these genes make my ass look fat? corruptio optimi pessima
|
|
Back to top
|
|
|
JovianPyx
Joined: Nov 20, 2007 Posts: 1988 Location: West Red Spot, Jupiter
Audio files: 224
|
Posted: Sat Oct 23, 2010 2:46 pm Post subject:
|
|
|
Looking at the design, I noticed that there were 14 K locations of 18 bit wide RAM unused so I used that to add a stereo looping delay effect. Delay time and feedback amount are controllable. Time ranges from 0 to 220 mS. The right channel outputs the dry bells, the left channel outputs the looping delay output. _________________ FPGA, dsPIC and Fatman Synth Stuff
Time flies like a banana. Fruit flies when you're having fun. BTW, Do these genes make my ass look fat? corruptio optimi pessima
|
|
Back to top
|
|
|
blue hell
Site Admin
Joined: Apr 03, 2004 Posts: 24079 Location: The Netherlands, Enschede
Audio files: 278
G2 patch files: 320
|
Posted: Sat Oct 23, 2010 3:07 pm Post subject:
|
|
|
Nice Scott! _________________ Jan
also .. could someone please turn down the thermostat a bit.
|
|
Back to top
|
|
|
JovianPyx
Joined: Nov 20, 2007 Posts: 1988 Location: West Red Spot, Jupiter
Audio files: 224
|
Posted: Sun Oct 24, 2010 8:58 am Post subject:
|
|
|
I went through all of my designs and unfortunately, that one synth is the only design that had enough unused RAM to do a delay effect. _________________ FPGA, dsPIC and Fatman Synth Stuff
Time flies like a banana. Fruit flies when you're having fun. BTW, Do these genes make my ass look fat? corruptio optimi pessima
|
|
Back to top
|
|
|
kkissinger
Joined: Mar 28, 2006 Posts: 1354 Location: Kansas City, Mo USA
Audio files: 42
|
Posted: Sun Oct 24, 2010 2:31 pm Post subject:
|
|
|
Wow! What great sounds. Amazing to do all that with such inexpensive hardware. _________________ -- Kevin
http://kevinkissinger.com |
|
Back to top
|
|
|
JLS
Joined: Nov 05, 2005 Posts: 490 Location: Czech
Audio files: 30
G2 patch files: 316
|
|
Back to top
|
|
|
JovianPyx
Joined: Nov 20, 2007 Posts: 1988 Location: West Red Spot, Jupiter
Audio files: 224
|
Posted: Thu Mar 10, 2011 9:53 am Post subject:
|
|
|
JLS wrote: | Hi Scott
Sound demo very nice is possible post me source code for Spartan-3E ? |
Yes, I ported this one to the S-3E Starter Kit some time ago. I will post the source later today.
JLS wrote: | And one question - your Xarp synth is totaly great is possible porting this on Spartan-3E ? (lite version ?)
Many thanks info |
The Xarp-56 design uses a lot more RAM than the Spartan-3E 500K part has. It currently runs on a Spartan-3A DSP 1800 FPGA. I do, however, have something similar called the PolyDaWG which is an 8 string polyphonic synth. The difference is that the Xarp-56 has 56 string models, where PolyDawg has only 8. If all 8 are currently being used and a 9th request comes in, the oldest string's output is sacrificed for the new one. This usually isn't a problem, but there are some cases where you might be able to hear the "voice stealing" happen.
I have the PolyDaWG posted somewhere, but I'm sure the code is not the latest, so I will update and post the URL to it here.
All of these as well as my other synths use a VB.NET program to send sysex patch data to the synths via a PC COM port at 19.2 kBaud. I will post the source for that too. _________________ FPGA, dsPIC and Fatman Synth Stuff
Time flies like a banana. Fruit flies when you're having fun. BTW, Do these genes make my ass look fat? corruptio optimi pessima
|
|
Back to top
|
|
|
JovianPyx
Joined: Nov 20, 2007 Posts: 1988 Location: West Red Spot, Jupiter
Audio files: 224
|
Posted: Thu Mar 10, 2011 1:37 pm Post subject:
|
|
|
Here is a URL that points to the most up to date source code for my Microtonal FM Bell Synth. At the end of the page, you will find the source code for the Spartan-3E Start Kit. This version is microtone capable and is 16 voice polyphonic instead of the original 8 voice. The VB.NET patch editor project and source code are included in the zip that follows the Verilog source code.
It will function using a standard western 12 note chromatic scale unless you read through docs and code and implement the microtonal methods described therein. The scale I picked is 96ET, but it will also do 48ET, 24ET and of course, 12ET. The musical piece in the thread above uses microtones to get the strange pitch effect.
http://www.fpga.synth.net/pmwiki/pmwiki.php?n=FPGASynth.8vFM-2x4 _________________ FPGA, dsPIC and Fatman Synth Stuff
Time flies like a banana. Fruit flies when you're having fun. BTW, Do these genes make my ass look fat? corruptio optimi pessima
|
|
Back to top
|
|
|
JovianPyx
Joined: Nov 20, 2007 Posts: 1988 Location: West Red Spot, Jupiter
Audio files: 224
|
Posted: Thu Mar 10, 2011 2:39 pm Post subject:
|
|
|
Regarding PolyDaWG/8 ...
This is totally unrelated to the thread title Microtonal FM Bell Synth using FPGA but it's source code was requested and it's just a link anyway so you can read about the synth there or ignore this.
http://www.fpga.synth.net/pmwiki/pmwiki.php?n=FPGASynth.DigitalWaveguide
The article is a description of me going from knowing nothing to making a working Karplus-Strong polysynth. This synth is related to the Xarp-56 in that they both use the same Karplus-Strong system to model a vibrating string. Xarp-56 implements 56 string models while PolyDaWG implements 8, but will run on a Spartan-3E Starter Kit.
The lastest code is near the bottom. This synth requires no patch editor.
Here's a demo created with an early version: http://www.fpga.synth.net/pmwiki/uploads/FPGASynth/PolyDaWG8-2.mp3
The last chord is sustained and just cut on purpose, it demonstrates the nice long sustain that is possible - if left to ring out, it would have gone on for minutes. PolyDaWG/8 can be adjusted for much shorter sustain too. _________________ FPGA, dsPIC and Fatman Synth Stuff
Time flies like a banana. Fruit flies when you're having fun. BTW, Do these genes make my ass look fat? corruptio optimi pessima
|
|
Back to top
|
|
|
JLS
Joined: Nov 05, 2005 Posts: 490 Location: Czech
Audio files: 30
G2 patch files: 316
|
Posted: Fri Mar 11, 2011 1:02 am Post subject:
|
|
|
Hi Scott
Many thanks this great work !
FM Bell and other your wavequide synth is great for me experiments - i love it.
I'm working on mbed, propeller, pic and atmel synth projects - all programming in c++ and spin. Im very bad programmer vhdl is very hard for me - thank you for your source code for me teaching.
JLS _________________ Sorry my bad English
https://soundcloud.com/1jls
https://soundcloud.com/user-819966312-266044932
https://github.com/jlswbs |
|
Back to top
|
|
|
|