Support

If you have a problem or need to report a bug please email : support@dsprobotics.com

There are 3 sections to this support area:

DOWNLOADS: access to product manuals, support files and drivers

HELP & INFORMATION: tutorials and example files for learning or finding pre-made modules for your projects

USER FORUMS: meet with other users and exchange ideas, you can also get help and assistance here

NEW REGISTRATIONS - please contact us if you wish to register on the forum

May I ...?

For general discussion related FlowStone

Re: May I ...?

Postby tulamide » Thu Sep 21, 2017 5:05 am

Spogg wrote:If you look inside my ASS :lol: there are 2 ladder-type filters. One is assembler but mine is using "discreet" LPFs by Martin (in ASM). In mine you could switch the LPFs in/out to get the slope you need.

Cool! Thanks, I will have a look at it!

Spogg wrote:I'm sure you're aware but I'll say it anyway: to get self-oscillation you need a seed; a low level of noise, to excite the filter. In electronics this was never a problem due to inherent 1/f noise and old analogue filters were always noisy anyway.
The reduction of frequencies below Fc at high resonance is a result of inverting feedback progressively cancelling out the incoming signal.
No, I don't know anything about how filters are built. I just know how to use them. I'm not sure what you want to say with it; if you mean self-oscillating needs analog devices, that's not true.

Image From the manual:
The Low Pass Ladder filter is a low-pass filter inspired by the famous voltage controlled filter patented by Dr. Robert Moog in 1965. The name originates from the ladder-like shape of the original transistor/capacitor circuit diagram.

The original filter also had certain non-linear characteristics which contributed to the warm, musical sound it is renowned for. These characteristics are faithfully reproduced in the Low Pass Ladder filter.

There is also a built-in shaper in the feedback (self-oscillation) loop. If self-oscillation is activated (see below), the shaper will distort the sound to produce these non-linear characteristics. To adjust the intensity of this distortion you use the Drive parameter.

There are 4 different Filter slopes available; 24, 18, 12 and 6 dB/oct.

24dB slope comes in two different types:
Type I - The shaper (controlled with the Drive parameter) is placed at the filter output but before the feedback loop.
Type II - The shaper (controlled with the Drive parameter) is placed at the filter input after the feedback loop.

Note that “Self Osc” (see below) must be activated for the shaper to operate.

This filter can self-oscillate and will produce a playable note pitch with high Resonance settings if this is activated.

Self-oscillation can be switched on or off by using the “SELF OSC” button. The “KBD” knob governs how the frequency tracks the keyboard, turned fully clockwise will produce 12 semitones/octave tracking.
I know that it is doable - but I also know that it is not doable by myself.

Spogg wrote:The slopes of an envelope are generally produced by sample counting so the slope times for attack, decay and release are in samples so it's an easy matter to convert to seconds or preferably mS. Of course the sustain time will depend on the player and it's just a 0-1 level.
Yep, sustain is not part of it, and that's fine. I would use a dBFS scale for sustain. I also know that it's based on sample rate and counting. However, you have to understand the underlying dsp code or assembler to be able to calcualte the range of A, D and R. I couldn't even calculate it from the standard adsr that comes with Flowstone. That's why I ask for an envelope that already did the calculations for me. My dream values are
On time mode: 2 ms to 20 seconds
On beat mode: 1/32 to 16/4

I still hope someone will create that for me!
Last edited by tulamide on Thu Sep 21, 2017 5:22 am, edited 1 time in total.
"There lies the dog buried" (German saying translated literally)
tulamide
 
Posts: 2687
Joined: Sat Jun 21, 2014 2:48 pm
Location: Germany

Re: May I ...?

Postby tulamide » Thu Sep 21, 2017 5:18 am

TheOm wrote:The module I posted was just meant as a first draft and to get clarification for some things anyway.
That's even more amazing, since this first draft is already close to perfect!

TheOm wrote:It could of course also be done completely in stream/asm, but I don't know if you need sample rate accuracy for the volume and panning inputs or not.
Probably not. Although I plan on offering modulation for both, I don't think that it needs to be sample accurate. On the other hand, if I could modulate it exactly on beat, that would be a really fine feature. I'd say, if it is too much work, leave it as it is now.

TheOm wrote:Oh that's "interesting" (could that be considered a bug?), I had never even noticed that before.

It was considered a bug, or at least unwanted behaviour, and is corrected in the new alpha. There's also a new method that's triggered as soon as the inputs are accessible after initialization, so that we don't have to assume a certain state, but can check the input states.

