electro-music.com   Dedicated to experimental electro-acoustic
and electronic music
 
    Front Page  |  Articles  |  Radio
 |  Media  |  Forum  |  Wiki  |  Links  |  Store
Forum with support of Syndicator RSS
 FAQFAQ   CalendarCalendar   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   LinksLinks
 RegisterRegister   ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in  Chat RoomChat Room 
Live streaming at radio.electro-music.com

  host / artist show at your time
  EdisonRex Edison's Electronic Review
Please visit the chat
 Forum index » DIY Hardware and Software » Developers' Corner
Microtonal FM Bell Synth using FPGA
Post new topic   Reply to topic Moderators: DrJustice
Page 1 of 1 [25 Posts]
View unread posts
View new posts in the last week
Mark the topic unread :: View previous topic :: View next topic
Author Message
JovianPyx



Joined: Nov 20, 2007
Posts: 1247
Location: West Red Spot, Jupiter
Audio files: 161

PostPosted: Mon Feb 22, 2010 10:09 am    Post subject: Microtonal FM Bell Synth using FPGA Reply with quote  Mark this post and the followings unread

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
View user's profile Send private message Visit poster's website
JovianPyx



Joined: Nov 20, 2007
Posts: 1247
Location: West Red Spot, Jupiter
Audio files: 161

PostPosted: Mon Feb 22, 2010 3:32 pm    Post subject: Reply with quote  Mark this post and the followings unread

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
View user's profile Send private message Visit poster's website
emeb



Joined: Dec 16, 2008
Posts: 27
Location: Arizona

PostPosted: Mon Feb 22, 2010 4:35 pm    Post subject: Reply with quote  Mark this post and the followings unread

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
View user's profile Send private message
JovianPyx



Joined: Nov 20, 2007
Posts: 1247
Location: West Red Spot, Jupiter
Audio files: 161

PostPosted: Mon Feb 22, 2010 5:06 pm    Post subject: Reply with quote  Mark this post and the followings unread

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
View user's profile Send private message Visit poster's website
frijitz



Joined: May 04, 2007
Posts: 1712
Location: NM USA
Audio files: 54

PostPosted: Wed Feb 24, 2010 6:29 pm    Post subject: Reply with quote  Mark this post and the followings unread

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.

Very Happy

Ian
Back to top
View user's profile Send private message
JovianPyx



Joined: Nov 20, 2007
Posts: 1247
Location: West Red Spot, Jupiter
Audio files: 161

PostPosted: Wed Feb 24, 2010 8:06 pm    Post subject: Reply with quote  Mark this post and the followings unread

Hi Ian!

Smile 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
View user's profile Send private message Visit poster's website
JovianPyx



Joined: Nov 20, 2007
Posts: 1247
Location: West Red Spot, Jupiter
Audio files: 161

PostPosted: Wed Feb 24, 2010 11:24 pm    Post subject: Reply with quote  Mark this post and the followings unread

Here is a very small taste of this synth. In this short clip, four notes are microtuned off of 12ET, two are tuned up, two are tuned down. I just fiddled until I got the bell patch.


microtonal_96ET_FM_bell_synth.mp3
 Description:
short sample of the 96ET microtunable MIDI FM bell synth

Download
 Filename:  microtonal_96ET_FM_bell_synth.mp3
 Filesize:  469.07 KB
 Downloaded:  293 Time(s)


_________________
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
View user's profile Send private message Visit poster's website
JovianPyx



Joined: Nov 20, 2007
Posts: 1247
Location: West Red Spot, Jupiter
Audio files: 161

PostPosted: Thu Feb 25, 2010 3:51 pm    Post subject: Reply with quote  Mark this post and the followings unread

This seems to be evolving...

EDIT ADD: This synthesizer is running on a $49 FPGA development board. The sample was recorded without any effects.


microtonal_96ET_FM_bell_synth_02.mp3
 Description:
A bit longer (0:44), based on the same theme as the previous.
Different bell sound.

