Skip to content

Commit

Permalink
Release MIDI CC fluctuation v3.0
Browse files Browse the repository at this point in the history
user interface can be selected to be simple, medium or complex
  • Loading branch information
mschnell1 authored and cfillion committed Aug 3, 2024
1 parent 0f2ea76 commit f077704
Showing 1 changed file with 57 additions and 43 deletions.
100 changes: 57 additions & 43 deletions MIDI/mschnell_MIDI CC fluctuation.jsfx
Original file line number Diff line number Diff line change
@@ -1,58 +1,58 @@
desc: MIDI CC fluctuation
author: Michael Schnell ([email protected])
version: 2.0
changelog:
Added option for standard resolution CCs
Some bug fixes
version: 3.0
changelog: user interface can be selected to be simple, medium or complex
provides: [data] mschnell_MIDI CC fluctuation/Voice Doubling.RfxChain
about:
## Description

MIDI CC fluctuation generates a randomly fluctuating 14 bit (high resolution) CC Midi data stream.
MIDI CC fluctuation generates a randomly fluctuating 14 bit (high resolution) CC Midi data stream. Normal 7 Bit CC numbers also can be selected.

The fluctuation is generated by randomly increasing / decreasing the current CC value. The way this is done, can be "humanized" by several parameters.
The fluctuation is generated by randomly increasing / decreasing the current CC value. The way this is done, can be "humanized" by several parameters.

"Midi Channel" selects the Midi channel to output the CC messages
"Midi Channel" selects the Midi channel to output the CC messages

"CC" selects the CC number. CC#s 0..31 with "HR" notification are selectable for high resolution CCs, 0...127 are selectable for standard resolution CCs
"CC" selects the CC number. CC#s 0..31 with "HR" notification are selectable for high resolution CCs, 0...127 are selectable for standard resolution CCs

"Delta wide (~ ^1)" controls the amount the delta increasing / decreasing the output as a equally distributed random value
"Delta wide (~ ^1)" controls the amount the delta increasing / decreasing the output as a equally distributed random value

"Delta mid (~ ^3)" controls the amount the delta increasing / decreasing the output as a random value controls the that covers the extreme ends less often
"Delta mid (~ ^3)" controls the amount the delta increasing / decreasing the output as a random value controls the that covers the extreme ends less often

"Delta narrow (~ ^5)" controls the amount the delta increasing / decreasing the output as a random value controls the that covers the extreme ends even less often
"Delta narrow (~ ^5)" controls the amount the delta increasing / decreasing the output as a random value controls the that covers the extreme ends even less often

"Hold speed": for humanizing, a directivity of the fluctuation is implemented. This parameter defines how often then the preferred direction and migrating speed is supposed to change
"Hold speed": for humanizing, a directivity of the fluctuation is implemented. This parameter defines how often then the preferred direction and migrating speed is supposed to change

"Hold mix" defines the intensity of the directivity vs a purely random walk
"Hold mix" defines the intensity of the directivity vs a purely random walk

"Speed (Roughness, exponential scale)" controls the total amount of the random value that is added to the current output value. The actual factor is calculated using an exponential curve regarding the value set here.
"Speed (Roughness, exponential scale)" controls the total amount of the random value that is added to the current output value. The actual factor is calculated using an exponential curve regarding the value set here.

"Fade (~ ^1)" defines the force to pull back the output to the center in a linear (proportional to the displacement) way.
"Fade (~ ^1)" defines the force to pull back the output to the center in a linear (proportional to the displacement) way.

"Fade if wide (~ ^3)" defines the force to pull back the output to the center in a way increasing with the displacement
"Fade if wide (~ ^3)" defines the force to pull back the output to the center in a way increasing with the displacement

"Fade if even wider (~ ^5)" defines the force to pull back the output to the center in a way increasing with the displacement even more.
"Fade if even wider (~ ^5)" defines the force to pull back the output to the center in a way increasing with the displacement even more.

"maximum step" defines the step size (per audio block) to the raw output is allowed to fluctuate
"maximum step" defines the step size (per audio block) to the raw output is allowed to fluctuate

"gain" and "bias": values to multiply the output with and to add to the output
"gain" and "bias": values to multiply the output with and to add to the output

The other sliders show the generate signals in realtime:
The other sliders show the generate signals in realtime:

"Delta": the current raw random delta value
"Delta": the current raw random delta value

"Hold": the current hold / directivity value
"Hold": the current hold / directivity value

"Delta with Hold": value to be added to the raw result
"Delta with Hold": value to be added to the raw result

"Result raw": Result before applying gain and bias
"Result raw": Result before applying gain and bias

"Result -1 ... 1": Normalized output value
"Result -1 ... 1": Normalized output value

"Result Midi (0 ... 16383)": High resolution Midi CC output value
"Result Midi (0 ... 16383)": High resolution Midi CC output value

A graphics shows the history of the "Delta with Hold" value in blue and the history of the output value in yellow. The gray line defines the center (Zero / CC value = 8191), the purple line shows the average of the output during the shown range of time.
A graphics shows the history of the "Delta with Hold" value in blue and the history of the output value in yellow. The gray line defines the center (Zero / CC value = 8191), the purple line shows the average of the output during the shown range of time.

Using the "+" button, the user interface can be selected to be simple, medium or complex, making a different count of parameters visible and adjustable.

//tags: MIDI processing filter
//author: MSchnell
Expand All @@ -65,28 +65,42 @@ in_pin:none
out_pin:none


