-
Krex
This is a comprehensive toolkit for controlling the dynamic stochastic synthesizer. Besides direct parameter control and parameter automation, several original approaches have been devised. First, the toolkit enables controlling the synthesizer with an audio signal. Relevant audio features of an input signal are mapped to the synthesis parameters making the control immediate and intuitive. Second, the toolkit supports MIDI control so that musicians can use standard MIDI interfaces to play the synthesizer. Based on this approach a polyphonic MIDI-controlled synthesizer was implemented and included it in the toolkit along with other examples of controlling the dynamic stochastic synthesizer.
You can find further information and download the complete toolkit here: https://github.com/gkrekovic/GenDynToolkit
-
Krex
Hi all!
I'm trying to implement a real-time synthesis algorithm which produces waveforms sample by sample. My approach is to calculate a block of samples, store them in a table, wait for those samples to be reproduced (using phasor~ and tabread~) and calculate another block. For example, if there are 8820 samples in a block, the reading frequnecy is set to 5 Hz, whilst the waiting between calculating two successive blocks is 200 ms (I use METRO 200).
And it works fine. However, in every reading cycle there is a hearable click. The click is not caused by the synthesis algorithm because the updateded table smoothly continues from the old values. So, I guess that the problem is updating the table while reading it.
I spent a lot of time trying different apporaches (such as tabosc~ and even direct usage of sig~), but have not found a solution. Also, searching for an idea on the Internet did not help. As I am quite new to Pure Data, maybe there is a different approach or an obvious solution which I don't see. I would appreciate every suggestion.
Cheers!
-
Krex
On the part of patch in your first post, there is nothing connected to the third inlet of the [makenote] object. The third inlet is is used for defining note duration. If it is also missing in the real patch, it is possible that all notes have zero duration.
-
Krex
Thank you, Maelstorm!
I found on this forum a way to get bangs at audio rate. So, I've adapted patch to calculate sample by sample and send them to:
[serialize 64]
|
[unpack~]This way, tables are avoided. It works fine!
Also, another way is to calculate a block of 64 samples at each bang~ as I did in GenDyn7. However, the problem was sig~. Now with serialize 64 and unpack~ it also works fine. If you are interested in this version, you can find it attached.
Thank you for help!
-
-
Krex
I've tried two more soultions, but clicks are still there.
GenDyn8 uses two tables as sunji suggested.
GenDyn11 uses one table and tabplay which triggers the computation.Is it possible to change the title of this thread to "Converting stream of floats into audio", because the soultion doesn't need to employ tables at all. I believe that there is a simple way to do this with sig~ and bang~ (as shown in GenDyn7).
-
Krex
Sunji, thanks for the advice. It seems a little bit tricky to implement. Do you maybe have some example patches?
Meanwhile, I tried a different approach. Instead of being written into a table, calculated samples are now converted directly into audio using sig~. The algorithm processes block by block (triggered by bang~). However, the results are even worse, the sound is distorsed. Maybe I did not set appropriate values for block size and overlapping. Please find attached the new patch.
-
Krex
I made a little modification on Gormit's patch, so now it should work with the mouse, too.
-
Krex
Please, find attached the patch. This should be a dynamic stochastic synthesizer, but it is not finished yet.