Download
 Filename:  microtonal_96ET_FM_bell_synth_02.mp3
 Filesize:  700.5 KB
 Downloaded:  257 Time(s)


_________________
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
View user's profile Send private message Visit poster's website
JovianPyx



Joined: Nov 20, 2007
Posts: 1247
Location: West Red Spot, Jupiter
Audio files: 161

PostPosted: Fri Feb 26, 2010 9:59 pm    Post subject: Reply with quote  Mark this post and the followings unread

Here's more...


microtonal_96ET_FM_bell_synth_04.mp3
 Description:
Time Bubble

Download
 Filename:  microtonal_96ET_FM_bell_synth_04.mp3
 Filesize:  3.12 MB
 Downloaded:  281 Time(s)


_________________
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
View user's profile Send private message Visit poster's website
emeb



Joined: Dec 16, 2008
Posts: 27
Location: Arizona

PostPosted: Fri Feb 26, 2010 10:48 pm    Post subject: Reply with quote  Mark this post and the followings unread

Hey Scott - cool stuff! Love the discord / beating you can get with the microtonals, and the musical theme is very nice.
Back to top
View user's profile Send private message
JovianPyx



Joined: Nov 20, 2007
Posts: 1247
Location: West Red Spot, Jupiter
Audio files: 161

PostPosted: Sat Feb 27, 2010 12:10 am    Post subject: Reply with quote  Mark this post and the followings unread

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
View user's profile Send private message Visit poster's website
frijitz



Joined: May 04, 2007
Posts: 1712
Location: NM USA
Audio files: 54

PostPosted: Sat Feb 27, 2010 1:56 pm    Post subject: Reply with quote  Mark this post and the followings unread

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!

Very Happy

Ian
Back to top
View user's profile Send private message
JovianPyx



Joined: Nov 20, 2007
Posts: 1247
Location: West Red Spot, Jupiter
Audio files: 161

PostPosted: Sat Feb 27, 2010 2:45 pm    Post subject: Reply with quote  Mark this post and the followings unread

Wow - thanks Ian, that's great encouragement - I think it's a serendipitous artifact of some kind, probably psychoacoustic - which is too much fun all by itself.

This code has the ability to do pitchwheel, but the code is commented. I had to go look at the code because I thought the same as you did. There are no pitch wheel messages in the piece and the synth is not capable of portamento (it could be made to tho).

And here is what is probably the final version of this...

I changed the EQ to emphasize bass in this recording. Also, the content of the piece has more bass bells.


Time_Bubble_-_ Escher's_Cathedral.mp3
 Description:
This is it for now...

Download
 Filename:  Time_Bubble_-_ Escher's_Cathedral.mp3
 Filesize:  3.07 MB
 Downloaded:  527 Time(s)


_________________
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
View user's profile Send private message Visit poster's website
loydb



Joined: Feb 04, 2010
Posts: 369
Location: Providence, RI

PostPosted: Sat Feb 27, 2010 8:25 pm    Post subject: Reply with quote  Mark this post and the followings unread

That's really beautiful.
Back to top
View user's profile Send private message
Blue Hell
Site Admin


Joined: Apr 03, 2004
Posts: 20615
Location: The Netherlands, Enschede
Audio files: 148
G2 patch files: 318

PostPosted: Sun Feb 28, 2010 9:47 am    Post subject: Reply with quote  Mark this post and the followings unread

Good stuff Scott!
_________________
Jan
Back to top
View user's profile Send private message Visit poster's website
JovianPyx



Joined: Nov 20, 2007
Posts: 1247
Location: West Red Spot, Jupiter
Audio files: 161

PostPosted: Sun Feb 28, 2010 5:38 pm    Post subject: Reply with quote  Mark this post and the followings unread

Smile 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
View user's profile Send private message Visit poster's website
JovianPyx



Joined: Nov 20, 2007
Posts: 1247
Location: West Red Spot, Jupiter
Audio files: 161

