diff options
| author | Tim Redfern <tim@eclectronics.org> | 2012-08-16 16:51:19 +0100 |
|---|---|---|
| committer | Tim Redfern <tim@eclectronics.org> | 2012-08-16 16:51:19 +0100 |
| commit | 7edbb64e6fb9ee4e3f449d8d168f3aa94fb6ec4d (patch) | |
| tree | 8840ebacf45bda209a7a3d1f91ad8192bca4e174 | |
| parent | b3548f90171f0be1ebfd7020f38f3d0acec65f8b (diff) | |
simple vis
51 files changed, 119 insertions, 81 deletions
diff --git a/liveengine/liveengine.layout b/liveengine/liveengine.layout index 23e0fac..1890e1c 100644 --- a/liveengine/liveengine.layout +++ b/liveengine/liveengine.layout @@ -10,16 +10,16 @@ <File name="bin/data/settings.xml" open="1" top="0" tabpos="6"> <Cursor position="52" topLine="0" /> </File> - <File name="config.make" open="1" top="1" tabpos="3"> + <File name="config.make" open="1" top="0" tabpos="3"> <Cursor position="477" topLine="0" /> </File> <File name="src/main.cpp" open="1" top="0" tabpos="7"> <Cursor position="230" topLine="0" /> </File> - <File name="src/testApp.cpp" open="1" top="0" tabpos="5"> - <Cursor position="5010" topLine="136" /> + <File name="src/testApp.cpp" open="1" top="1" tabpos="5"> + <Cursor position="3484" topLine="72" /> </File> <File name="src/testApp.h" open="1" top="0" tabpos="4"> - <Cursor position="642" topLine="0" /> + <Cursor position="2007" topLine="56" /> </File> </CodeBlocks_layout_file> diff --git a/liveengine/src/testApp.cpp b/liveengine/src/testApp.cpp index 9ecb92f..86bbad6 100755 --- a/liveengine/src/testApp.cpp +++ b/liveengine/src/testApp.cpp @@ -54,7 +54,18 @@ void testApp::setup(){ // midiIn.addListener(84,this);
// to debug
- // midiIn.setVerbose(true);
+ // midiIn.setVerbose(true); + + controllers=new unsigned char[NUM_CONTROLLERS]; + memset(controllers,NUM_CONTROLLERS,0); + note=START_NOTE; + + controller_colours=new ofColor[NUM_CONTROLLERS]; + for (int i=0;i<NUM_CONTROLLERS;i++) controller_colours[i]=ofColor::fromHsb(ofRandom(255), 255, 255); + + grab.allocate(ofGetWidth(), ofGetHeight(),OF_IMAGE_COLOR); + grab.setUseTexture(true); +
showFPS=false;
} @@ -65,10 +76,21 @@ void testApp::update(){ //-------------------------------------------------------------- void testApp::draw(){ - ofBackground(0,0,0);
+ grab.grabScreen( 0, 0, ofGetWidth(), ofGetHeight() ); + grab.update(); + ofBackground(0,0,0); + grab.draw( 1,1,ofGetWidth(), ofGetHeight()); + + float notewidth=ofGetWidth()/NUM_NOTES; + float noteheight=ofGetHeight()/NUM_CONTROLLERS; + + for (int i=0;i<NUM_CONTROLLERS;i++){ + ofSetColor(ofColor((controller_colours[i].r*controllers[i])>>7,(controller_colours[i].g*controllers[i])>>7,(controller_colours[i].b*controllers[i])>>7)); + ofRect(note*notewidth,i*noteheight,notewidth,noteheight); + }
//for (int i=0;i<numLayers;i++) layers[i]->draw();
-
+ ofSetColor(255,255,255);
if (showFPS) ofDrawBitmapString(ofToString(ofGetFrameRate(), 2),20,20);
} @@ -147,18 +169,20 @@ void testApp::newMidiMessage(ofxMidiEventArgs& eventArgs){ if ((midiChannel==0)||(eventArgs.channel==midiChannel)) {
switch(eventArgs.status) {
- case 144: //noteon-off
+ case 144: //noteon-off channel 0
noteOn=(eventArgs.byteTwo==0?false:true);
//for (int i=0;i<numLayers;i++){
// if (layers[i]->note==eventArgs.byteOne) layers[i]->setActive(noteOn);
//} - printf("note: %i %i\n",eventArgs.byteOne,eventArgs.byteTwo);
+ printf("note: %i %i\n",eventArgs.byteOne,eventArgs.byteTwo); + note=eventArgs.byteOne-START_NOTE;
break;
- case 176: //control change
+ case 176: //control change channel 0
//for (int i=0;i<numLayers;i++){
// if (layers[i]->mix==eventArgs.byteOne) layers[i]->setMixAmt(((float)eventArgs.byteTwo)/127.0f);
//} - printf("cc: %i %i\ n",eventArgs.byteOne,eventArgs.byteTwo);
+ printf("cc: %i %i\n",eventArgs.byteOne,eventArgs.byteTwo); + controllers[eventArgs.byteOne-START_CONTROLLER]=eventArgs.byteTwo;
}
}
}
diff --git a/liveengine/src/testApp.h b/liveengine/src/testApp.h index 9b07764..e4bb2bc 100755 --- a/liveengine/src/testApp.h +++ b/liveengine/src/testApp.h @@ -1,10 +1,55 @@ #pragma once #include "ofMain.h" -#include "ofxXmlSettings.h"
-
-#define OF_ADDON_USING_OFXMIDIIN
-
+#include "ofxXmlSettings.h" + +/* +modprobe snd-virmidi +have had problems with it not being recognised - rebuild seemed to fix it + + +6 controllers +each note switches in 6 new visuals which are at the same strengths +as the previous bunch + +is it necessary to represent them seperately? + +maybe take them all in, but initially modulate one picture on the strength of the strongest + +maybe each object is a plugin and the 6 controllers affect 6 parameters of it +ie speed, matting type, colour tweak + +object that plays when a note is received can be called a track, a sample, a bank, a layer? + +object remembers playback head/ heads + +initial footage set for each track: program change? +(does this leave any room for creative input) or set via gui? + +creative input - alter layers live via AVS compatible system which also allows local MIDI control, +scripting, manipulating layers etc + +probably pretty tricky to create a .ape loader - difficulty in recreating the windows GUI + +probably a lot easier to think about a way of making a modular editor that can be manipulated live +nice to think about making scripted layers - using nseel or other + +initially - divide screen into grid - play notes with fade + + + +*/ + + + +#define OF_ADDON_USING_OFXMIDIIN + +#define NUM_NOTES 64 +#define START_NOTE 36 +#define NUM_CONTROLLERS 6 +#define START_CONTROLLER 102 + + #include "ofxMidi.h" class testApp : public ofBaseApp, public ofxMidiListener{ @@ -28,10 +73,18 @@ class testApp : public ofBaseApp, public ofxMidiListener{ void toggleFPS(); bool showFPS; - ofxXmlSettings XML;
-
- int midiChannel;
- ofxMidiIn midiIn;
+ ofxXmlSettings XML; + + unsigned char* controllers; + unsigned char note; + ofColor* controller_colours; + + ofImage grab; + + int midiChannel; + + ofxMidiIn midiIn; + void newMidiMessage(ofxMidiEventArgs& eventArgs); }; diff --git a/sf_live/MidiReceiver.pde b/sf_live/MidiReceiver.pde index 4b204a2..25d3e1c 100644 --- a/sf_live/MidiReceiver.pde +++ b/sf_live/MidiReceiver.pde @@ -8,18 +8,19 @@ class MidiReceiver implements Receiver{ void send(MidiMessage message, long lTimeStamp){ switch(message.getStatus()){ - case 144: //note on - println(message.getStatus()+" "+message.getMessage()[1]+" "+message.getMessage()[2]); - - notes[message.getMessage()[1]-NOTE_LOW].velocity = message.getMessage()[2]; //set to velocity - //keys[message.getMessage()[1]].downColor= color(random(0, 360), 70, 100); + case 144: //note on chan 1 + midiOut.sendNoteOn(0, message.getMessage()[1], message.getMessage()[2]); + //println(message.getStatus()+" "+message.getMessage()[1]+" "+message.getMessage()[2]); break; - case 128: //note off - notes[message.getMessage()[1]-NOTE_LOW].velocity = 0; //clear - break; + case 128: //note off chan 1 + midiOut.sendNoteOff(0, message.getMessage()[1], message.getMessage()[2]); + break; + case 176: //control change chan 1 + midiOut.sendController(0, message.getMessage()[1], message.getMessage()[2]); default: break; } + //nb can be if >127<144 note off (status-127) } } diff --git a/sf_live/Pianola.pde b/sf_live/Pianola.pde deleted file mode 100644 index b2c3952..0000000 --- a/sf_live/Pianola.pde +++ /dev/null @@ -1,9 +0,0 @@ -class Note{ - int velocity; - - Note(){ - velocity=0; - } - -} - diff --git a/sf_live/sf_live.pde b/sf_live/sf_live.pde index 8ba93fb..aa8406f 100644 --- a/sf_live/sf_live.pde +++ b/sf_live/sf_live.pde @@ -10,41 +10,37 @@ String audioFileName = "Sailing Architraves Tim Live.mp3"; Sequencer s; MetaListener metaListener; -int NOTE_LOW = 36, NOTE_HIGH = 100; -int NUM_NOTES=NOTE_HIGH-NOTE_LOW; -Note[] notes = new Note[NUM_NOTES]; - Minim minim; AudioPlayer audioPlayer; int pw,ph; -PImage sc; //=createImage(width,height); -MidiDevice midiOut; +import rwmidi.*; +MidiOutput midiOut; void setup(){ - MidiDevice.Info[] devs=MidiSystem.getMidiDeviceInfo(); + rwmidi.MidiDevice[] devs=RWMidi.getOutputDevices(); + /* if (devs.length>0) { println("MIDI devices:"); for (int i=0;i<devs.length;i++) { - println(str(i)+": "+devs[i].getName()); + println(str(i)+": "+devs[i]); } } + */ + + midiOut= RWMidi.getOutputDevices()[0].createOutput(); - //midiOut=MidiSystem.getMidiDevice(devs[0]); - Receiver receiver=MidiSystem.getReceiver(); + println("opened "+devs[0]+" for output"); size(300, 110, P3D); - pw=width/NUM_NOTES; - ph=pw; + frameRate(15); - for(int i = 0; i < NUM_NOTES; i++){ - notes[i]=new Note(); - } + //load audio file minim = new Minim(this); audioPlayer = minim.loadFile(audioFileName, 2048); @@ -60,28 +56,12 @@ void setup(){ colorMode(RGB, 255); - //app=new PlayApp(this,"localhost","Backing & Veering","Sunken Foal",153f); - swidth=width-2; - soffset=1; + } -int swidth; -int soffset; + float time=0; void draw(){ time+=(1f/(153f*25)); - - - - for(int i = 0; i < NUM_NOTES; i++){ - int v=notes[i].velocity; - if(v>0) { - //draw the note - colorMode(HSB, 255); - fill(200-v,255,255); - colorMode(RGB, 255); - rect(i*pw,0,pw,ph); - } - } //saveFrame("frames/img####.png"); @@ -127,18 +107,7 @@ void stop(){ void keyPressed() { switch(key){ - case 'q': - swidth-=1; - break; - case 'w': - swidth+=1; - break; - case 'e': - soffset-=1; - break; - case 'r': - soffset+=1; - break; + } } diff --git a/sunkenfoal/frames/img0001.png b/sunkenfoal/frames/img0001.png Binary files differdeleted file mode 100644 index e161692..0000000 --- a/sunkenfoal/frames/img0001.png +++ /dev/null diff --git a/sunkenfoal/frames/img0002.png b/sunkenfoal/frames/img0002.png Binary files differdeleted file mode 100644 index 415b548..0000000 --- a/sunkenfoal/frames/img0002.png +++ /dev/null diff --git a/sunkenfoal/frames/img0003.png b/sunkenfoal/frames/img0003.png Binary files differdeleted file mode 100644 index 7386567..0000000 --- a/sunkenfoal/frames/img0003.png +++ /dev/null diff --git a/sunkenfoal/frames/img0004.png b/sunkenfoal/frames/img0004.png Binary files differdeleted file mode 100644 index 5aa2d58..0000000 --- a/sunkenfoal/frames/img0004.png +++ /dev/null diff --git a/sunkenfoal/frames/img0005.png b/sunkenfoal/frames/img0005.png Binary files differdeleted file mode 100644 index 6dadf99..0000000 --- a/sunkenfoal/frames/img0005.png +++ /dev/null diff --git a/sunkenfoal/frames/img0006.png b/sunkenfoal/frames/img0006.png Binary files differdeleted file mode 100644 index cb89875..0000000 --- a/sunkenfoal/frames/img0006.png +++ /dev/null diff --git a/sunkenfoal/frames/img0007.png b/sunkenfoal/frames/img0007.png Binary files differdeleted file mode 100644 index c6cd219..0000000 --- a/sunkenfoal/frames/img0007.png +++ /dev/null diff --git a/sunkenfoal/frames/img0008.png b/sunkenfoal/frames/img0008.png Binary files differdeleted file mode 100644 index c9d607d..0000000 --- a/sunkenfoal/frames/img0008.png +++ /dev/null diff --git a/sunkenfoal/frames/img0009.png b/sunkenfoal/frames/img0009.png Binary files differdeleted file mode 100644 index ab645b4..0000000 --- a/sunkenfoal/frames/img0009.png +++ /dev/null diff --git a/sunkenfoal/frames/img0010.png b/sunkenfoal/frames/img0010.png Binary files differdeleted file mode 100644 index 63e6cf6..0000000 --- a/sunkenfoal/frames/img0010.png +++ /dev/null diff --git a/sunkenfoal/frames/img0011.png b/sunkenfoal/frames/img0011.png Binary files differdeleted file mode 100644 index 27cbaab..0000000 --- a/sunkenfoal/frames/img0011.png +++ /dev/null diff --git a/sunkenfoal/frames/img0012.png b/sunkenfoal/frames/img0012.png Binary files differdeleted file mode 100644 index 292bf2e..0000000 --- a/sunkenfoal/frames/img0012.png +++ /dev/null diff --git a/sunkenfoal/frames/img0013.png b/sunkenfoal/frames/img0013.png Binary files differdeleted file mode 100644 index f2354b2..0000000 --- a/sunkenfoal/frames/img0013.png +++ /dev/null diff --git a/sunkenfoal/frames/img0014.png b/sunkenfoal/frames/img0014.png Binary files differdeleted file mode 100644 index 9bfb677..0000000 --- a/sunkenfoal/frames/img0014.png +++ /dev/null diff --git a/sunkenfoal/frames/img0015.png b/sunkenfoal/frames/img0015.png Binary files differdeleted file mode 100644 index fa08bb6..0000000 --- a/sunkenfoal/frames/img0015.png +++ /dev/null diff --git a/sunkenfoal/frames/img0016.png b/sunkenfoal/frames/img0016.png Binary files differdeleted file mode 100644 index 1e7b350..0000000 --- a/sunkenfoal/frames/img0016.png +++ /dev/null diff --git a/sunkenfoal/frames/img0017.png b/sunkenfoal/frames/img0017.png Binary files differdeleted file mode 100644 index c44e810..0000000 --- a/sunkenfoal/frames/img0017.png +++ /dev/null diff --git a/sunkenfoal/frames/img0018.png b/sunkenfoal/frames/img0018.png Binary files differdeleted file mode 100644 index adb7202..0000000 --- a/sunkenfoal/frames/img0018.png +++ /dev/null diff --git a/sunkenfoal/frames/img0019.png b/sunkenfoal/frames/img0019.png Binary files differdeleted file mode 100644 index ee5ca97..0000000 --- a/sunkenfoal/frames/img0019.png +++ /dev/null diff --git a/sunkenfoal/frames/img0020.png b/sunkenfoal/frames/img0020.png Binary files differdeleted file mode 100644 index 9911cb8..0000000 --- a/sunkenfoal/frames/img0020.png +++ /dev/null diff --git a/sunkenfoal/frames/img0021.png b/sunkenfoal/frames/img0021.png Binary files differdeleted file mode 100644 index ad0436c..0000000 --- a/sunkenfoal/frames/img0021.png +++ /dev/null diff --git a/sunkenfoal/frames/img0022.png b/sunkenfoal/frames/img0022.png Binary files differdeleted file mode 100644 index ef7cdd7..0000000 --- a/sunkenfoal/frames/img0022.png +++ /dev/null diff --git a/sunkenfoal/frames/img0023.png b/sunkenfoal/frames/img0023.png Binary files differdeleted file mode 100644 index 9071112..0000000 --- a/sunkenfoal/frames/img0023.png +++ /dev/null diff --git a/sunkenfoal/frames/img0024.png b/sunkenfoal/frames/img0024.png Binary files differdeleted file mode 100644 index 3acbbcb..0000000 --- a/sunkenfoal/frames/img0024.png +++ /dev/null diff --git a/sunkenfoal/frames/img0025.png b/sunkenfoal/frames/img0025.png Binary files differdeleted file mode 100644 index 33d643e..0000000 --- a/sunkenfoal/frames/img0025.png +++ /dev/null diff --git a/sunkenfoal/frames/img0026.png b/sunkenfoal/frames/img0026.png Binary files differdeleted file mode 100644 index 92ea60b..0000000 --- a/sunkenfoal/frames/img0026.png +++ /dev/null diff --git a/sunkenfoal/frames/img0027.png b/sunkenfoal/frames/img0027.png Binary files differdeleted file mode 100644 index 6d20bf5..0000000 --- a/sunkenfoal/frames/img0027.png +++ /dev/null diff --git a/sunkenfoal/frames/img0028.png b/sunkenfoal/frames/img0028.png Binary files differdeleted file mode 100644 index 6732a85..0000000 --- a/sunkenfoal/frames/img0028.png +++ /dev/null diff --git a/sunkenfoal/frames/img0029.png b/sunkenfoal/frames/img0029.png Binary files differdeleted file mode 100644 index d3ab369..0000000 --- a/sunkenfoal/frames/img0029.png +++ /dev/null diff --git a/sunkenfoal/frames/img0030.png b/sunkenfoal/frames/img0030.png Binary files differdeleted file mode 100644 index 89a1cc8..0000000 --- a/sunkenfoal/frames/img0030.png +++ /dev/null diff --git a/sunkenfoal/frames/img0031.png b/sunkenfoal/frames/img0031.png Binary files differdeleted file mode 100644 index 816505a..0000000 --- a/sunkenfoal/frames/img0031.png +++ /dev/null diff --git a/sunkenfoal/frames/img0032.png b/sunkenfoal/frames/img0032.png Binary files differdeleted file mode 100644 index 0a42fe7..0000000 --- a/sunkenfoal/frames/img0032.png +++ /dev/null diff --git a/sunkenfoal/frames/img0033.png b/sunkenfoal/frames/img0033.png Binary files differdeleted file mode 100644 index d8cd1cb..0000000 --- a/sunkenfoal/frames/img0033.png +++ /dev/null diff --git a/sunkenfoal/frames/img0034.png b/sunkenfoal/frames/img0034.png Binary files differdeleted file mode 100644 index 537734e..0000000 --- a/sunkenfoal/frames/img0034.png +++ /dev/null diff --git a/sunkenfoal/frames/img0035.png b/sunkenfoal/frames/img0035.png Binary files differdeleted file mode 100644 index 6a81a3d..0000000 --- a/sunkenfoal/frames/img0035.png +++ /dev/null diff --git a/sunkenfoal/frames/img0036.png b/sunkenfoal/frames/img0036.png Binary files differdeleted file mode 100644 index bd1a36c..0000000 --- a/sunkenfoal/frames/img0036.png +++ /dev/null diff --git a/sunkenfoal/frames/img0037.png b/sunkenfoal/frames/img0037.png Binary files differdeleted file mode 100644 index 9afc621..0000000 --- a/sunkenfoal/frames/img0037.png +++ /dev/null diff --git a/sunkenfoal/frames/img0038.png b/sunkenfoal/frames/img0038.png Binary files differdeleted file mode 100644 index 7d876e1..0000000 --- a/sunkenfoal/frames/img0038.png +++ /dev/null diff --git a/sunkenfoal/frames/img0039.png b/sunkenfoal/frames/img0039.png Binary files differdeleted file mode 100644 index d8ab7eb..0000000 --- a/sunkenfoal/frames/img0039.png +++ /dev/null diff --git a/sunkenfoal/frames/img0040.png b/sunkenfoal/frames/img0040.png Binary files differdeleted file mode 100644 index 187fcf6..0000000 --- a/sunkenfoal/frames/img0040.png +++ /dev/null diff --git a/sunkenfoal/frames/img0041.png b/sunkenfoal/frames/img0041.png Binary files differdeleted file mode 100644 index d8428c1..0000000 --- a/sunkenfoal/frames/img0041.png +++ /dev/null diff --git a/sunkenfoal/frames/img0042.png b/sunkenfoal/frames/img0042.png Binary files differdeleted file mode 100644 index 859267d..0000000 --- a/sunkenfoal/frames/img0042.png +++ /dev/null diff --git a/sunkenfoal/frames/img0043.png b/sunkenfoal/frames/img0043.png Binary files differdeleted file mode 100644 index 736d424..0000000 --- a/sunkenfoal/frames/img0043.png +++ /dev/null diff --git a/sunkenfoal/frames/img0044.png b/sunkenfoal/frames/img0044.png Binary files differdeleted file mode 100644 index d8d60a6..0000000 --- a/sunkenfoal/frames/img0044.png +++ /dev/null diff --git a/sunkenfoal/frames/img0045.png b/sunkenfoal/frames/img0045.png Binary files differdeleted file mode 100644 index ad9ca42..0000000 --- a/sunkenfoal/frames/img0045.png +++ /dev/null |
