diff --git a/README.md b/README.md
index 2af902b..fb71a74 100644
--- a/README.md
+++ b/README.md
@@ -10,9 +10,14 @@
Csound is a user-programmable and user-extensible sound processing language and software synthesizer. (www.csound.com)
Csound is copyright (c) 1991 Barry Vercoe, John ffitch, and other contributors.
-VCVRack v0.6.1, Csound v6.11 and VCV Rack modules are compiled and tested **ONLY ON LINUX MINT 18.3**.
+**IMPORTANT NOTE:**\
+VCVRack v0.6.1, Csound v6.11 and VCV Rack modules are compiled and tested **ONLY ON LINUX MINT 18.3**.\
All modules are **Work in Progress**.
+**For a Windows build and support, please go to the repository:\
+https://github.com/dizzisound/VCV_Csound**
+
+
Thanks to:
- Tutorial plugin
- Fundamentals plugins by Andrew Belt http://www.vcvrack.com
@@ -53,7 +58,7 @@ These csound scripts are often made by others and modified by me to suit my desi
![](images/Reverb.png)
-Csound script: Reverb.csd (Iain McCurdy)
+Csound script: Reverb.csd (Iain McCurdy)\
The reverbsc opcode is a 8 delay line Feedback Delay Network reverb, with feedback matrix based upon physical modeling scattering junction of 8 lossless waveguides of equal characteristic impedance. (Sean Costello, October 1999)
@@ -61,7 +66,7 @@ The reverbsc opcode is a 8 delay line Feedback Delay Network reverb, with feedba
![](images/Vocoder.png)
-Csound script: Vocoder.csd (Iain McCurdy)
+Csound script: Vocoder.csd (Iain McCurdy)\
This is an implementation of a traditional analogue style vocoder. Two audio signals, referred to as a modulator and a carrier, are passed into the vocoder effect.
The modulator is typically a voice and the carrier is typically a synthesizer.
The modulator is analysed by being passed into a multiband filter (a bank of bandpass filters), the amplitude envelope of each band is tracked and a control function for each band generated.
@@ -70,7 +75,8 @@ The carrier signal is also passed through a matching multiband filter, the set o
**Carrier Source:**
External signal used as carrier signal. (sawtooth, square, pulse, noise...).
-Steepness: Steepness of the filters used for both analysis and carrier processing.
+**Steepness:**
+ Steepness of the filters used for both analysis and carrier processing.
**Base:**
Frequency of the lowest filter (both analysis and processing) expressed as a MIDI note number.
@@ -88,7 +94,7 @@ Steepness: Steepness of the filters used for both analysis and carrier processin
Gain of the single highpass filter.
**Gate Input:**
- Activating this switch will apply a noise gate to the modulator signal.
+ Activating this switch will apply a noise gate to the modulator signal.\
This option might be useful if the microphone used in rather noisy, such as would be the case if using the built-in microphone on a laptop, or if working in a noisy environment.
@@ -97,25 +103,25 @@ Steepness: Steepness of the filters used for both analysis and carrier processin
![](images/VCO-10.png)
-Csound script: VCO10.csd (Iain McCurdy)
+Csound script: VCO10.csd (Iain McCurdy)\
The vco2 opcode models a variety of waveforms based on the integration of band-limited impulses.
* **MidiVCO-10 module:**
![](images/MidiVCO-10.png)
-Csound script: MidiVCO10.csd (Iain McCurdy)
-Same module as VCO-10, but is activated by midi notes, polyphony is only limited by hardware.
+Csound script: MidiVCO10.csd (Iain McCurdy)\
+Same module as VCO-10, but is activated by midi notes,\
+Polyphony is only limited by hardware.\
Gate output is 1 if at least one note is activated, otherwise is 0.
* **Flooper module:**
![](images/Flooper.png)
-Csound script: Flooper.csd (Joachim Heintz)
-Display code is copied from PLAYER module by Clement Foulc
-Read wav, aiff, ogg and flac sound files.
-**Work in progress.**
+Csound script: Flooper.csd (Joachim Heintz)\
+Display code is copied from PLAYER module by Clement Foulc.\
+Module read wav, aiff, ogg and flac sound files.
* **Y = F(x) module:**
diff --git a/csd/CsoundQt/MidiVCO10.csd b/csd/CsoundQt/MidiVCO10.csd
index 557f2f1..2a861c0 100644
--- a/csd/CsoundQt/MidiVCO10.csd
+++ b/csd/CsoundQt/MidiVCO10.csd
@@ -30,6 +30,16 @@ ksmps = 32
nchnls = 1
0dbfs = 1
+ ;channel init
+ chn_k "Waveform", 1
+ chn_k "Octave", 1
+ chn_k "Semitone", 1
+ chn_k "Harmonics", 1
+ chn_k "PulseWidth", 1
+ chn_k "PhaseDepth", 1
+ chn_k "PhaseRate", 1
+ chn_k "NoiseBW", 1
+
gisine ftgen 0, 0, 4096, 10, 1 ;Sine wave
@@ -37,18 +47,24 @@ itmp ftgen 1, 0, 16384, 7, 0, 2048, 1, 4096, 1, 4096, -1, 4096, -1, 2048, 0 ; u
ift vco2init -1, 10000, 0, 0, 0, 1
massign 0, 2
+ turnon 1 ;GUI update
instr 1 ;GUI
- gkWave invalue "Waveform"
- kOctave invalue "Octave"
+ gkWave chnget "Waveform"
+ kOctave chnget "Octave"
gkOctave = int(kOctave)
- kSemitone invalue "Semitone"
+ kSemitone chnget "Semitone"
gkSemitone = int(kSemitone)
- gknyx invalue "Harmonics"
- gkpw invalue "PulseWidth"
- gkphsDep invalue "PhaseDepth"
- gkphsRte invalue "PhaseRate"
- gkbw invalue "NoiseBW"
+ gknyx chnget "Harmonics"
+ gkpw chnget "PulseWidth"
+ gkphsDep chnget "PhaseDepth"
+ gkphsRte chnget "PhaseRate"
+ gkbw chnget "NoiseBW"
+
+ gkmode = gkWave * 2
+ if gkphsDep > 0.01 then
+ gkmode = gkmode + 16
+ endif
endin
instr 2 ;POLY MIDI INPUT INSTRUMENT
@@ -60,32 +76,27 @@ instr 2 ;POLY MIDI INPUT INSTRUMENT
imin = 0
imax = iSemitoneBendRange / 12
kbend pchbend imin, imax
- ioct = octcps(icps)
+ ioct = octcps(icps)
kcps = cpsoct(ioct + kbend + gkOctave + gkSemitone/12)
;========================================================================
iporttime = 0.05
kporttime linseg 0, 0.001, iporttime
- kpw portk gkpw, kporttime
+ kpw portk gkpw, kporttime
kenv linsegr 0, 0.01, 1, 0.01, 0
if gkWave==8 then ;buzz
asig buzz kenv*iamp, kcps, gknyx * sr /4 / kcps, gisine
elseif gkWave==9 then ;noise
- asig pinkish 4*iamp
+ asig pinkish 4*iamp
asig butbp asig, kcps, kcps * gkbw
else ;vco2
- kmode = gkWave * 2
- if gkphsDep > 0.01 then
- kmode = kmode + 16
- endif
-
kphs poscil gkphsDep*0.5, gkphsRte, gisine ;Phase mod
kphs = kphs + 0.5 ;Phase depth
;*** All this to reduce click during reinit !!!
kinit init 0
- kChanged changed gknyx, kmode
+ kChanged changed gknyx, gkmode
if kChanged==1 then
kinit = 1
endif
@@ -107,25 +118,13 @@ instr 2 ;POLY MIDI INPUT INSTRUMENT
;***
Reinit_vco:
- asig vco2 kenv*kfade*iamp, kcps, i(kmode), kpw, kphs, i(gknyx)/2
+ asig vco2 kenv*kfade*iamp, kcps, i(gkmode), kpw, kphs, i(gknyx)/2
rireturn
endif
out asig
endin
-
-instr 11 ;INIT
- outvalue "Octave" , 0.0
- outvalue "Semitone" , 0.0
- outvalue "Harmonics" , 0.5
- outvalue "PW" , 0.5
- outvalue "PhaseDepth" , 0.2
- outvalue "PhaseRate" , 4.0
- outvalue "NoiseBW" , 1.0
-endin
-i 11 0 0 ;init
-i 1 0 3600
diff --git a/csd/MidiVCO10.csd b/csd/MidiVCO10.csd
index c7c6851..4c0ec77 100644
--- a/csd/MidiVCO10.csd
+++ b/csd/MidiVCO10.csd
@@ -11,6 +11,16 @@ nchnls = 1
0dbfs = 1
+ ;channel init
+ chn_k "Waveform", 1
+ chn_k "Octave", 1
+ chn_k "Semitone", 1
+ chn_k "Harmonics", 1
+ chn_k "PulseWidth", 1
+ chn_k "PhaseDepth", 1
+ chn_k "PhaseRate", 1
+ chn_k "NoiseBW", 1
+
gisine ftgen 0, 0, 4096, 10, 1 ;Sine wave
itmp ftgen 1, 0, 16384, 7, 0, 2048, 1, 4096, 1, 4096, -1, 4096, -1, 2048, 0 ;user defined waveform: trapezoid wave
@@ -32,6 +42,11 @@ instr 1 ;GUI
gkphsRte chnget "PhaseRate"
gkbw chnget "NoiseBW"
+ gkmode = gkWave * 2
+ if gkphsDep > 0.01 then
+ gkmode = gkmode + 16
+ endif
+
kgate active 2
chnset kgate, "Gate"
endin
@@ -60,17 +75,12 @@ instr 2 ;Poly Midi Instrument
asig pinkish 4*iamp
asig butbp asig, kcps, kcps * gkbw
else ;vco2
- kmode = gkWave * 2
- if gkphsDep > 0.01 then
- kmode = kmode + 16
- endif
-
kphs poscil gkphsDep*0.5, gkphsRte, gisine ;Phase mod
kphs = kphs + 0.5
;*** All this to reduce click during reinit !!!
kinit init 0
- kChanged changed gknyx, kmode
+ kChanged changed gknyx, gkmode
if kChanged==1 then
kinit = 1
endif
@@ -92,7 +102,7 @@ instr 2 ;Poly Midi Instrument
;***
Reinit_vco:
- asig vco2 kenv*kfade*iamp, kcps, i(kmode), kpw, kphs, i(gknyx)/2
+ asig vco2 kenv*kfade*iamp, kcps, i(gkmode), kpw, kphs, i(gknyx)/2
rireturn
endif
out asig
diff --git a/src/Flooper.cpp b/src/Flooper.cpp
index 2deeb0c..1727343 100644
--- a/src/Flooper.cpp
+++ b/src/Flooper.cpp
@@ -183,8 +183,7 @@ void Flooper::step() {
} else {
transpose = params[TRANSPOSE_PARAM].value;
};
- transpose = round(transpose);
-
+
gate = clamp(inputs[GATE_INPUT].value*0.125f, 0.0f, 1.0f);
loop = params[LOOP_PARAM].value;