aboutsummaryrefslogtreecommitdiffstats
path: root/BowelyzerAnalyzer.sc
diff options
context:
space:
mode:
authorDavid Runge <dave@sleepmap.de>2016-07-03 16:34:58 +0200
committerDavid Runge <dave@sleepmap.de>2016-07-03 16:34:58 +0200
commit8c45cbc006d751df91eb637032190ff4a33fc78e (patch)
tree998a16b254a51a1b0318b8cc789eace82829b57e /BowelyzerAnalyzer.sc
parent966fa72f9676643b1b56c0d41046055b50b03a41 (diff)
downloadbowelyzer-0.4.tar.gz
bowelyzer-0.4.tar.bz2
bowelyzer-0.4.tar.xz
bowelyzer-0.4.zip
classes/*.sc: Moving all classes to the proper subfolder classes.0.4
Diffstat (limited to 'BowelyzerAnalyzer.sc')
-rw-r--r--BowelyzerAnalyzer.sc209
1 files changed, 0 insertions, 209 deletions
diff --git a/BowelyzerAnalyzer.sc b/BowelyzerAnalyzer.sc
deleted file mode 100644
index 39728bd..0000000
--- a/BowelyzerAnalyzer.sc
+++ /dev/null
@@ -1,209 +0,0 @@
-BowelyzerAnalyzer{
-
- var <synths;
- var <analyzerGroup;
- var <monitoringGroup;
-
- *new{
- arg config;
- ^super.new.init(config);
- }
-
- init{
- arg config;
- synths = Dictionary.new(config.at(\inputs).size);
- this.setupGroups;
- this.addSynthsFromConfig(config);
- Routine{
- 1.wait;
- this.startSynthsFromConfig(config);
- }.play;
- }
-
- // setup a synth group for the analyzers
- setupGroups{
- analyzerGroup = Group.new;
- monitoringGroup = Group.after(analyzerGroup);
- NodeWatcher.register(analyzerGroup);
- NodeWatcher.register(monitoringGroup);
- }
-
- // add synths for the defined channels
- addSynthsFromConfig{
- arg config;
- config.at(\inputs).keysValuesDo({|name, inputChannel|
- ("Adding SynthDef \""++name++"\" on input "++inputChannel).postln;
- this.addSynthWithName(name);
- });
- }
-
- addSynthWithName{
- arg name;
- SynthDef(name, {
- arg inputChannel,
- sendReplyFreq,
- amplitudeAttackTime,
- amplitudeReleaseTime,
- hfHainsworth,
- hfFoote,
- hfThreshold,
- hfWaitTime,
- pitchInitFreq,
- pitchMinFreq,
- pitchMaxFreq,
- pitchExecFreq,
- pitchMaxBinsPerOctave,
- pitchMedian,
- pitchAmpThreshold,
- pitchPeakThreshold,
- pitchDownSample
- ;
- var amplitude, input, detect, pitch, hasPitch;
- //TODO: Add volume for SoundIn
- input = SoundIn.ar(bus: inputChannel);
- amplitude = Amplitude.kr(
- in: input,
- attackTime: amplitudeAttackTime,
- releaseTime: amplitudeReleaseTime
- );
- detect = A2K.kr(
- PV_HainsworthFoote.ar(
- FFT(LocalBuf(2048), input),
- proph: hfHainsworth,
- propf: hfFoote,
- threshold: hfThreshold,
- waittime: hfWaitTime
- )
- );
- # pitch, hasPitch = Pitch.kr(
- in: input,
- initFreq: pitchInitFreq,
- minFreq: pitchMinFreq,
- maxFreq: pitchMaxFreq,
- execFreq: pitchExecFreq,
- maxBinsPerOctave: pitchMaxBinsPerOctave,
- median: pitchMedian,
- ampThreshold: pitchAmpThreshold,
- peakThreshold: pitchPeakThreshold,
- downSample: pitchDownSample
- );
- // SendReply for OSCHub
- SendReply.kr(
- Impulse.kr(sendReplyFreq),
- "/"++name,
- [amplitude, pitch, hasPitch, detect]
- );
- // SendReply for LevelIndicator
- SendReply.kr(
- Impulse.kr(10),
- "/levels/"++name,
- [
- Amplitude.kr(input),
- K2A.ar(
- Peak.ar(
- input,
- Delay1.kr(Impulse.kr(10))
- ).lag(0, 3)
- )
- ]
- );
- }).add;
- }
-
- startSynthsFromConfig{
- arg config;
- config.at(\controls).keysValuesDo({|name, controls|
- postln("Starting synth \""++name++"\".");
- this.startSynthWithNameAndControls(name, controls, config.at(\inputs).at(name));
- });
- }
-
- // add and start the Synth with name, controls and input channel
- startSynthWithNameAndControls{
- arg name, controls, input;
- // if the input is set to active, start right away, else pause
- if(controls.at(\active),{
- synths.add(name -> Synth.new(
- name,
- [
- inputChannel: input,
- sendReplyFreq: controls.at(\sendReplyFreq),
- amplitudeAttackTime: controls.at(\amplitudeAttackTime),
- amplitudeReleaseTime: controls.at(\amplitudeReleaseTime),
- hfHainsworth: controls.at(\hfhainsworth),
- hfFoote: controls.at(\hfFoote),
- hfThreshold: controls.at(\hfThreshold),
- hfWaitTime: controls.at(\hfWaitTime),
- pitchInitFreq: controls.at(\pitchInitFreq),
- pitchMinFreq: controls.at(\pitchMinFreq),
- pitchMaxFreq: controls.at(\pitchMaxFreq),
- pitchExecFreq: controls.at(\pitchExecFreq),
- pitchMaxBinsPerOctave: controls.at(\pitchMaxBinsPerOctave),
- pitchMedian: controls.at(\pitchMedian),
- pitchAmpThreshold: controls.at(\pitchAmpThreshold),
- pitchPeakThreshold: controls.at(\pitchPeakThreshold),
- pitchDownSample: controls.at(\pitchDownSample)
- ],
- analyzerGroup
- ).register;
- );
- },{
- synths.add(name -> Synth.newPaused(
- name,
- [
- inputChannel: input,
- sendReplyFreq: controls.at(\sendReplyFreq),
- amplitudeAttackTime: controls.at(\amplitudeAttackTime),
- amplitudeReleaseTime: controls.at(\amplitudeReleaseTime),
- hfHainsworth: controls.at(\hfhainsworth),
- hfFoote: controls.at(\hfFoote),
- hfThreshold: controls.at(\hfThreshold),
- hfWaitTime: controls.at(\hfWaitTime),
- pitchInitFreq: controls.at(\pitchInitFreq),
- pitchMinFreq: controls.at(\pitchMinFreq),
- pitchMaxFreq: controls.at(\pitchMaxFreq),
- pitchExecFreq: controls.at(\pitchExecFreq),
- pitchMaxBinsPerOctave: controls.at(\pitchMaxBinsPerOctave),
- pitchMedian: controls.at(\pitchMedian),
- pitchAmpThreshold: controls.at(\pitchAmpThreshold),
- pitchPeakThreshold: controls.at(\pitchPeakThreshold),
- pitchDownSample: controls.at(\pitchDownSample)
- ],
- analyzerGroup
- ).register;
- );
- });
- }
-
- // set a synth control by provoding its name, its control name and control value
- setSynthControl{
- arg name, controlName, controlValue;
- synths.at(name).set(controlName, controlValue);
- }
-
- // start a synth by name
- startAnalysisSynth{
- arg name;
- synths.at(name).run(true);
- }
-
- // stop a synth by name
- stopAnalysisSynth{
- arg name;
- synths.at(name).run(false);
- }
-
- // free a synth by name
- freeAnalysisSynth{
- arg name;
- synths.at(name).free;
- }
-
- startAllAnalysisSynths{
- analyzerGroup.run(true);
- }
-
- stopAllAnalysisSynths{
- analyzerGroup.run(false);
- }
-}