TheOm wrote:Also what kind of panning do you need, linear, circular, balance?

Standard linear panning is good enough. I know that balance is much more musically preferable, but people are so used to panning that it might confuse them.
"There lies the dog buried" (German saying translated literally)
tulamide
 
Posts: 2687
Joined: Sat Jun 21, 2014 2:48 pm
Location: Germany

Re: May I ...?

Postby Spogg » Thu Sep 21, 2017 8:28 am

I'm not sure what you want to say with it; if you mean self-oscillating needs analog devices, that's not true.


You need to examine my ASS.

In Analogue mode the ladder filters are connected and have a small amount of noise injected to the input. If you turn up resonance to max (with a note sounding of course - they're polyphonic) they will oscillate and track the keyboard reasonably well, but not perfectly just like the Moog one. I mention the need for noise in the User Reference guide for my ASS.

However, you have to understand the underlying dsp code or assembler to be able to calcualte the range of A, D and R.


You can just take any sample count based envelope and read the inputs to the DSP/ASM code block from the scaling arithmetic modules. Scaling converts the knob's 0-1 output to a range of sample numbers with reference to the system sampling rate. Put simply, if the Attack scaling module outputs an attack "time" of 44100 you'll get a 1 second Attack time (at 44100 sample rate of course). 2mS would need 88.2 samples but note that ADSRs round to the nearest 16 samples via hopping, because greater accuracy is only needed for fast granular synthesis envelopes and hopping saves a lot of CPU. For most purposes a 16 sample hop gives perfectly usable temporal quantisation.

Cheers

Spogg
User avatar
Spogg
 
Posts: 3323
Joined: Thu Nov 20, 2014 4:24 pm
Location: Birmingham, England

Re: May I ...?

Postby tulamide » Thu Sep 21, 2017 9:03 am

Spogg wrote:
I'm not sure what you want to say with it; if you mean self-oscillating needs analog devices, that's not true.


You need to examine my ASS.

In Analogue mode the ladder filters are connected and have a small amount of noise injected to the input. If you turn up resonance to max (with a note sounding of course - they're polyphonic) they will oscillate and track the keyboard reasonably well, but not perfectly just like the Moog one. I mention the need for noise in the User Reference guide for my ASS.

However, you have to understand the underlying dsp code or assembler to be able to calcualte the range of A, D and R.


You can just take any sample count based envelope and read the inputs to the DSP/ASM code block from the scaling arithmetic modules. Scaling converts the knob's 0-1 output to a range of sample numbers with reference to the system sampling rate. Put simply, if the Attack scaling module outputs an attack "time" of 44100 you'll get a 1 second Attack time (at 44100 sample rate of course). 2mS would need 88.2 samples but note that ADSRs round to the nearest 16 samples via hopping, because greater accuracy is only needed for fast granular synthesis envelopes and hopping saves a lot of CPU. For most purposes a 16 sample hop gives perfectly usable temporal quantisation.

Cheers

Spogg


Thanks again for the tip! As I said, I will have a closer look. As for the second paragraph, this will probably surprise you (given our talks outside of this forum), but I have no clue what you are talking about! Again, it's not the calculation itself that gives me headaches (it's a simple [#ofsamples/samplerate = seconds]), but to find the portions of the code that tell me how many samples it counts (not to mention the portions of the code, that would need to be changed for the new lengths).
Also I am completely irritated by the mentioning of "scaling arithmetic modules". What the heck is that? Where does it come from? It is for sure not part of the standard Flowstone packages, you can download here on the forum. I don't get it. I'm overchallenged. That's why I asked for help. I know I repeat my last post's sentence, but:

I still hope someone will create that for me!

You make it seem totally simple. Would you be willing to program such an envelope for me? Pretty please? 8-) :D
"There lies the dog buried" (German saying translated literally)
tulamide
 
Posts: 2687
Joined: Sat Jun 21, 2014 2:48 pm
Location: Germany

Re: May I ...?

Postby Spogg » Thu Sep 21, 2017 10:28 am

The problem I have, as we all do I guess, is that it's not easy to know what the questioner already knows. In respect of my term Scaling arithmetic module I've added a comment inside the stock ADSR so I hope that explains it better. I could have worded it better (as usual!).

...to find the portions of the code that tell me how many samples it counts (not to mention the portions of the code, that would need to be changed for the new lengths)


I'm so sorry but I don't really get the question! The code is counting once every 16 (hopped) samples and the timed stage (A,D or R) continues counting until the sample number supplied to the A,D or R input is reached (depending on the gate but let's assume a fully held note). So you don't need to look into the code, or change anything in the code, to determine the stage length. The stage length is only determined by the input values, derived from the knobs. If you want longer maximum times you edit inside the "Scale" modules, not the code itself.

I think Martin is the best one to help with your envelope design needs. Envelope generators are complex beasts and the exponential option you mention is tricky. He made a great exponential ADSR for me which you'll find in my ASS (Digital side) and in all my recent stuff, but it's not to your spec. For choosing between Exponential and Linear I switched between his code and the stock code block.

It would indeed be nice to have one made to your specification in both DSP and optimised ASM, but while I have a basic grasp of the principles I don't think I'm up to the task of making it, and certainly not an optimised ASM one.

Cheers

Spogg
Attachments
Scaling module.fsm
(62.28 KiB) Downloaded 917 times
User avatar
Spogg
 
Posts: 3323
Joined: Thu Nov 20, 2014 4:24 pm
Location: Birmingham, England

Re: May I ...?

Postby tulamide » Sat Sep 23, 2017 3:16 pm

tulamide wrote:
TheOm wrote:The module I posted was just meant as a first draft and to get clarification for some things anyway.
That's even more amazing, since this first draft is already close to perfect!

TheOm wrote:It could of course also be done completely in stream/asm, but I don't know if you need sample rate accuracy for the volume and panning inputs or not.
Probably not. Although I plan on offering modulation for both, I don't think that it needs to be sample accurate. On the other hand, if I could modulate it exactly on beat, that would be a really fine feature. I'd say, if it is too much work, leave it as it is now.

TheOm wrote:Oh that's "interesting" (could that be considered a bug?), I had never even noticed that before.

It was considered a bug, or at least unwanted behaviour, and is corrected in the new alpha. There's also a new method that's triggered as soon as the inputs are accessible after initialization, so that we don't have to assume a certain state, but can check the input states.

TheOm wrote:Also what kind of panning do you need, linear, circular, balance?

Standard linear panning is good enough. I know that balance is much more musically preferable, but people are so used to panning that it might confuse them.


Reposting for TheOm, because I fear he might not have read my answer among all the other stuff :)
"There lies the dog buried" (German saying translated literally)
tulamide
 
Posts: 2687
Joined: Sat Jun 21, 2014 2:48 pm
Location: Germany

Re: May I ...?

Postby TheOm » Sat Sep 23, 2017 8:35 pm

Here is a test module, where panning is imlemented as linear channel balance. When panned to center both channels are at half volume. All ruby is removed in this one.
Attachments
mixer4.fsm
(9.45 KiB) Downloaded 884 times
TheOm
 
Posts: 103
Joined: Tue Jan 28, 2014 7:35 pm
Location: Germany

Re: May I ...?

Postby BobF » Sat Sep 23, 2017 10:09 pm

Hello TheOm,

I like this alot, but can it have voltage controlled inputs as well?

That is, can volume and panning also be controlled via LFO, ADSR, and so on for each channel.

Later then, BobF.....
BobF
 
Posts: 598
Joined: Mon Apr 20, 2015 9:54 pm

Re: May I ...?

Postby tulamide » Sun Sep 24, 2017 2:33 pm

TheOm, thank you so, so much! That's exactly as I imagined it to work! Brilliant! Normally I would now offer my help with Ruby in return. Unfortunately you are a more experienced programmer than me, so I can'T really offer something in return, apart from my gratefulness :D

(But if you have some spare time consider Bob's wish. I wouldn't reject such an upgrade :mrgreen: )
"There lies the dog buried" (German saying translated literally)
tulamide
 
Posts: 2687
Joined: Sat Jun 21, 2014 2:48 pm
Location: Germany

Re: May I ...?

Postby tulamide » Wed Oct 04, 2017 1:08 pm

Well, I learned from this experience. And I say this with all the bitterness I have.

Apart from TheOm, who was just in the spirit I share with him, nobody considered helping me. It seems to be a matter of course that people ask for Ruby solutions and get them. But don't ask for DSP solutions.

You will only get told that you have to do it yourself.

So what I learned is that whenever somebody asks for a Ruby solution, I won't help, but instead point to Ruby learning websites. Or I will teach programming in Ruby.

Thanks.
"There lies the dog buried" (German saying translated literally)
tulamide
 
Posts: 2687
Joined: Sat Jun 21, 2014 2:48 pm
Location: Germany

PreviousNext

Return to General

Who is online

Users browsing this forum: No registered users and 40 guests

cron