SketchPad

Some web space to sketch, doodle and make notes. Made using these tools. See more of my work here.

Sketch 2017-08-24a

        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!

Sketch 2016-01-19a

        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

Sketch 2016-01-19a

Sketch 2016-01-08a

        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

Sketch 2016-01-08a

Sketch 2015-10-28a

        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

Sketch 2015-10-28a

Sketch 2015-10-26a

        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

Sketch 2015-10-26a

Sketch 2015-10-25a

        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

Sketch 2015-10-25a

Sketch 2015-10-11a

        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

Sketch 2015-10-11a