Some web space to sketch, doodle and make notes. Made using these tools. See more of my work here.
void ofApp::setup(){
ofSetWindowShape(640, 480);
vid.setup("out/2017-08-24a", 1200);
vid.isolateDrawingStyle();
vid.useTimeFrom(&avSync);
vid.enableRenderMode(60);
aud.setup(false);
audioManager = aud.getAudioUnitManager();
ofSleepMillis(3000);
visible = true;
noteOn = false;
position.x = ofGetWidth() * 0.5;
position.y = ofGetHeight() * 0.5;
synth.setup("Synth 1", 'aumu', 'ncut', 'TOGU');
audioManager->createChain(&chain).link(&synth).toMixer();
synth.set(TALNoiseMaker_chorus1enable, 1);
synth.set(TALNoiseMaker_chorus2enable, 1);
ofAddListener(audioManager->bpm.beatEvent, this, &ofApp::beat);
audioManager->bpm.start();
}
void ofApp::beat(void){
avSync.setupOnce();
if(noteOn){
aud.sendMidi("C5 OFF", &chain);
avSync.logCommand("off");
}else{
cutoff = ofRandom(0.3, 1);
tune = ofRandom(1) < 0.5 ? 0.2 : 0.8;
synth.set(TALNoiseMaker_cutoff, cutoff);
synth.set(TALNoiseMaker_osc1tune, tune);
aud.sendMidi("C5 ON", &chain);
avSync.logCommand("on", cutoff, tune);
}
noteOn = !noteOn;
}
void ofApp::update(){
for(auto& command : avSync.getCommandsForCurrentFrame()){
if(command.is("on")){
float _cutoff = command.args[0];
float _tune = command.args[1];
visible = true;
size.x = ofMap(_cutoff, 0, 1, 0, ofGetWidth());
size.y = ofMap(_tune, 0, 1, 0, ofGetHeight());
}else if(command.is("off")){
visible = false;
}
}
}
void ofApp::draw(){
vid.begin();
{
ofBackground(ofColor::black);
ofSetRectMode(OF_RECTMODE_CENTER);
if(visible){
for(int i = 0; i < 200; i+=12){
ofSetColor(ofColor(ofRandom(255), ofRandom(255), ofRandom(255), 255-(i*15)));
ofDrawRectangle(position, size.x - i, size.y - i);
}
}
}
vid.endCaptureDraw();
}
Back to sketching!
void ofApp::setup(){
_template.setup(18, 60);
manager = _template.getAudioUnitManager();
synth.setup("Synth 1", AUDIOUNIT_MASSIVE);
manager->createChain(&chain)
.link(&synth)
.toMixer();
timeline = _template.getTimeline();
}
void ofApp::update(){
synth.set(TALNoiseMaker_cutoff, timeline->getValue("filter cutoff"));
}
void ofApp::draw(){
}
Borrowed bassline from this tutorial
void ofApp::setup(){
_template.setup(10, 60);
manager = _template.getAudioUnitManager();
synth.setup("Synth 1", AUDIOUNIT_MASSIVE);
manager->createChain(&chain)
.link(&synth)
.toMixer();
timeline = _template.getTimeline();
timeline->setBPM(70);
//timeline->addCurves("filter cutoff");
}
void ofApp::update(){
synth.set(TALNoiseMaker_cutoff, timeline->getValue("filter cutoff"));
}
void ofApp::draw(){
}
Slow bassline rhythm
void ofApp::setup(){
_template.setup(10, 60, 2, true);
manager = _template.getAudioUnitManager();
synth1.setup("Synth 1", AUDIOUNIT_MASSIVE);
manager->createChain(&chain1)
.link(&synth1)
.toMixer();
synth2.setup("Perc", AUDIOUNIT_MASSIVE);
manager->createChain(&chain2)
.link(&synth2)
.toMixer();
timeline = _template.getTimeline();
timeline->addCurves("wobble");
timeline->addCurves("rate");
timeline->addCurves("noise");
timeline->addCurves("sub");
timeline->addCurves("pitch");
timeline->addCurves("mod");
}
void ofApp::update(){
synth1.set(Massive_macro_2, timeline->getValue("wobble"));
synth1.set(Massive_macro_3, timeline->getValue("rate"));
synth1.set(Massive_macro_4, timeline->getValue("noise"));
synth1.set(Massive_macro_5, timeline->getValue("sub"));
synth1.set(Massive_macro_6, timeline->getValue("pitch"));
synth1.set(Massive_macro_7, timeline->getValue("mod"));
}
void ofApp::draw(){
}
Horrible dirty wobble noise
void ofApp::setup(){
_template.setup(46 , 120);
manager = _template.getAudioUnitManager();
synth.setup("Synth 1", AUDIOUNIT_MASSIVE);
manager->createChain(&chain)
.link(&synth)
.toMixer();
timeline = _template.getTimeline();
}
void ofApp::update(){
}
void ofApp::draw(){
}
Discovering the performer modulator
void ofApp::setup(){
_template.setup(10, 60);
manager = _template.getAudioUnitManager();
synth.setup("Synth 1", AUDIOUNIT_MASSIVE);
manager->createChain(&chain)
.link(&synth)
.toMixer();
timeline = _template.getTimeline();
}
void ofApp::update(){
}
void ofApp::draw(){
}
Setting a step sequencer as multiple modulation sources
void ofApp::setup(){
_template.setup(10, 60);
manager = _template.getAudioUnitManager();
synth.setup("Massive 1", AUDIOUNIT_MASSIVE);
manager->createChain(&chain)
.link(&synth)
.toMixer();
timeline = _template.getTimeline();
}
void ofApp::update(){
//It's all in the MIDI and preset design
}
void ofApp::draw(){
}
Crunchy amplitude envelope loops