ofxtonic und sound
DESCRIPTION
ofxTonicTRANSCRIPT
![Page 1: ofxTonic und Sound](https://reader033.vdocument.in/reader033/viewer/2022051514/54c3054e4a7959ca778b46be/html5/thumbnails/1.jpg)
ofxTonicFrequency Modulation
![Page 2: ofxTonic und Sound](https://reader033.vdocument.in/reader033/viewer/2022051514/54c3054e4a7959ca778b46be/html5/thumbnails/2.jpg)
setup
1. ofxAddons : ofxTonic https://github.com/TonicAudio/ofxTonic !2. Accelerate.frameworks !*. TonicAudio (Andere Beispiele) https://github.com/TonicAudio/Tonic
![Page 3: ofxTonic und Sound](https://reader033.vdocument.in/reader033/viewer/2022051514/54c3054e4a7959ca778b46be/html5/thumbnails/3.jpg)
import Accelerate.framework
1
2
3
![Page 4: ofxTonic und Sound](https://reader033.vdocument.in/reader033/viewer/2022051514/54c3054e4a7959ca778b46be/html5/thumbnails/4.jpg)
import Accelerate.framework
1
2
![Page 5: ofxTonic und Sound](https://reader033.vdocument.in/reader033/viewer/2022051514/54c3054e4a7959ca778b46be/html5/thumbnails/5.jpg)
import Accelerate.framework
![Page 6: ofxTonic und Sound](https://reader033.vdocument.in/reader033/viewer/2022051514/54c3054e4a7959ca778b46be/html5/thumbnails/6.jpg)
code basic
![Page 7: ofxTonic und Sound](https://reader033.vdocument.in/reader033/viewer/2022051514/54c3054e4a7959ca778b46be/html5/thumbnails/7.jpg)
code
- .h !#include "ofxTonic.h" !using namespace Tonic; ofxTonicSynth synth;
- .cpp !ofSoundStreamSetup(2, 0, this, 44100, 256, 4); __SyntCode__ synth.setOutputGen( __output__ ); !!void ofApp::audioRequested(float* output, int bufferSize, int nChannels){ synth.fillBufferOfFloats(output, bufferSize, nChannels); }
![Page 8: ofxTonic und Sound](https://reader033.vdocument.in/reader033/viewer/2022051514/54c3054e4a7959ca778b46be/html5/thumbnails/8.jpg)
simple Tone
![Page 9: ofxTonic und Sound](https://reader033.vdocument.in/reader033/viewer/2022051514/54c3054e4a7959ca778b46be/html5/thumbnails/9.jpg)
synth code
Generator sinTone = SineWave().freq(440); synth.setOutputGen(sinTone);
![Page 10: ofxTonic und Sound](https://reader033.vdocument.in/reader033/viewer/2022051514/54c3054e4a7959ca778b46be/html5/thumbnails/10.jpg)
simple Parameter
![Page 11: ofxTonic und Sound](https://reader033.vdocument.in/reader033/viewer/2022051514/54c3054e4a7959ca778b46be/html5/thumbnails/11.jpg)
code
ControlParameter _fq = synth.addParameter(„Frequency"); !Generator sinTone = SineWave().freq(_fq); !!synth.setParameter("Frequency", mouseY);
mouseY
Frequency (in setParameter)
_fq (in addParameter)
_fq
![Page 12: ofxTonic und Sound](https://reader033.vdocument.in/reader033/viewer/2022051514/54c3054e4a7959ca778b46be/html5/thumbnails/12.jpg)
simple Trigger
![Page 13: ofxTonic und Sound](https://reader033.vdocument.in/reader033/viewer/2022051514/54c3054e4a7959ca778b46be/html5/thumbnails/13.jpg)
ADSR
http://en.wikipedia.org/wiki/Synthesizer#ADSR_envelope
![Page 14: ofxTonic und Sound](https://reader033.vdocument.in/reader033/viewer/2022051514/54c3054e4a7959ca778b46be/html5/thumbnails/14.jpg)
code
ControlParameter _trigger = synth.addParameter("Trigger"); Generator env = ADSR().attack(0).decay(1).sustain(0).release(0).trigger(_trigger); !synth.setParameter("Trigger", 1); synth.setParameter("Frequency", 440);
Trigger ( if key == 1 )
Trigger (in setParameter)
_trigger (in addParameter)
ADSR(). trigger( _trigger )
![Page 15: ofxTonic und Sound](https://reader033.vdocument.in/reader033/viewer/2022051514/54c3054e4a7959ca778b46be/html5/thumbnails/15.jpg)
FM_01 Code
![Page 16: ofxTonic und Sound](https://reader033.vdocument.in/reader033/viewer/2022051514/54c3054e4a7959ca778b46be/html5/thumbnails/16.jpg)
synth code
- in setup() ! // Parameter ControlParameter triggerPitch = synth.addParameter("triggerPitch"); ControlParameter amountMod = synth.addParameter("amountMod"); ControlParameter amountFQ = synth.addParameter("amountFQ"); ControlParameter envelopTrigger = synth.addParameter("trigger"); ! // Main Fq Generator mainFq = ControlMidiToFreq().input(triggerPitch).smoothed(); // Modulation Fq Generator rModFq = mainFq * amountFQ; Generator modulation = SineWave().freq( rModFq ) * rModFq * amountMod; // Tone Generator Generator tone = SineWave().freq(mainFq + modulation); // Envelop Generator Generator env = ADSR().attack(0.001).decay(0.5).sustain(0).release(0).trigger(envelopTrigger).legato(false); // Output synth.setOutputGen( tone * env * 0.75 ); ofAddListener(ofEvents().keyPressed, this, &ofApp::keyPressedOne);
![Page 17: ofxTonic und Sound](https://reader033.vdocument.in/reader033/viewer/2022051514/54c3054e4a7959ca778b46be/html5/thumbnails/17.jpg)
synth diagram
Parameter Main Fq Modulation Fq
Tone Generator Envelop Generator
Ouput
triggerPitch amountMod amountFQ envelopTrigger
![Page 18: ofxTonic und Sound](https://reader033.vdocument.in/reader033/viewer/2022051514/54c3054e4a7959ca778b46be/html5/thumbnails/18.jpg)
code diagram
ControlParameter triggerPitch = synth.addParameter(„triggerPitch“); ControlParameter envelopTrigger = synth.addParameter("trigger");
synth.setParameter("trigger", 1); synth.setParameter("triggerPitch", 48);
KeyPressed
Generator mainFq = ControlMidiToFreq().input(triggerPitch).smoothed(); Generator env = ADSR().~~trigger(envelopTrigger).legato(false);
![Page 19: ofxTonic und Sound](https://reader033.vdocument.in/reader033/viewer/2022051514/54c3054e4a7959ca778b46be/html5/thumbnails/19.jpg)
Input
![Page 20: ofxTonic und Sound](https://reader033.vdocument.in/reader033/viewer/2022051514/54c3054e4a7959ca778b46be/html5/thumbnails/20.jpg)
code
-.h !void audioReceived(float* input, int bufferSize, int nChannels); RingBufferWriter inputBuffer;
-.cpp !ofSoundStreamSetup(2, 2, this, 44100, 256, 4); RingBuffer _inputS; inputBuffer = RingBufferWriter("_inputS", 256, 4); RingBufferReader inputReader = RingBufferReader().bufferName(„_inputS"); !void ofApp::audioReceived(float* input, int bufferSize, int nChannels){ inputBuffer.write(input, bufferSize, nChannels); }
![Page 21: ofxTonic und Sound](https://reader033.vdocument.in/reader033/viewer/2022051514/54c3054e4a7959ca778b46be/html5/thumbnails/21.jpg)
input diagram
audio received inputBuffer
RingBufferReader (RingBuffer)
Ouput
RingBufferWriter ( Buffer Setup )
![Page 22: ofxTonic und Sound](https://reader033.vdocument.in/reader033/viewer/2022051514/54c3054e4a7959ca778b46be/html5/thumbnails/22.jpg)
Filter
![Page 23: ofxTonic und Sound](https://reader033.vdocument.in/reader033/viewer/2022051514/54c3054e4a7959ca778b46be/html5/thumbnails/23.jpg)
code
LPF12 lpf12 = LPF12().Q(10).cutoff(400); Generator outputFilter = inputReader >> lpf12;
LPF HPF BPF
inputReader
lpf12
outputFilter
http://en.wikipedia.org/wiki/Low_pass_filter
![Page 24: ofxTonic und Sound](https://reader033.vdocument.in/reader033/viewer/2022051514/54c3054e4a7959ca778b46be/html5/thumbnails/24.jpg)
Reverb
![Page 25: ofxTonic und Sound](https://reader033.vdocument.in/reader033/viewer/2022051514/54c3054e4a7959ca778b46be/html5/thumbnails/25.jpg)
code
ControlParameter __Parameter__ = synth.addParameter(„__NAME__“,__VALUE__); ! Reverb reverb = Reverb() .preDelayTime(preDelay) .inputLPFCutoff(inputLPF) .inputHPFCutoff(inputHPF) .decayTime(time) .decayLPFCutoff(lowDecay) .decayHPFCutoff(hiDecay) .stereoWidth(stereo) .density(density) .roomShape(shape) .roomSize(size) .dryLevel(ControlDbToLinear().input(dry)) .wetLevel(ControlDbToLinear().input(wet)); Generator output = inputReader >> reverb;
inputReader
reverb
output
![Page 26: ofxTonic und Sound](https://reader033.vdocument.in/reader033/viewer/2022051514/54c3054e4a7959ca778b46be/html5/thumbnails/26.jpg)
code
http://www.soundonsound.com/sos/jul08/articles/reverb1.htm