Skip to content

Commit

Permalink
Merge remote-tracking branch 'upstream/master'
Browse files Browse the repository at this point in the history
  • Loading branch information
U-ACTIVED\danielez committed Jul 11, 2018
2 parents 7ac8919 + 2e1fea0 commit 15cf455
Show file tree
Hide file tree
Showing 4 changed files with 65 additions and 51 deletions.
30 changes: 18 additions & 12 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -53,15 +58,15 @@ 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)


* **Vocoder module:**

![](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.
Expand All @@ -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.
Expand All @@ -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.


Expand All @@ -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:**

Expand Down
59 changes: 29 additions & 30 deletions csd/CsoundQt/MidiVCO10.csd
Original file line number Diff line number Diff line change
Expand Up @@ -30,25 +30,41 @@ 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
itmp ftgen 1, 0, 16384, 7, 0, 2048, 1, 4096, 1, 4096, -1, 4096, -1, 2048, 0 ; user defined waveform -1: trapezoid wave with default parameters
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
Expand All @@ -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
Expand All @@ -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
</CsInstruments>
<CsScore>
i 11 0 0 ;init
i 1 0 3600
</CsScore>
</CsoundSynthesizer>
<bsbPanel>
Expand Down
24 changes: 17 additions & 7 deletions csd/MidiVCO10.csd
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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
Expand Down Expand Up @@ -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
Expand All @@ -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
Expand Down
3 changes: 1 addition & 2 deletions src/Flooper.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand Down

0 comments on commit 15cf455

Please sign in to comment.