[phpBB Debug] PHP Warning: in file [ROOT]/phpbb/session.php on line 561: sizeof(): Parameter must be an array or an object that implements Countable
[phpBB Debug] PHP Warning: in file [ROOT]/phpbb/session.php on line 617: sizeof(): Parameter must be an array or an object that implements Countable
[phpBB Debug] PHP Warning: in file [ROOT]/phpbb/session.php on line 1065: Cannot modify header information - headers already sent by (output started at [ROOT]/includes/functions.php:3925)
[phpBB Debug] PHP Warning: in file [ROOT]/phpbb/session.php on line 1065: Cannot modify header information - headers already sent by (output started at [ROOT]/includes/functions.php:3925)
[phpBB Debug] PHP Warning: in file [ROOT]/phpbb/session.php on line 1065: Cannot modify header information - headers already sent by (output started at [ROOT]/includes/functions.php:3925)
[phpBB Debug] PHP Warning: in file [ROOT]/includes/functions.php on line 5312: Cannot modify header information - headers already sent by (output started at [ROOT]/includes/functions.php:3925)
[phpBB Debug] PHP Warning: in file [ROOT]/includes/functions.php on line 5312: Cannot modify header information - headers already sent by (output started at [ROOT]/includes/functions.php:3925)
[phpBB Debug] PHP Warning: in file [ROOT]/includes/functions.php on line 5312: Cannot modify header information - headers already sent by (output started at [ROOT]/includes/functions.php:3925)
Forum • Demo for per-patch LFO that starts with keydown
Page 1 of 1

Demo for per-patch LFO that starts with keydown

Posted: Wed Feb 07, 2018 4:07 pm
by forum
The straightforward way to use LFOs in Moselle are:

1) per-voice LFOs that start at phase 0 when a voice starts. Most classic synths do NOT have LFOs per voice, but that happens to be what you get by default in Moselle.

2) per-patch ("global") LFOs that start at phase 0 when the patch starts. To get this, add "Per = Patch" to an LFO. However, at key down you have no idea whether the LFO is just starting, just ending, or someonewhere in the middle.

Moselle should be able to make a per-patch LFO that always starts at phase 0 when you hit the first key, and keeps going after that until you again go from 0 to 1 keys pressed. To do this,

[LFO]
Per = Patch
SyncIn = AND( Channel:NoteDownCount@1 = 0, Channel:NoteDownCount = 1 )

What that means is: restart the LFO when: we had 0 notes down LAST sample, and now have 1 note down.

That lets the LFO keep going even after you release notes, which would be good if they have long release times. You'd hear the LFO continue to run.

A bit more brute-force would be to reset the LFO every sample that you're not holding down any notes. As soon as you're holding down one (or more) then it stops syncing to zero and instead travels normally. That would be a bit simpler. However, as soon as you let go all keys, the LFO slams back to phase 0 instantly and stay there, which might sound weird if you have notes sustaining or long releases.

SyncIn = Channel:NoteDownCount = 0



BTW the purpose of this would be really nice with the formant synthesis "speaking" a phrase. You want that formant filter to be global, not per-voice, so you can hear it distinctly, but you also want the phrase to start at key-down.