From 9cf668a61ada73fdd7655daabb2bd369b5052d90 Mon Sep 17 00:00:00 2001 From: Bart Brouns Date: Sun, 23 Oct 2016 11:12:47 +0200 Subject: [PATCH] rename Karplus-StrongSinger KarplusStrongSinger: for faust2lv2 --- .gitignore | 2 + ...trongSinger.dsp => KarplusStrongSinger.dsp | 2 +- ...gerMaxi.dsp => KarplusStrongSingerMaxi.dsp | 2 +- ...ve.dsp => KarplusStrongSingerMaxiSlave.dsp | 2 +- ...rSlave.dsp => KarplusStrongSingerSlave.dsp | 2 +- README.md | 102 ++++++++-------- faust2firefox | 3 - faust2jack | 114 ------------------ install.sh | 8 +- ...ngerMaxi_PT => KarplusStrongSingerMaxi_PT} | 4 +- ...StrongSinger_PT => KarplusStrongSinger_PT} | 4 +- lib/FullGUI.lib | 2 +- lib/KarplusStrongFX.lib | 2 +- lib/bigConstants.lib | 2 +- lib/constants.lib | 2 +- lib/smallConstants.lib | 2 +- presets/KarplusBass | 80 ++++++------ todo.txt | 2 +- travis/build.sh | 8 +- 19 files changed, 115 insertions(+), 230 deletions(-) rename Karplus-StrongSinger.dsp => KarplusStrongSinger.dsp (98%) rename Karplus-StrongSingerMaxi.dsp => KarplusStrongSingerMaxi.dsp (97%) rename Karplus-StrongSingerMaxiSlave.dsp => KarplusStrongSingerMaxiSlave.dsp (97%) rename Karplus-StrongSingerSlave.dsp => KarplusStrongSingerSlave.dsp (98%) delete mode 100755 faust2firefox delete mode 100755 faust2jack rename launchers/{Karplus-StrongSingerMaxi_PT => KarplusStrongSingerMaxi_PT} (74%) rename launchers/{Karplus-StrongSinger_PT => KarplusStrongSinger_PT} (65%) diff --git a/.gitignore b/.gitignore index da2a52f73..3fbb8760d 100644 --- a/.gitignore +++ b/.gitignore @@ -60,3 +60,5 @@ Karplus-StrongSingerMaxi /PureDataBass/ /README.html /classicVocoderFull +/KarplusStrongSinger +/KarplusStrongSingerMaxi diff --git a/Karplus-StrongSinger.dsp b/KarplusStrongSinger.dsp similarity index 98% rename from Karplus-StrongSinger.dsp rename to KarplusStrongSinger.dsp index 9e811adb9..737b3dd8e 100644 --- a/Karplus-StrongSinger.dsp +++ b/KarplusStrongSinger.dsp @@ -1,4 +1,4 @@ -declare name "Karplus-StrongSinger"; +declare name "KarplusStrongSinger"; declare version "1.1.3"; declare author "Bart Brouns"; declare license "GNU 3.0"; diff --git a/Karplus-StrongSingerMaxi.dsp b/KarplusStrongSingerMaxi.dsp similarity index 97% rename from Karplus-StrongSingerMaxi.dsp rename to KarplusStrongSingerMaxi.dsp index 376eb2818..4975c296e 100644 --- a/Karplus-StrongSingerMaxi.dsp +++ b/KarplusStrongSingerMaxi.dsp @@ -1,4 +1,4 @@ -declare name "Karplus-StrongSingerMaxi"; +declare name "KarplusStrongSingerMaxi"; declare version "1.1.3"; declare author "Bart Brouns"; declare license "GNU 3.0"; diff --git a/Karplus-StrongSingerMaxiSlave.dsp b/KarplusStrongSingerMaxiSlave.dsp similarity index 97% rename from Karplus-StrongSingerMaxiSlave.dsp rename to KarplusStrongSingerMaxiSlave.dsp index 3f5dde683..23acd3199 100644 --- a/Karplus-StrongSingerMaxiSlave.dsp +++ b/KarplusStrongSingerMaxiSlave.dsp @@ -1,4 +1,4 @@ -declare name "Karplus-StrongSingerMaxi"; +declare name "KarplusStrongSingerMaxi"; declare version "1.1.3"; declare author "Bart Brouns"; declare license "GNU 3.0"; diff --git a/Karplus-StrongSingerSlave.dsp b/KarplusStrongSingerSlave.dsp similarity index 98% rename from Karplus-StrongSingerSlave.dsp rename to KarplusStrongSingerSlave.dsp index 70657a77a..8e232d436 100644 --- a/Karplus-StrongSingerSlave.dsp +++ b/KarplusStrongSingerSlave.dsp @@ -1,4 +1,4 @@ -declare name "Karplus-StrongSinger"; +declare name "KarplusStrongSinger"; declare version "1.1.3"; declare author "Bart Brouns"; declare license "GNU 3.0"; diff --git a/README.md b/README.md index 02d96ebbf..8090037da 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # VoiceOfFaust -Turns any monophonic sound into a synthesizer, preserving the pitch and spectral dynamics of the input. +Turns any monophonic sound into a synthesizer, preserving the pitch and spectral dynamics of the input. The name was chosen because I use it mostly to turn my voice into a singing robot, and it's made in [Faust](http://faust.grame.fr). [These](http://magnetophon.nl/sounds/magnetophon/oldCombo.flac) [are](https://raw.githubusercontent.com/magnetophon/VoiceOfFaust/master/Caribean.mp3) some silly demo songs. @@ -17,8 +17,8 @@ VoiceOfFaust consists of: * a "super-saw" that can be cross-faded to a "super-pulse", free after [Adam Szabo](https://www.nada.kth.se/utbildning/grukth/exjobb/rapportlistor/2010/rapporter10/szabo_adam_10131.pdf) * flexible Q and frequency setting for the filters * an elaborate feedback and distortion matrix around the filters - * a couple of vocoders based on oscillators with controllable formants, - so IOW: oscillators that sound like they have a band pass filter on them. + * a couple of vocoders based on oscillators with controllable formants, + so IOW: oscillators that sound like they have a band pass filter on them. The types of oscillator used in these, are: * [CZ resonant](#czvocoder) oscillators, ported from a pd patch by [Mike Moser-Booth](http://forum.pdpatchrepo.info/topic/5992/casio-cz-oscillators) * [PAF](#pafvocoder), ported from a pd patch by [Miller Puckette](http://msp.ucsd.edu/techniques/v0.11/book-html/node96.html) @@ -26,30 +26,30 @@ VoiceOfFaust consists of: * [FOF](#fofvocoder), based on code by [Michael Jørgen Olsen](https://ccrma.stanford.edu/~mjolsen/220a/fp/Foflet.dsp) and extended as inspired by [Csound](https://csound.github.io/docs/manual/fof2.html) * [FM](#fmsinger), with modulation by the voice * [ring-modulation](#czringmod) with a few other CZ-oscillators - * [Karplus-Strong](#karplus-strongSinger): The famous [synthesis technique](https://en.wikipedia.org/wiki/Karplus%E2%80%93Strong_string_synthesis) used as an effect + * [KarplusStrong](#karplus-strongSinger): The famous [synthesis technique](https://en.wikipedia.org/wiki/Karplus%E2%80%93Strong_string_synthesis) used as an effect * [Phase modulation](#pmfx) used as an effect * All oscillators are synchronized to a single saw-wave, so they stay in phase, [unless you don't want them to!](#phase-parameters) -* powerful [parameter mapping system](#parameter-mapping-system) +* powerful [parameter mapping system](#parameter-mapping-system) Lets you set different parameter values for each band, without having to set them all separately -* All synths are spatialized at their core: sounds are generated in stereo, multichannel or ambisonics format, +* All synths are spatialized at their core: sounds are generated in stereo, multichannel or ambisonics format, not made in mono and afterwards given some stereo width with effects. -* [formant compression/expansion](#formant-compression/expansion): +* [formant compression/expansion](#formant-compression/expansion): Make the output spectrum more flat or more resonant, at the twist of a knob. * flexible [in and output routing](#in-and-output-routing), totally changing the character of your synth. * all parameters, including routing, are step-less, meaning any 'preset' can morph into any other, with the only exception of the octave setting (though for some of the synths even that one is continuously variable) * multi-band [deEsser](#deesser) and [reEsser](#reesser) -* Optionally use as a [master-slave](#master-slave) pair - * This is a workaround for the need for an external pitchtracker, making it possible to use these as plugins. - It has the nice side effect that your sounds become fully deterministic: +* Optionally use as a [master-slave](#master-slave) pair + * This is a workaround for the need for an external pitchtracker, making it possible to use these as plugins. + It has the nice side effect that your sounds become fully deterministic: because a pitchtracker will always output slightly different data, or at least at slightly different moments relative to the audio, the output audio can sometimes change quite a bit from run to run. -* [configuration file](lib/constants.lib) - Through this file, lot's of options can be set at compile time, allowing you to adapt the synth to the amount of CPU power and screen real-estate available. +* [configuration file](lib/constants.lib) + Through this file, lot's of options can be set at compile time, allowing you to adapt the synth to the amount of CPU power and screen real-estate available. Some of the highlights: * number of bands of the vocoders * number of output channels * whether we want [ambisonics](https://en.wikipedia.org/wiki/Ambisonics) output - * whether a vocoder has nrBands or nrBands * nrOutChan oscillators. [more info](#doubleOscs) + * whether a vocoder has nrBands or nrBands * nrOutChan oscillators. [more info](#doubleOscs) * Lots more, described in [Features](#features). @@ -77,8 +77,8 @@ VoiceOfFaust consists of: - [other synthesizers](#other-synthesizers) - [FMsinger](#fmsinger) - [CZringmod](#czringmod) - - [Karplus-StrongSinger](#karplus-strongsinger) - - [Karplus-StrongSingerMaxi](#karplus-strongsingermaxi) + - [KarplusStrongSinger](#karplus-strongsinger) + - [KarplusStrongSingerMaxi](#karplus-strongsingermaxi) - [master-slave](#master-slave) @@ -87,15 +87,15 @@ VoiceOfFaust consists of: ## Building and running -You need Faust from git, because version 0.9.73 and earlier have a bug in lf_sawpos. +You need Faust from git, because version 0.9.73 and earlier have a bug in lf_sawpos. Otherwise, at least use my_lf_sawpos in lib/master.lib. Then run ``./install.sh`` to compile. (It doesn't actually install anything.) -It is recommended to run the included puredata pitch tracker. +It is recommended to run the included puredata pitch tracker. Run it with: ```pd -nodac -nomidi -jack -nogui /path/to//VoiceOfFaust/PureData/OscSendVoc.pd``` -The built in pitch-tracker is a bit crude, because Faust cannot do FFT (yet). +The built in pitch-tracker is a bit crude, because Faust cannot do FFT (yet). Consider it the backup/try-out pitch tracker. @@ -108,19 +108,19 @@ Consider it the backup/try-out pitch tracker. ##### parameter mapping system -The parameters for the vocoders use a very flexible control system: -Each parameter has a bottom and a top knob, where the bottom changes the value at the lowest formant band, -and the top the value at the highest formant band. -The rest of the formant bands get values that ere evenly spaced in between. +The parameters for the vocoders use a very flexible control system: +Each parameter has a bottom and a top knob, where the bottom changes the value at the lowest formant band, +and the top the value at the highest formant band. +The rest of the formant bands get values that ere evenly spaced in between. For some of them that means linear spacing, for others logarithmic spacing. -For even more flexibility there is a parametric mid: +For even more flexibility there is a parametric mid: You set it's value and band number and the parameter values are now: * 'bottom' at the lowest band, going to: * 'mid value' at band nr 'mid band', going to: * 'top value' at the highest band. -Kind of like a parametric mid in equalizers. -If that's all a bit too much, just set ``para`` to 0 in the [configuration file](lib/constants.lib), +Kind of like a parametric mid in equalizers. +If that's all a bit too much, just set ``para`` to 0 in the [configuration file](lib/constants.lib), and you'll have just the top and bottom settings. ##### formant compression/expansion @@ -154,7 +154,7 @@ See the [site](#http://www.katjaas.nl/helmholtz/helmholtz.html) of the pitchtrac ##### reEsser Disabled by default, but can be enabled in the [configuration file](lib/constants.lib). -It replaces or augments the reduced highs caused by the +It replaces or augments the reduced highs caused by the ##### doubleOscs @@ -164,13 +164,13 @@ This is a compile option, with two settings: ##### in and output routing -The vocoders can mix their bands together in various ways: -We can send all the low bands left and the high ones right, -we can alternate the bands between left and right, -we can do various mid-side variations -we can even do a full [Hadamard matrix](https://en.wikipedia.org/wiki/Hadamard_matrix). +The vocoders can mix their bands together in various ways: +We can send all the low bands left and the high ones right, +we can alternate the bands between left and right, +we can do various mid-side variations +we can even do a full [Hadamard matrix](https://en.wikipedia.org/wiki/Hadamard_matrix). All of these, and more, can be clicklessly cross-faded between. - + In the [classicVocoder](#classicvocoder), a similar routing matrix is between the oscillators and the filters. @@ -204,7 +204,7 @@ The gui of the classicVocoder has two sections: * width of the pulse wave * mix between a single oscilators and multiple detuned ones * detuning amount -* filters +* filters Containing the parameters for the synthesis filters: * bottom, mid and top set the resonant frequencies * Q for bandwidth @@ -215,7 +215,7 @@ The gui of the classicVocoder has two sections: * all other filters * distortion amount * DC offset - + ##### CZvocoder [Block diagram](https://magnetophon.github.io/VoiceOfFaust/images/czVocoder-svg/process.svg) @@ -225,7 +225,7 @@ You can adjust: * the formant frequencies * the [phase parameters](#phase-parameters) - + ##### PAFvocoder [Block diagram](https://magnetophon.github.io/VoiceOfFaust/images/PAFvocoder-svg/process.svg) @@ -244,9 +244,9 @@ Same parameters, different sound. Original idea by [Xavier Rodet](http://anasynth.ircam.fr/home/english/media/singing-synthesis-chant-program). Also has frequencies and phases, but adds: -* skirt and decay: +* skirt and decay: Two settings that influence the brightness of each band -* Octavation index +* Octavation index Normally zero. If greater than zero, lowers the effective frequency by attenuating odd-numbered sinebursts. Whole numbers are full octaves, fractions transitional. Inspired by [Csound](https://csound.github.io/docs/manual/fof2.html). @@ -260,13 +260,13 @@ A sine wave that modulates its frequency with the input signal. There are five of these, one per octave, and each one has: * volume * modulation index -* modulation dynamics +* modulation dynamics This fades between 3 settings: * no dynamics: the amount of modulation stays constant with varying input signal * normal dynamics: more input volume equals more modulation * inverted dynamics: more input equals less modulation. - - + + #### CZringmod [Block diagram](https://magnetophon.github.io/VoiceOfFaust/images/CZringmod-svg/process.svg) @@ -274,7 +274,7 @@ There are five of these, one per octave, and each one has: Ringmodulates the input audio with emulations of Casio CZ oscillators. Again five octaves, with each octave containing three different oscillators: * square and pulse, each having volume and index (brightness) controls -* reso, having a volume and a resonance multiplier: +* reso, having a volume and a resonance multiplier: This is a formant oscillator, and it's resonant frequency is resMult is multiplied by the formant setting top right. It is intended to be used with an external formant tracker. * There is a global width parameter that controls a delay on the oscillators for one output. @@ -282,9 +282,9 @@ Again five octaves, with each octave containing three different oscillators: Because this delay is applied to just the oscillators, and before the ringmodulation, the sound of both output channels arrives simultaneously. This creates a mono-compatible widening of the stereo image. -#### Karplus-StrongSinger +#### KarplusStrongSinger -[Block diagram](https://magnetophon.github.io/VoiceOfFaust/images/Karplus-StrongSinger-svg/process.svg) +[Block diagram](https://magnetophon.github.io/VoiceOfFaust/images/KarplusStrongSinger-svg/process.svg) This takes the idea of a [Karplus Strong algorithm](https://en.wikipedia.org/wiki/Karplus%E2%80%93Strong_string_synthesis), but instead of noise, it uses the input signal. The feedback is ran trough an allpass filter, modulated with an LFO; adapted from the nonLinearModulator in instrument.lib. @@ -302,9 +302,9 @@ For the allpass filters you can set: * phase offset between the left and right LFO's. To round things off there is a volume for the dry path and a feedback amount for the delayed one. -#### Karplus-StrongSingerMaxi +#### KarplusStrongSingerMaxi -[Block diagram](https://magnetophon.github.io/VoiceOfFaust/images/Karplus-StrongSingerMaxi-svg/process.svg) +[Block diagram](https://magnetophon.github.io/VoiceOfFaust/images/KarplusStrongSingerMaxi-svg/process.svg) To have more voice control of the spectrum, this one has a kind of vocoder in the feedback path. Since we don't want the average volume of the feedback path changing much, only the volumes relative to the other bands, the vocoder is made out of equalizers, not bandpass filters. @@ -324,18 +324,18 @@ It loses the octave slider, and instead has a separate delay and modulation for [Block diagram](https://magnetophon.github.io/VoiceOfFaust/images/master-svg/process.svg) - * This is a workaround for the need for an external pitchtracker, making it possible to use these as plugins. - It has the nice side effect that your sounds become fully deterministic: + * This is a workaround for the need for an external pitchtracker, making it possible to use these as plugins. + It has the nice side effect that your sounds become fully deterministic: because a pitchtracker will always output slightly different data, or at least at slightly different moments relative to the audio, the output audio can sometimes change quite a bit from run to run. - * The master is a small program that receives the audio and the OSC messages from the external pitch tracker, + * The master is a small program that receives the audio and the OSC messages from the external pitch tracker, and outputs: * a copy of the input audio * a saw wave defining the pitch and phase * the value of fidelity, from the pitch tracker, as audio. * The slaves are synths and effects that input the above three signals. - * The outputs of the master can be recorded into a looper or DAW, - and be used as song building blocks, without needing the pitch tracker. - Now you are 100% free to switch synths, automate parameters, etc. + * The outputs of the master can be recorded into a looper or DAW, + and be used as song building blocks, without needing the pitch tracker. + Now you are 100% free to switch synths, automate parameters, etc. VoiceOfFaust started life as a port of [VocSynth](https://github.com/magnetophon/VocSynth). diff --git a/faust2firefox b/faust2firefox deleted file mode 100755 index 8e0772547..000000000 --- a/faust2firefox +++ /dev/null @@ -1,3 +0,0 @@ -#! /nix/store/disi5277lygfj6m7m3ajwvvp9mqdp4la-bash-4.3-p42/bin/bash -e -export PATH=/nix/store/c035ds7v0n9kc7plqf24vphy8dgf2a0i-faust-8-1-2015/bin:/nix/store/lakrzxg73ydwcr07y2rn4f5lgw7gyl4z-xdg-utils-1.1.0-rc3p46/bin${PATH:+:}$PATH -exec -a "$0" /nix/store/qkzrjp22ja7wnzv3y8p1pwsh6xfgfaba-faust2firefox-8-1-2015/bin/.faust2firefox-wrapped "${extraFlagsArray[@]}" "$@" diff --git a/faust2jack b/faust2jack deleted file mode 100755 index ba57a2ecb..000000000 --- a/faust2jack +++ /dev/null @@ -1,114 +0,0 @@ -#!/bin/bash - -OSCDEFS="" -##################################################################### -# # -# Compiles Faust programs to jack-gtk # -# (c) Grame, 2009-2011 # -# # -##################################################################### - -#------------------------------------------------------------------- -# Set Faust include path - -if [ -f $FAUST_LIB_PATH/music.lib ] -then - FAUSTLIB=$FAUST_LIB_PATH -elif [ -f /usr/local/lib/faust/music.lib ] -then - FAUSTLIB=/usr/local/lib/faust/ -elif [ -f /usr/lib/faust/music.lib ] -then - FAUSTLIB=/usr/lib/faust/ -else - error "$0: Cannot find Faust library dir (usually /usr/local/lib/faust)" -fi - - -#------------------------------------------------------------------- -# Check darwin specifics -# -if [[ $(uname) == Darwin ]]; then - MARCH="" -else - MARCH="-march=native" -fi - -#------------------------------------------------------------------- -# Default compilation flags for gcc and icc : -# -MYGCCFLAGS="-Os $MARCH -mfpmath=sse -msse -msse2 -msse3 -ffast-math -ftree-vectorize" -MYICCFLAGS="-O3 -xHost -ftz -fno-alias -fp-model fast=2" - - -#------------------------------------------------------------------- -# Analyze command arguments : -# faust options -> OPTIONS -# if -omp : -openmp or -fopenmp -> OPENMP -# existing *.dsp files -> FILES -# - -# PHASE 1 : Look for -icc option to force use of intel icc (actually icpc) -# without having to configure CXX and CXXFLAGS -CXX=g++ -CXXFLAGS=$MYGCCFLAGS -for p in $@; do - if [ "$p" = -icc ]; then - CXX=icpc - CXXFLAGS=$MYICCFLAGS - fi -done - - -#PHASE 2 : dispatch command arguments -for p in $@; do - if [ "$p" = -omp ]; then - if [[ $CXX == "icpc" ]]; then - OMP="-openmp" - else - OMP="-fopenmp" - fi - fi - - if [ "$p" = -icc ]; then - ignore=" " - elif [ $p = "-osc" ]; then - OSCDEFS="-DOSCCTRL -L$FAUSTLIB -lOSCFaust -loscpack" - elif [ $p = "-httpd" ]; then - HTTPDEFS="-DHTTPCTRL -L$FAUSTLIB -lHTTPDFaust -lmicrohttpd" - elif [ $p = "-arch32" ]; then - PROCARCH="-m32 -L/usr/lib32" - elif [ $p = "-arch64" ]; then - PROCARCH="-m64" - elif [ ${p:0:1} = "-" ]; then - OPTIONS="$OPTIONS $p" - elif [[ -f "$p" ]]; then - FILES="$FILES $p" - else - OPTIONS="$OPTIONS $p" - fi -done - - -#------------------------------------------------------------------- -# compile the *.dsp files using JACK-GTK on linux -# -for f in $FILES; do - - # compile faust to c++ - faust -i -a jack-gtk.cpp $OPTIONS "$f" -o "$f.cpp" - - # compile c++ to binary - ( - $CXX $CXXFLAGS $FAUSTTOOLSFLAGS $OMP "$f.cpp" `pkg-config --cflags --libs jack gtk+-2.0` $PROCARCH $OSCDEFS $HTTPDEFS -o "${f%.dsp}" - ) > /dev/null - rm "$f.cpp" - - # collect binary file name for FaustWorks - BINARIES="$BINARIES${f%.dsp};" -done - - -echo $BINARIES - - diff --git a/install.sh b/install.sh index ca32fcaab..57eff6281 100755 --- a/install.sh +++ b/install.sh @@ -7,8 +7,8 @@ masters=( FMsinger.dsp FMvocoder.dsp FOFvocoder.dsp - Karplus-StrongSinger.dsp - Karplus-StrongSingerMaxi.dsp + KarplusStrongSinger.dsp + KarplusStrongSingerMaxi.dsp master.dsp PAFvocoder.dsp # softSyncVocoder.dsp @@ -24,8 +24,8 @@ slaves=( FMsingerslave.dsp FMvocoderSlave.dsp FOFvocoderSlave.dsp - Karplus-StrongSingerMaxiSlave.dsp - Karplus-StrongSingerSlave.dsp + KarplusStrongSingerMaxiSlave.dsp + KarplusStrongSingerSlave.dsp PAFvocoderSlave.dsp stringSingerSlave.dsp subSingerSlave.dsp diff --git a/launchers/Karplus-StrongSingerMaxi_PT b/launchers/KarplusStrongSingerMaxi_PT similarity index 74% rename from launchers/Karplus-StrongSingerMaxi_PT rename to launchers/KarplusStrongSingerMaxi_PT index dfa606c93..6cba5c85e 100755 --- a/launchers/Karplus-StrongSingerMaxi_PT +++ b/launchers/KarplusStrongSingerMaxi_PT @@ -2,11 +2,11 @@ # a NixOS friendly prompt #//////////////////////////////////////////////////////// -# startup script for a bank of the Karplus-Strong synths, +# startup script for a bank of the KarplusStrong synths, # with an EQ based vocoder in the feedback path, # plus pitchtracker # This one is quite CPU expensive #//////////////////////////////////////////////////////// -current_synth=Karplus-StrongSingerMaxi +current_synth=KarplusStrongSingerMaxi source synthWrapper diff --git a/launchers/Karplus-StrongSinger_PT b/launchers/KarplusStrongSinger_PT similarity index 65% rename from launchers/Karplus-StrongSinger_PT rename to launchers/KarplusStrongSinger_PT index f13c2a468..406ebb4e4 100755 --- a/launchers/Karplus-StrongSinger_PT +++ b/launchers/KarplusStrongSinger_PT @@ -2,8 +2,8 @@ # a NixOS friendly prompt #//////////////////////////////////////////////////////// -# startup script for the Karplus-Strong synth plus pitchtracker +# startup script for the KarplusStrong synth plus pitchtracker #//////////////////////////////////////////////////////// -current_synth=Karplus-StrongSinger +current_synth=KarplusStrongSinger source synthWrapper diff --git a/lib/FullGUI.lib b/lib/FullGUI.lib index a63196d2c..0f0776f57 100644 --- a/lib/FullGUI.lib +++ b/lib/FullGUI.lib @@ -418,7 +418,7 @@ rotation = routingGroup(hslider("[6]rotation[tooltip: rotate the stereo f // Karplus Strong as an effect //----------------------------------------------- -KPgroup(x) = FXGroup((vgroup("[4]Karplus-Strong[tooltip: a feedback delay line whose delay-time is tuned to the input pitch]", x))); +KPgroup(x) = FXGroup((vgroup("[4]KarplusStrong[tooltip: a feedback delay line whose delay-time is tuned to the input pitch]", x))); mainKPgroup(x) = KPgroup(( hgroup("[1]main", x))); KPvolume = mainKPgroup( vslider("[0]volume [style:knob][tooltip: the output-level of the delay]", 0.5, 0, 1, 0.001):volScale); KPrelease = mainKPgroup( vslider("[1]decay time[style:knob][tooltip: the decay time of the feedback]", 0.25, 0.001, 1, 0.001):pow(4)*8):si.smooth(0.999); diff --git a/lib/KarplusStrongFX.lib b/lib/KarplusStrongFX.lib index 8d814705a..664d9138d 100644 --- a/lib/KarplusStrongFX.lib +++ b/lib/KarplusStrongFX.lib @@ -1,5 +1,5 @@ //----------------------------------------------- -// Karplus-Strong effect +// KarplusStrong effect //----------------------------------------------- KPcenters(freq,oct) = VocoderFreqs(KPbottom,KPtop):(par(i,nrBands, _,freq * oct:*:min(ma.SR/2):dezip)); diff --git a/lib/bigConstants.lib b/lib/bigConstants.lib index 48f9e0f19..53ed7a9ff 100644 --- a/lib/bigConstants.lib +++ b/lib/bigConstants.lib @@ -51,5 +51,5 @@ defaultBottom = ((0.25*pow(2,0.5))+0.5):pow(0.5); // carefull: the CPU usage will go up with pow(2,maxOctavation) ! // and be prepared for extremely long compile times. maxOctavation = 1; -// Karplus-Strong: +// KarplusStrong: nlfOrder = 16; // order of the non linear modulator diff --git a/lib/constants.lib b/lib/constants.lib index 74cd6c4ec..a00b8f63a 100644 --- a/lib/constants.lib +++ b/lib/constants.lib @@ -52,5 +52,5 @@ defaultBottom = ((0.25*pow(2,0.5))+0.5):pow(0.5); // carefull: the CPU usage will go up with pow(2,maxOctavation) ! // and be prepared for extremely long compile times. maxOctavation = 1; -// Karplus-Strong: +// KarplusStrong: nlfOrder = 16; // order of the non linear modulator diff --git a/lib/smallConstants.lib b/lib/smallConstants.lib index 3771e124b..f83230f0d 100644 --- a/lib/smallConstants.lib +++ b/lib/smallConstants.lib @@ -51,5 +51,5 @@ defaultBottom = ((0.25*pow(2,0.5))+0.5):pow(0.5); // carefull: the CPU usage will go up with pow(2,maxOctavation) ! // and be prepared for extremely long compile times. maxOctavation = 1; -// Karplus-Strong: +// KarplusStrong: nlfOrder = 16; // order of the non linear modulator diff --git a/presets/KarplusBass b/presets/KarplusBass index 055c4ed2b..424607d9b 100644 --- a/presets/KarplusBass +++ b/presets/KarplusBass @@ -7,46 +7,46 @@ -96 0x00/0x00/effects/input_compression_and_expansion/qThreshold 1 0x00/0x00/effects/input_compression_and_expansion/qAttack 20 0x00/0x00/effects/input_compression_and_expansion/qRelease --1 0x00/0x00/effects/Karplus-Strong/main/octave -0.37 0x00/0x00/effects/Karplus-Strong/main/volume -0.485515 0x00/0x00/effects/Karplus-Strong/main/decay --5.73 0x00/0x00/effects/Karplus-Strong/main/threshold -0.15 0x00/0x00/effects/Karplus-Strong/main/vocoder/strength -0.57 0x00/0x00/effects/Karplus-Strong/main/vocoder/cut/boost -12.2587 0x00/0x00/effects/Karplus-Strong/main/vocoder/top -0.5 0x00/0x00/effects/Karplus-Strong/main/vocoder/bottom -2.154 0x00/0x00/effects/Karplus-Strong/main/vocoder/Q -1 0x00/0x00/effects/Karplus-Strong/main/damping -0.14 0x00/0x00/effects/Karplus-Strong/+2_oct/feedback --0.42 0x00/0x00/effects/Karplus-Strong/+2_oct/all-pass/static -0.02 0x00/0x00/effects/Karplus-Strong/+2_oct/all-pass/left-right_offset -0 0x00/0x00/effects/Karplus-Strong/+2_oct/modulated_all-pass/amount -0.507 0x00/0x00/effects/Karplus-Strong/+2_oct/modulated_all-pass/frequency -0.667 0x00/0x00/effects/Karplus-Strong/+2_oct/modulated_all-pass/phase -0 0x00/0x00/effects/Karplus-Strong/+1_oct/feedback -0 0x00/0x00/effects/Karplus-Strong/+1_oct/all-pass/static -0.76 0x00/0x00/effects/Karplus-Strong/+1_oct/all-pass/left-right_offset -0 0x00/0x00/effects/Karplus-Strong/+1_oct/modulated_all-pass/amount -0.5 0x00/0x00/effects/Karplus-Strong/+1_oct/modulated_all-pass/frequency -0.667 0x00/0x00/effects/Karplus-Strong/+1_oct/modulated_all-pass/phase -0 0x00/0x00/effects/Karplus-Strong/0_oct/feedback -1.34 0x00/0x00/effects/Karplus-Strong/0_oct/all-pass/static --0.48 0x00/0x00/effects/Karplus-Strong/0_oct/all-pass/left-right_offset -0 0x00/0x00/effects/Karplus-Strong/0_oct/modulated_all-pass/amount -1 0x00/0x00/effects/Karplus-Strong/0_oct/modulated_all-pass/frequency -0.667 0x00/0x00/effects/Karplus-Strong/0_oct/modulated_all-pass/phase -0.505 0x00/0x00/effects/Karplus-Strong/-1_oct/feedback --0.22 0x00/0x00/effects/Karplus-Strong/-1_oct/all-pass/static -0.2 0x00/0x00/effects/Karplus-Strong/-1_oct/all-pass/left-right_offset -0.405 0x00/0x00/effects/Karplus-Strong/-1_oct/modulated_all-pass/amount -1 0x00/0x00/effects/Karplus-Strong/-1_oct/modulated_all-pass/frequency -0.667 0x00/0x00/effects/Karplus-Strong/-1_oct/modulated_all-pass/phase -1 0x00/0x00/effects/Karplus-Strong/-2_oct/feedback --4.47035e-10 0x00/0x00/effects/Karplus-Strong/-2_oct/all-pass/static --4.47035e-10 0x00/0x00/effects/Karplus-Strong/-2_oct/all-pass/left-right_offset -0.245 0x00/0x00/effects/Karplus-Strong/-2_oct/modulated_all-pass/amount -2 0x00/0x00/effects/Karplus-Strong/-2_oct/modulated_all-pass/frequency -0.245 0x00/0x00/effects/Karplus-Strong/-2_oct/modulated_all-pass/phase +-1 0x00/0x00/effects/KarplusStrong/main/octave +0.37 0x00/0x00/effects/KarplusStrong/main/volume +0.485515 0x00/0x00/effects/KarplusStrong/main/decay +-5.73 0x00/0x00/effects/KarplusStrong/main/threshold +0.15 0x00/0x00/effects/KarplusStrong/main/vocoder/strength +0.57 0x00/0x00/effects/KarplusStrong/main/vocoder/cut/boost +12.2587 0x00/0x00/effects/KarplusStrong/main/vocoder/top +0.5 0x00/0x00/effects/KarplusStrong/main/vocoder/bottom +2.154 0x00/0x00/effects/KarplusStrong/main/vocoder/Q +1 0x00/0x00/effects/KarplusStrong/main/damping +0.14 0x00/0x00/effects/KarplusStrong/+2_oct/feedback +-0.42 0x00/0x00/effects/KarplusStrong/+2_oct/all-pass/static +0.02 0x00/0x00/effects/KarplusStrong/+2_oct/all-pass/left-right_offset +0 0x00/0x00/effects/KarplusStrong/+2_oct/modulated_all-pass/amount +0.507 0x00/0x00/effects/KarplusStrong/+2_oct/modulated_all-pass/frequency +0.667 0x00/0x00/effects/KarplusStrong/+2_oct/modulated_all-pass/phase +0 0x00/0x00/effects/KarplusStrong/+1_oct/feedback +0 0x00/0x00/effects/KarplusStrong/+1_oct/all-pass/static +0.76 0x00/0x00/effects/KarplusStrong/+1_oct/all-pass/left-right_offset +0 0x00/0x00/effects/KarplusStrong/+1_oct/modulated_all-pass/amount +0.5 0x00/0x00/effects/KarplusStrong/+1_oct/modulated_all-pass/frequency +0.667 0x00/0x00/effects/KarplusStrong/+1_oct/modulated_all-pass/phase +0 0x00/0x00/effects/KarplusStrong/0_oct/feedback +1.34 0x00/0x00/effects/KarplusStrong/0_oct/all-pass/static +-0.48 0x00/0x00/effects/KarplusStrong/0_oct/all-pass/left-right_offset +0 0x00/0x00/effects/KarplusStrong/0_oct/modulated_all-pass/amount +1 0x00/0x00/effects/KarplusStrong/0_oct/modulated_all-pass/frequency +0.667 0x00/0x00/effects/KarplusStrong/0_oct/modulated_all-pass/phase +0.505 0x00/0x00/effects/KarplusStrong/-1_oct/feedback +-0.22 0x00/0x00/effects/KarplusStrong/-1_oct/all-pass/static +0.2 0x00/0x00/effects/KarplusStrong/-1_oct/all-pass/left-right_offset +0.405 0x00/0x00/effects/KarplusStrong/-1_oct/modulated_all-pass/amount +1 0x00/0x00/effects/KarplusStrong/-1_oct/modulated_all-pass/frequency +0.667 0x00/0x00/effects/KarplusStrong/-1_oct/modulated_all-pass/phase +1 0x00/0x00/effects/KarplusStrong/-2_oct/feedback +-4.47035e-10 0x00/0x00/effects/KarplusStrong/-2_oct/all-pass/static +-4.47035e-10 0x00/0x00/effects/KarplusStrong/-2_oct/all-pass/left-right_offset +0.245 0x00/0x00/effects/KarplusStrong/-2_oct/modulated_all-pass/amount +2 0x00/0x00/effects/KarplusStrong/-2_oct/modulated_all-pass/frequency +0.245 0x00/0x00/effects/KarplusStrong/-2_oct/modulated_all-pass/phase 0.4 0x00/0x00/effects/Phase_Modulation/amount 0.5 0x00/0x00/effects/Phase_Modulation/frequency 0.666 0x00/0x00/effects/Phase_Modulation/phase diff --git a/todo.txt b/todo.txt index 49b4fec14..27cec3ae9 100644 --- a/todo.txt +++ b/todo.txt @@ -9,7 +9,7 @@ make limiter modular fix vu -make Karplus-StrongSingerMaxi slave +make KarplusStrongSingerMaxi slave also StringSinger, VoiceOfFaust, FMsinger and SubSinger demo txt diff --git a/travis/build.sh b/travis/build.sh index 4436d2649..6055c2370 100755 --- a/travis/build.sh +++ b/travis/build.sh @@ -7,8 +7,8 @@ DSPs=( FMsinger FMvocoder FOFvocoder - Karplus-StrongSinger - Karplus-StrongSingerMaxi + KarplusStrongSinger + KarplusStrongSingerMaxi master PAFvocoder # softSyncVocoder @@ -20,8 +20,8 @@ DSPs=( czVocoderSlave FMvocoderSlave FOFvocoderSlave - Karplus-StrongSingerMaxiSlave - Karplus-StrongSingerSlave + KarplusStrongSingerMaxiSlave + KarplusStrongSingerSlave PAFvocoderSlave stringSingerSlave subSingerSlave