preenfm Forum
PreenFM => preenfm2 and preenfm3 => Topic started by: dimifrag on January 16, 2014, 09:22:23 AM
-
Hi PreenFM2 Community!
It is possible to add more waveforms in PreenFM2 like the Ableton Operator e.x. Saw D?
-
I don't think Operator is a classic FM synth, it looks more like a hybrid of analogue style synthesis and FM.
That's not to say that more waveforms aren't possible, but you aren't going be able to directly replicate the sounds of Operator with a Preen.
Proper FM has algorithms, early FM modes on analogue synths were just using one oscillator to modulate another. Looks like that is what Operator does?
-
Don't know about Operator.
But the preenFM2 wavetables are in the fast access memory of the MCU.
The available 64kB are already full.
-
how can make the saw d wave into preen fm to make a dub stabs?
-
how can make the saw d wave into preen fm to make a dub stabs?
1 - Get the PreenFM code on github.
2 - Get one cycle of the "saw d" wave, turn it into a C float array of 1024 or 2048 values between -1.0 and 1.0.
3 - Modify the wave.c files and replace one of the waveforms buy yours.
4- recompile and flash the new firmware
Easy ? No ;-)
Xavier
-
its not easy for me i suppose, i don't know how can change the waves from source code! :-\
-
It's not easy true. If you can get the source to compile locally then I'm sure it would be possible for someone to produce a patch to modify the firmware.
But you would have to lose a standard waveform to replace it with the new one, your firmware would then be incompatible with presets (not always such a bad thing ;) ).
To be honest, FM is less about the starting point (the waveform) and more about modifying the waveform with modulators and algorithms.
It seems Operator is concerned with filtering waveforms and applying some FM, which is close to the subtractive way of making sounds.
-
To be honest, FM is less about the starting point (the waveform) and more about modifying the waveform with modulators and algorithms.
What 6581punk says ;-)
I don't know how can change the waves from source code!
That's not the hardest point.
Give me the table required in step 2 and i can compile it for you.
Expected format can be seen here :
https://github.com/Ixox/preenFM2/blob/master/waveforms/waves.c
You'll have to investigate and work on your own for this step 2.
Xavier
-
Operator is kinda improved 4OP FM with ability to draw your own WF
(http://wikisound.org/images/1/15/Operator.jpg)
(http://wikisound.org/images/7/7e/Operator_global_display.jpg)
+ Filter
I think that having 6 ops instead of 4 you can freely mimick Saw D with 2 OPs somehow
-
(http://img294.imageshack.us/img294/8171/feedbackp.png)
SwD looks like ordinary Saw WF
-
Perhaps someone can create a little Java app that lets you draw a waveform and the output is a C data required?
-
thanks all for your answer!
kuzma_p you have way to make the SawD WF with PreenFM2?
-
Hi everybody,
I transcribed waveform sawD under the agreed form (1024 values):
0 -0,001953125 -0,00390625 -0,005859375 -0,0078125 -0,009765625 -0,01171875 -0,013671875 -0,015625 -0,017578125 -0,01953125 -0,021484375 -0,0234375 -0,025390625 -0,02734375 -0,029296875 -0,03125 -0,033203125 -0,03515625 -0,037109375 -0,0390625 -0,041015625 -0,04296875 -0,044921875 -0,046875 -0,048828125 -0,05078125 -0,052734375 -0,0546875 -0,056640625 -0,05859375 -0,060546875 -0,0625 -0,064453125 -0,06640625 -0,068359375 -0,0703125 -0,072265625 -0,07421875 -0,076171875 -0,078125 -0,080078125 -0,08203125 -0,083984375 -0,0859375 -0,087890625 -0,08984375 -0,091796875 -0,09375 -0,095703125 -0,09765625 -0,099609375 -0,1015625 -0,103515625 -0,10546875 -0,107421875 -0,109375 -0,111328125 -0,11328125 -0,115234375 -0,1171875 -0,119140625 -0,12109375 -0,123046875 -0,125 -0,126953125 -0,12890625 -0,130859375 -0,1328125 -0,134765625 -0,13671875 -0,138671875 -0,140625 -0,142578125 -0,14453125 -0,146484375 -0,1484375 -0,150390625 -0,15234375 -0,154296875 -0,15625 -0,158203125 -0,16015625 -0,162109375 -0,1640625 -0,166015625 -0,16796875 -0,169921875 -0,171875 -0,173828125 -0,17578125 -0,177734375 -0,1796875 -0,181640625 -0,18359375 -0,185546875 -0,1875 -0,189453125 -0,19140625 -0,193359375 -0,1953125 -0,197265625 -0,19921875 -0,201171875 -0,203125 -0,205078125 -0,20703125 -0,208984375 -0,2109375 -0,212890625 -0,21484375 -0,216796875 -0,21875 -0,220703125 -0,22265625 -0,224609375 -0,2265625 -0,228515625 -0,23046875 -0,232421875 -0,234375 -0,236328125 -0,23828125 -0,240234375 -0,2421875 -0,244140625 -0,24609375 -0,248046875 -0,25 -0,251953125 -0,25390625 -0,255859375 -0,2578125 -0,259765625 -0,26171875 -0,263671875 -0,265625 -0,267578125 -0,26953125 -0,271484375 -0,2734375 -0,275390625 -0,27734375 -0,279296875 -0,28125 -0,283203125 -0,28515625 -0,287109375 -0,2890625 -0,291015625 -0,29296875 -0,294921875 -0,296875 -0,298828125 -0,30078125 -0,302734375 -0,3046875 -0,306640625 -0,30859375 -0,310546875 -0,3125 -0,314453125 -0,31640625 -0,318359375 -0,3203125 -0,322265625 -0,32421875 -0,326171875 -0,328125 -0,330078125 -0,33203125 -0,333984375 -0,3359375 -0,337890625 -0,33984375 -0,341796875 -0,34375 -0,345703125 -0,34765625 -0,349609375 -0,3515625 -0,353515625 -0,35546875 -0,357421875 -0,359375 -0,361328125 -0,36328125 -0,365234375 -0,3671875 -0,369140625 -0,37109375 -0,373046875 -0,375 -0,376953125 -0,37890625 -0,380859375 -0,3828125 -0,384765625 -0,38671875 -0,388671875 -0,390625 -0,392578125 -0,39453125 -0,396484375 -0,3984375 -0,400390625 -0,40234375 -0,404296875 -0,40625 -0,408203125 -0,41015625 -0,412109375 -0,4140625 -0,416015625 -0,41796875 -0,419921875 -0,421875 -0,423828125 -0,42578125 -0,427734375 -0,4296875 -0,431640625 -0,43359375 -0,435546875 -0,4375 -0,439453125 -0,44140625 -0,443359375 -0,4453125 -0,447265625 -0,44921875 -0,451171875 -0,453125 -0,455078125 -0,45703125 -0,458984375 -0,4609375 -0,462890625 -0,46484375 -0,466796875 -0,46875 -0,470703125 -0,47265625 -0,474609375 -0,4765625 -0,478515625 -0,48046875 -0,482421875 -0,484375 -0,486328125 -0,48828125 -0,490234375 -0,4921875 -0,494140625 -0,49609375 -0,498046875 -0,5 -0,501953125 -0,50390625 -0,505859375 -0,5078125 -0,509765625 -0,51171875 -0,513671875 -0,515625 -0,517578125 -0,51953125 -0,521484375 -0,5234375 -0,525390625 -0,52734375 -0,529296875 -0,53125 -0,533203125 -0,53515625 -0,537109375 -0,5390625 -0,541015625 -0,54296875 -0,544921875 -0,546875 -0,548828125 -0,55078125 -0,552734375 -0,5546875 -0,556640625 -0,55859375 -0,560546875 -0,5625 -0,564453125 -0,56640625 -0,568359375 -0,5703125 -0,572265625 -0,57421875 -0,576171875 -0,578125 -0,580078125 -0,58203125 -0,583984375 -0,5859375 -0,587890625 -0,58984375 -0,591796875 -0,59375 -0,595703125 -0,59765625 -0,599609375 -0,6015625 -0,603515625 -0,60546875 -0,607421875 -0,609375 -0,611328125 -0,61328125 -0,615234375 -0,6171875 -0,619140625 -0,62109375 -0,623046875 -0,625 -0,626953125 -0,62890625 -0,630859375 -0,6328125 -0,634765625 -0,63671875 -0,638671875 -0,640625 -0,642578125 -0,64453125 -0,646484375 -0,6484375 -0,650390625 -0,65234375 -0,654296875 -0,65625 -0,658203125 -0,66015625 -0,662109375 -0,6640625 -0,666015625 -0,66796875 -0,669921875 -0,671875 -0,673828125 -0,67578125 -0,677734375 -0,6796875 -0,681640625 -0,68359375 -0,685546875 -0,6875 -0,689453125 -0,69140625 -0,693359375 -0,6953125 -0,697265625 -0,69921875 -0,701171875 -0,703125 -0,705078125 -0,70703125 -0,708984375 -0,7109375 -0,712890625 -0,71484375 -0,716796875 -0,71875 -0,720703125 -0,72265625 -0,724609375 -0,7265625 -0,728515625 -0,73046875 -0,732421875 -0,734375 -0,736328125 -0,73828125 -0,740234375 -0,7421875 -0,744140625 -0,74609375 -0,748046875 -0,75 -0,751953125 -0,75390625 -0,755859375 -0,7578125 -0,759765625 -0,76171875 -0,763671875 -0,765625 -0,767578125 -0,76953125 -0,771484375 -0,7734375 -0,775390625 -0,77734375 -0,779296875 -0,78125 -0,783203125 -0,78515625 -0,787109375 -0,7890625 -0,791015625 -0,79296875 -0,794921875 -0,796875 -0,798828125 -0,80078125 -0,802734375 -0,8046875 -0,806640625 -0,80859375 -0,810546875 -0,8125 -0,814453125 -0,81640625 -0,818359375 -0,8203125 -0,822265625 -0,82421875 -0,826171875 -0,828125 -0,830078125 -0,83203125 -0,833984375 -0,8359375 -0,837890625 -0,83984375 -0,841796875 -0,84375 -0,845703125 -0,84765625 -0,849609375 -0,8515625 -0,853515625 -0,85546875 -0,857421875 -0,859375 -0,861328125 -0,86328125 -0,865234375 -0,8671875 -0,869140625 -0,87109375 -0,873046875 -0,875 -0,876953125 -0,87890625 -0,880859375 -0,8828125 -0,884765625 -0,88671875 -0,888671875 -0,890625 -0,892578125 -0,89453125 -0,896484375 -0,8984375 -0,900390625 -0,90234375 -0,904296875 -0,90625 -0,908203125 -0,91015625 -0,912109375 -0,9140625 -0,916015625 -0,91796875 -0,919921875 -0,921875 -0,923828125 -0,92578125 -0,927734375 -0,9296875 -0,931640625 -0,93359375 -0,935546875 -0,9375 -0,939453125 -0,94140625 -0,943359375 -0,9453125 -0,947265625 -0,94921875 -0,951171875 -0,953125 -0,955078125 -0,95703125 -0,958984375 -0,9609375 -0,962890625 -0,96484375 -0,966796875 -0,96875 -0,970703125 -0,97265625 -0,974609375 -0,9765625 -0,978515625 -0,98046875 -0,982421875 -0,984375 -0,986328125 -0,98828125 -0,990234375 -0,9921875 -0,994140625 -0,99609375 -0,998046875 1 0,998046875 0,99609375 0,994140625 0,9921875 0,990234375 0,98828125 0,986328125 0,984375 0,982421875 0,98046875 0,978515625 0,9765625 0,974609375 0,97265625 0,970703125 0,96875 0,966796875 0,96484375 0,962890625 0,9609375 0,958984375 0,95703125 0,955078125 0,953125 0,951171875 0,94921875 0,947265625 0,9453125 0,943359375 0,94140625 0,939453125 0,9375 0,935546875 0,93359375 0,931640625 0,9296875 0,927734375 0,92578125 0,923828125 0,921875 0,919921875 0,91796875 0,916015625 0,9140625 0,912109375 0,91015625 0,908203125 0,90625 0,904296875 0,90234375 0,900390625 0,8984375 0,896484375 0,89453125 0,892578125 0,890625 0,888671875 0,88671875 0,884765625 0,8828125 0,880859375 0,87890625 0,876953125 0,875 0,873046875 0,87109375 0,869140625 0,8671875 0,865234375 0,86328125 0,861328125 0,859375 0,857421875 0,85546875 0,853515625 0,8515625 0,849609375 0,84765625 0,845703125 0,84375 0,841796875 0,83984375 0,837890625 0,8359375 0,833984375 0,83203125 0,830078125 0,828125 0,826171875 0,82421875 0,822265625 0,8203125 0,818359375 0,81640625 0,814453125 0,8125 0,810546875 0,80859375 0,806640625 0,8046875 0,802734375 0,80078125 0,798828125 0,796875 0,794921875 0,79296875 0,791015625 0,7890625 0,787109375 0,78515625 0,783203125 0,78125 0,779296875 0,77734375 0,775390625 0,7734375 0,771484375 0,76953125 0,767578125 0,765625 0,763671875 0,76171875 0,759765625 0,7578125 0,755859375 0,75390625 0,751953125 0,75 0,748046875 0,74609375 0,744140625 0,7421875 0,740234375 0,73828125 0,736328125 0,734375 0,732421875 0,73046875 0,728515625 0,7265625 0,724609375 0,72265625 0,720703125 0,71875 0,716796875 0,71484375 0,712890625 0,7109375 0,708984375 0,70703125 0,705078125 0,703125 0,701171875 0,69921875 0,697265625 0,6953125 0,693359375 0,69140625 0,689453125 0,6875 0,685546875 0,68359375 0,681640625 0,6796875 0,677734375 0,67578125 0,673828125 0,671875 0,669921875 0,66796875 0,666015625 0,6640625 0,662109375 0,66015625 0,658203125 0,65625 0,654296875 0,65234375 0,650390625 0,6484375 0,646484375 0,64453125 0,642578125 0,640625 0,638671875 0,63671875 0,634765625 0,6328125 0,630859375 0,62890625 0,626953125 0,625 0,623046875 0,62109375 0,619140625 0,6171875 0,615234375 0,61328125 0,611328125 0,609375 0,607421875 0,60546875 0,603515625 0,6015625 0,599609375 0,59765625 0,595703125 0,59375 0,591796875 0,58984375 0,587890625 0,5859375 0,583984375 0,58203125 0,580078125 0,578125 0,576171875 0,57421875 0,572265625 0,5703125 0,568359375 0,56640625 0,564453125 0,5625 0,560546875 0,55859375 0,556640625 0,5546875 0,552734375 0,55078125 0,548828125 0,546875 0,544921875 0,54296875 0,541015625 0,5390625 0,537109375 0,53515625 0,533203125 0,53125 0,529296875 0,52734375 0,525390625 0,5234375 0,521484375 0,51953125 0,517578125 0,515625 0,513671875 0,51171875 0,509765625 0,5078125 0,505859375 0,50390625 0,501953125 0,5 0,498046875 0,49609375 0,494140625 0,4921875 0,490234375 0,48828125 0,486328125 0,484375 0,482421875 0,48046875 0,478515625 0,4765625 0,474609375 0,47265625 0,470703125 0,46875 0,466796875 0,46484375 0,462890625 0,4609375 0,458984375 0,45703125 0,455078125 0,453125 0,451171875 0,44921875 0,447265625 0,4453125 0,443359375 0,44140625 0,439453125 0,4375 0,435546875 0,43359375 0,431640625 0,4296875 0,427734375 0,42578125 0,423828125 0,421875 0,419921875 0,41796875 0,416015625 0,4140625 0,412109375 0,41015625 0,408203125 0,40625 0,404296875 0,40234375 0,400390625 0,3984375 0,396484375 0,39453125 0,392578125 0,390625 0,388671875 0,38671875 0,384765625 0,3828125 0,380859375 0,37890625 0,376953125 0,375 0,373046875 0,37109375 0,369140625 0,3671875 0,365234375 0,36328125 0,361328125 0,359375 0,357421875 0,35546875 0,353515625 0,3515625 0,349609375 0,34765625 0,345703125 0,34375 0,341796875 0,33984375 0,337890625 0,3359375 0,333984375 0,33203125 0,330078125 0,328125 0,326171875 0,32421875 0,322265625 0,3203125 0,318359375 0,31640625 0,314453125 0,3125 0,310546875 0,30859375 0,306640625 0,3046875 0,302734375 0,30078125 0,298828125 0,296875 0,294921875 0,29296875 0,291015625 0,2890625 0,287109375 0,28515625 0,283203125 0,28125 0,279296875 0,27734375 0,275390625 0,2734375 0,271484375 0,26953125 0,267578125 0,265625 0,263671875 0,26171875 0,259765625 0,2578125 0,255859375 0,25390625 0,251953125 0,25 0,248046875 0,24609375 0,244140625 0,2421875 0,240234375 0,23828125 0,236328125 0,234375 0,232421875 0,23046875 0,228515625 0,2265625 0,224609375 0,22265625 0,220703125 0,21875 0,216796875 0,21484375 0,212890625 0,2109375 0,208984375 0,20703125 0,205078125 0,203125 0,201171875 0,19921875 0,197265625 0,1953125 0,193359375 0,19140625 0,189453125 0,1875 0,185546875 0,18359375 0,181640625 0,1796875 0,177734375 0,17578125 0,173828125 0,171875 0,169921875 0,16796875 0,166015625 0,1640625 0,162109375 0,16015625 0,158203125 0,15625 0,154296875 0,15234375 0,150390625 0,1484375 0,146484375 0,14453125 0,142578125 0,140625 0,138671875 0,13671875 0,134765625 0,1328125 0,130859375 0,12890625 0,126953125 0,125 0,123046875 0,12109375 0,119140625 0,1171875 0,115234375 0,11328125 0,111328125 0,109375 0,107421875 0,10546875 0,103515625 0,1015625 0,099609375 0,09765625 0,095703125 0,09375 0,091796875 0,08984375 0,087890625 0,0859375 0,083984375 0,08203125 0,080078125 0,078125 0,076171875 0,07421875 0,072265625 0,0703125 0,068359375 0,06640625 0,064453125 0,0625 0,060546875 0,05859375 0,056640625 0,0546875 0,052734375 0,05078125 0,048828125 0,046875 0,044921875 0,04296875 0,041015625 0,0390625 0,037109375 0,03515625 0,033203125 0,03125 0,029296875 0,02734375 0,025390625 0,0234375 0,021484375 0,01953125 0,017578125 0,015625 0,013671875 0,01171875 0,009765625 0,0078125 0,005859375 0,00390625 0,001953125
Could someone help me to integrate this waveform to the code?
Julien
-
Hi,
I had added a formant waveform and compiled my own copy of the os. It was super easy, and everyone on this forum was extremely helpful.
see this post:
http://ixox.fr/forum/index.php?topic=63412.0
-
Thank you!
I will seriously read this post.
Julien
-
I'll have to look into this too as I'd love to add some custom waveforms.
-
You'll notice that in firmware 2.00 some waveforms are not anymore in CCM (quick) RAM, and it works fine.
So add your waveforms at the bottom of "waves.c" without
__attribute__ ((section(".ccm")))
And you should be able to add a few.
My only remarks is that i'm not sure about adding complex waveform in a FM synthesis.
Hmm.. Maybe for the carrier operators...
If you create interesting patch with this don't hesitate to share ;)
Xavier
-
I'm actually looking to add simpler waveforms in some ways, at least less complicated than the included saw and square! A bandlimited triangle would be a nice one, I really like the sound of triangle-on-triangle FM. Just a bit more complex than sines alone.
I also want to add (softly) bandlimited saw and squares. Hard bandlimiting (where the harmonics are normal level up until the point they suddenly stop) sounds kind of like it's has a resonant filter on it (I guess your ear hears the top harmonic as a resonant peak). I'm plan to do some soft versions where the last few harmonics drop off a bit. The other ideas I had were simple waveforms with the fundamental and just one or two harmonics.
I have written a few additive waveform generators in Jesusonic so I just need to work out how to export them in the right format and set up the build environment for the firmware.
I remember you originally saying that the waveforms had to be in the quick RAM and so adding some required removal of others, but it's nice to hear that it's not the case any more and we can just append them. I feel bad suggesting this because you already implemented one of my suggestions really well and really quickly, but what about an option to load a custom waveform into RAM from a folder in the USB drive? It would mean new waveforms could be added without building custom firmware and reflashing. Of course, I might be the only person that would use it so it's possibly not worth it.
-
I think this would be an awesome idea, being able to load new waveforms via USB. Or maybe via an editor?
I think a version of the Shruthi-1 allowed this or something like this for the wavetables.
-
I also like the idea of loading waveform from the USB.
The problem is preset compatibility between preenFM.
But that can be fun.
I try to make a new feature with each new Kits batch.
This one could be for next run :)
-
This would be a super exciting new feature. :D
-
Yeah indeed.
-
If you add this feature, I created you a lot of new super patches!
Julien
-
I feel like an easy waveform modification (without having actually looked at the code) would be to allow PWM on the squarewave. You could even ditch a wavetable if you just made the PWM/ squarewave selection into a waveshaped sawtooth wave, where the output is just ( sawtooth wave > PWM threshold ). This could yield some compelling FM textures and add a modulation destination in the matrix.
First post btw ;)
-
Hi Windspirit and welcome,
PWM on the squarewave would add a HUGE CPU overhead. It's definitely not doable on the 192Mhz preenfm CPU which is already at 99% in heaviest scenario.
When using sin only, the number of possibility is already crazy when playing with complex FM algo.
Don't forget the randomize feature to discover new sound.
Xavier
-
I also like the idea of loading waveform from the USB.
The problem is preset compatibility between preenFM.
But that can be fun.
I try to make a new feature with each new Kits batch.
This one could be for next run :)
Done in firmware 2.01. :)
-
This is really exciting. I will try this out this week! :D