PostPosted: Sat Oct 23, 2010 2:46 pm    Post subject: Reply with quote  Mark this post and the followings unread

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
View user's profile Send private message Visit poster's website
Blue Hell
Site Admin


Joined: Apr 03, 2004
Posts: 20615
Location: The Netherlands, Enschede
Audio files: 148
G2 patch files: 318

PostPosted: Sat Oct 23, 2010 3:07 pm    Post subject: Reply with quote  Mark this post and the followings unread

Nice Scott!
_________________
Jan
Back to top
View user's profile Send private message Visit poster's website
JovianPyx



Joined: Nov 20, 2007
Posts: 1247
Location: West Red Spot, Jupiter
Audio files: 161

PostPosted: Sun Oct 24, 2010 8:58 am    Post subject: Reply with quote  Mark this post and the followings unread

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. Sad
_________________
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
View user's profile Send private message Visit poster's website
kkissinger



Joined: Mar 28, 2006
Posts: 1218
Location: Kansas City, Mo USA
Audio files: 29

PostPosted: Sun Oct 24, 2010 2:31 pm    Post subject: Reply with quote  Mark this post and the followings unread

Wow! What great sounds. Amazing to do all that with such inexpensive hardware.
_________________
-- Kevin
http://kevinkissinger.com
Back to top
View user's profile Send private message Visit poster's website
JLS



Joined: Nov 05, 2005
Posts: 426
Location: Czech
Audio files: 27
G2 patch files: 275

PostPosted: Thu Mar 10, 2011 3:03 am    Post subject: Reply with quote  Mark this post and the followings unread

Hi Scott

Sound demo very nice is possible post me source code for Spartan-3E ?

And one question - your Xarp synth is totaly great is possible porting this on Spartan-3E ? (lite version ?)

Many thanks info

_________________
Sorry my bad English Smile

http://jlswbs.blogspot.com
http://jlswbs.wordpress.com
http://jls.wbs.cz
Back to top
View user's profile Send private message Visit poster's website
JovianPyx



Joined: Nov 20, 2007
Posts: 1247
Location: West Red Spot, Jupiter
Audio files: 161

PostPosted: Thu Mar 10, 2011 9:53 am    Post subject: Reply with quote  Mark this post and the followings unread

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
View user's profile Send private message Visit poster's website
JovianPyx



Joined: Nov 20, 2007
Posts: 1247
Location: West Red Spot, Jupiter
Audio files: 161

PostPosted: Thu Mar 10, 2011 1:37 pm    Post subject: Reply with quote  Mark this post and the followings unread

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
View user's profile Send private message Visit poster's website
JovianPyx



Joined: Nov 20, 2007
Posts: 1247
Location: West Red Spot, Jupiter
Audio files: 161

PostPosted: Thu Mar 10, 2011 2:39 pm    Post subject: Reply with quote  Mark this post and the followings unread

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
View user's profile Send private message Visit poster's website
JLS



Joined: Nov 05, 2005
Posts: 426
Location: Czech
Audio files: 27
G2 patch files: 275

PostPosted: Fri Mar 11, 2011 1:02 am    Post subject: Reply with quote  Mark this post and the followings unread

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 Smile

http://jlswbs.blogspot.com
http://jlswbs.wordpress.com
http://jls.wbs.cz
Back to top
View user's profile Send private message Visit poster's website
Display posts from previous:   
Post new topic   Reply to topic Moderators: DrJustice
Page 1 of 1 [25 Posts]
View unread posts
View new posts in the last week
Mark the topic unread :: View previous topic :: View next topic
 Forum index » DIY Hardware and Software » Developers' Corner
Jump to:  

You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You can download files in this forum
e-m mkii

Please support our site. If you click through and buy from
our affiliate partners, we earn a small commission.


Forum with support of Syndicator RSS
Powered by phpBB © 2001, 2005 phpBB Group
Copyright © 2003 through 2009 by electro-music.com - Conditions Of Use