May I ...?
Posted: Mon Sep 18, 2017 9:11 pm
Hey Guys!
Lately it occured to me that there is a lot of help for people struggling with Green or Ruby. By that I don't mean the general help we all get for any question we have. I mean specifically tailor-made modules for your toolbox.
I don't have issues, so I contribute a lot in this area. However, I have issues beyond belief regarding DSP. Be it dsp code or even Assembler. It's not the language learning. I know the logic of the (pretty simple) dsp code. No, I struggle with the concept. This whole idea of changing a whole sequence of samples based on a window size of only one sample. And the bitmasking. Again, not the general logic, but when it comes to combining dozens of conditionals into one line of code via bitmasking. I just don't get it, and I never will. I know that because I tried. I tried very hard.
When I have a buffer, I know what to do, and I can with higher languages like C, Python, Ruby, even BASIC. But they are on another path. One that I understand.
I'm not looking for a teacher. I'm not looking for explanations on how things work. I've given up on that. But, I thaught maybe, just maybe, I could make requests, similar to the Green/Ruby contributions? Meaning, I would get a module that I can put in my toolbox and use as a working block?
The only one that ever made something like that for dsp/assembler was Martin. His Oscillators and the state variable filter are still building blocks for my work. But there is so much more missing that would help so much. As of now, one can only produce production-ready VST plugins, if you know how to optimize things in dsp/assembler. I can't. But I would also love to produce something that's fast, stable and with a small cpu and memory footprint.
So here's a list of things I wish would exist:
(1) A versatile Envelope. ADSR, or even ADHSR. Optimized (Assembler?). Switchable (for me as the developer, not neccesarily for the end user) between time and beat settings. With exact information on the time window. For example, the envelope covers a total of x seconds. Or, with A and D at 0.5, the envelope covers 2x the DAW's speed. Or whatever. But something that makes more sense than just a button from 0 to 1, without any reference to what 1 means.
(2) An optimized (Assembler?) 24 dB, self-resonating (switchable!) low pass filter. Modulatable on frequency and resonance, and with inputs (or knobs) that clearly use these terms. For example, full value on resonance means you only hear the resonance.
(3) An optimzed (Assembler?) comb filter, with frequency, resonance and odd/even (or is it +/-?) setting. Modulatable.
(4) An optimized (Assembler?) mixer for poly and mono.
Where mono mixes 4 streams into one stereo stream using inputs (or knobs) for signal strength and panning. Note, strength, not amplitude. If I set the four streams to 1, 0, 0, 0 it will output the first at 0 dB. But if I set 1, 0.5, 0, 0 then the first outputs at (roughly) -3.5 dB, and the second at (roughly) -9.5 dB. (dbFS that is) So it notices that, to get a total sum of voltage 1 = 0 dBFS, it needs to distribute the voltage in shares over the four streams. In the second example it's 0.666~, 0.333~ 0, 0 (voltage). 1, 0.5, 0.75, 0 would be 0.444~, 0.222~, 0.333~, 0. Etc.
For the poly stream the mixer would "reduce" the 4 to 1 stream. Not just adding them! Meaningful values are in the range -1/+1, if I'm not wrong, so that would be the range of values the one stream output would carry. Or do I miss something here?
All of them should be fully working in 3.0.6 (the most stable and bug-free version of Flowstone), which means no use of stream IDs that were added in 3.0.8. Not sure if there are any other things to consider for 3.0.6
I know this post will not get immediate attention, and people may also not be motivated to do such modules. But if only one of the points becomes a reality, that would already be awesome!
Lately it occured to me that there is a lot of help for people struggling with Green or Ruby. By that I don't mean the general help we all get for any question we have. I mean specifically tailor-made modules for your toolbox.
I don't have issues, so I contribute a lot in this area. However, I have issues beyond belief regarding DSP. Be it dsp code or even Assembler. It's not the language learning. I know the logic of the (pretty simple) dsp code. No, I struggle with the concept. This whole idea of changing a whole sequence of samples based on a window size of only one sample. And the bitmasking. Again, not the general logic, but when it comes to combining dozens of conditionals into one line of code via bitmasking. I just don't get it, and I never will. I know that because I tried. I tried very hard.
When I have a buffer, I know what to do, and I can with higher languages like C, Python, Ruby, even BASIC. But they are on another path. One that I understand.
I'm not looking for a teacher. I'm not looking for explanations on how things work. I've given up on that. But, I thaught maybe, just maybe, I could make requests, similar to the Green/Ruby contributions? Meaning, I would get a module that I can put in my toolbox and use as a working block?
The only one that ever made something like that for dsp/assembler was Martin. His Oscillators and the state variable filter are still building blocks for my work. But there is so much more missing that would help so much. As of now, one can only produce production-ready VST plugins, if you know how to optimize things in dsp/assembler. I can't. But I would also love to produce something that's fast, stable and with a small cpu and memory footprint.
So here's a list of things I wish would exist:
(1) A versatile Envelope. ADSR, or even ADHSR. Optimized (Assembler?). Switchable (for me as the developer, not neccesarily for the end user) between time and beat settings. With exact information on the time window. For example, the envelope covers a total of x seconds. Or, with A and D at 0.5, the envelope covers 2x the DAW's speed. Or whatever. But something that makes more sense than just a button from 0 to 1, without any reference to what 1 means.
(2) An optimized (Assembler?) 24 dB, self-resonating (switchable!) low pass filter. Modulatable on frequency and resonance, and with inputs (or knobs) that clearly use these terms. For example, full value on resonance means you only hear the resonance.
(3) An optimzed (Assembler?) comb filter, with frequency, resonance and odd/even (or is it +/-?) setting. Modulatable.
(4) An optimized (Assembler?) mixer for poly and mono.
Where mono mixes 4 streams into one stereo stream using inputs (or knobs) for signal strength and panning. Note, strength, not amplitude. If I set the four streams to 1, 0, 0, 0 it will output the first at 0 dB. But if I set 1, 0.5, 0, 0 then the first outputs at (roughly) -3.5 dB, and the second at (roughly) -9.5 dB. (dbFS that is) So it notices that, to get a total sum of voltage 1 = 0 dBFS, it needs to distribute the voltage in shares over the four streams. In the second example it's 0.666~, 0.333~ 0, 0 (voltage). 1, 0.5, 0.75, 0 would be 0.444~, 0.222~, 0.333~, 0. Etc.
For the poly stream the mixer would "reduce" the 4 to 1 stream. Not just adding them! Meaningful values are in the range -1/+1, if I'm not wrong, so that would be the range of values the one stream output would carry. Or do I miss something here?
All of them should be fully working in 3.0.6 (the most stable and bug-free version of Flowstone), which means no use of stream IDs that were added in 3.0.8. Not sure if there are any other things to consider for 3.0.6
I know this post will not get immediate attention, and people may also not be motivated to do such modules. But if only one of the points becomes a reality, that would already be awesome!