config: conf "User Interface" 0 0="simpel" 1="medium (Hold configuration)" 2="complex"

<? conf == 0 ? (
complex = "-";
complex_h = "-";
) : conf == 1 ? (
complex = "-";
complex_h = "";
) : (
complex = "";
complex_h = "";
);
?>

slider1: 0<0,15,1{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16}>Midi Channel
slider2: 16<0,128,1{0 Bank Sel HR,1 Mod Wheel HR,2 Breath HR,3+35 HR,4 Foot P HR,5 Porta HR,6 Data Entry HR,7 Vol HR,8 Balance HR,9+42 HR,10 Pan HR,11 Expression HR,12 Ctrl 1 HR,13 Ctrl 2 HR,14+46 HR,15+47 HR,16 GP Slider HR,17 GP Slider HR,18 GP Slider HR,19 GP Slider HR,20+52 HR,21+53 HR,22+54 HR,23+55 HR,24+56 HR,25+57 HR,26+58 HR,27+59 HR,28+60 HR,29+61 HR,30+62 HR,31+63 HR,0 Bank Sel M,1 Mod Wheel M,2 Breath M,3,4 Foot P M,5 Porta M,6 Data Entry M,7 Vol M,8 Balance M,9,10 Pan M,11 Expression M,12 Ctrl 1 M,13 Ctrl 2 M,14,15,16 GP Slider 1,17 GP Slider 2,18 GP Slider 3,19 GP Slider 4,20,21,22,23,24,25,26,27,28,29,30,31,32 Bank Sel L,33 Mod Wheel L,34 Breath L,35,36 Foot P L,37 Porta L,38 Data Entry L,39 Vol L,40 Balance L,41,42 Pan L,43 Expression L,44 Ctrl 1 L,45 Ctrl 2 L,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64 Hold P sw,65 Porta sw,66 Sustenuto sw,67 Soft P sw,68 Legato P sw,69 Hold 2 P sw,70 S.Variation,71 S.Timbre,72 S.Release,73 S.Attack,74 S.Brightness,75 S.Ctrl 6,76 S.Ctrl 7,77 S.Ctrl 8,78 S.Ctrl 9,79 S.Ctrl 10,80 GP B.1 sw,81 GP B.2 sw,82 GP B.3 sw,83 GP B.4 sw,84,85,86,87,88,89,90,91 Effects Lv,92 Trem Lv,93 Chorus Lv,94 Celeste Lv,95 Phaser Lv,96 Data B. Inc,97 Data B. Dec,98 NRP L,99 NRP M,100 RP L,101 RP M,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,N/A}>In CC#
slider3: 0.5<0,1,0.01>Delta wide (~ ^1)
slider4: 0<0,1,0.01>Delta mid (~ ^3)
slider5: 1<0,1,0.01>Delta narrow (~ ^5)
slider6: 0.01<0,0.1,0.001>Hold speed
slider7: 0.9<0,1,0.001>Hold mix
slider8: 0.1<0,1,0.001>Speed (Roughness, exponential scale)
slider9: 0.01<0,1,0.01>Fade (~ ^1)
slider10: 0.1<0,10,0.1>Fade if wide (~ ^3)
slider11: 0.2<0,20,0.1>Fade if even wider (~ ^5)
slider3: 0.5<0,1,0.01><?printf(complex)?>Delta wide (~ ^1)
slider4: 0<0,1,0.01><?printf(complex)?>Delta mid (~ ^3)
slider5: 1<0,1,0.01<<?printf(complex)?>Delta narrow (~ ^5)
slider6: 0.01<0,0.1,0.001><?printf(complex_h)?>Hold speed
slider7: 0.9<0,1,0.001><?printf(complex_h)?>Hold mix
slider8: 0.1<0,1,0.001><?printf(complex)?>Speed (Roughness, exponential scale)
slider9: 0.01<0,1,0.01><?printf(complex)?>Fade (~ ^1)
slider10: 0.1<0,10,0.1><?printf(complex)?>Fade if wide (~ ^3)
slider11: 0.2<0,20,0.1><?printf(complex)?>Fade if even wider (~ ^5)
slider12: 0.0001<0,0.1,0.0001>maximum step
slider13: 1<0,10,0.1>gain
slider14: 0<-1,1,0.01>bias

slider20: 0<-1,1,0.0001>Delta
slider21: 0<-1,1,0.0001>Hold
slider22: 0<-1,1,0.0001>Delta with Hold
slider23: 0<-1,1,0.0001>Result raw
slider24: 0<-1,1,0.0001>Result -1 ... 1
//slider25: 8191<0,16383,1>Result Midi (HR: 0.. 16383, LR: 0...127)
slider25: 8191<0,0,1>Result Midi (HR: 0.. 16383, LR: 0...127)
slider20: 0<-1,1,0.0001><?printf(complex_h)?>Delta
slider21: 0<-1,1,0.0001><?printf(complex_h)?>Hold
slider22: 0<-1,1,0.0001><?printf(complex_h)?>Delta with Hold
slider23: 0<-1,1,0.0001><?printf(complex)?>Result raw
slider24: 0<-1,1,0.0001><?printf(complex)?>Result -1 ... 1
slider25: 8191<0,16383,1>Result Midi (HR: 0.. 16383, LR: 0...127)
//slider25: 8191<0,0,1>Result Midi (HR: 0.. 16383, LR: 0...127)


@init
Expand Down

0 comments on commit f077704

Please sign in to comment.