From 7edbb64e6fb9ee4e3f449d8d168f3aa94fb6ec4d Mon Sep 17 00:00:00 2001 From: Tim Redfern Date: Thu, 16 Aug 2012 16:51:19 +0100 Subject: simple vis --- liveengine/liveengine.layout | 8 ++--- liveengine/src/testApp.cpp | 38 ++++++++++++++++++----- liveengine/src/testApp.h | 69 +++++++++++++++++++++++++++++++++++++----- sf_live/MidiReceiver.pde | 17 ++++++----- sf_live/Pianola.pde | 9 ------ sf_live/sf_live.pde | 59 +++++++++--------------------------- sunkenfoal/frames/img0001.png | Bin 195 -> 0 bytes sunkenfoal/frames/img0002.png | Bin 240 -> 0 bytes sunkenfoal/frames/img0003.png | Bin 344 -> 0 bytes sunkenfoal/frames/img0004.png | Bin 490 -> 0 bytes sunkenfoal/frames/img0005.png | Bin 602 -> 0 bytes sunkenfoal/frames/img0006.png | Bin 721 -> 0 bytes sunkenfoal/frames/img0007.png | Bin 770 -> 0 bytes sunkenfoal/frames/img0008.png | Bin 827 -> 0 bytes sunkenfoal/frames/img0009.png | Bin 880 -> 0 bytes sunkenfoal/frames/img0010.png | Bin 987 -> 0 bytes sunkenfoal/frames/img0011.png | Bin 1008 -> 0 bytes sunkenfoal/frames/img0012.png | Bin 1069 -> 0 bytes sunkenfoal/frames/img0013.png | Bin 1075 -> 0 bytes sunkenfoal/frames/img0014.png | Bin 1092 -> 0 bytes sunkenfoal/frames/img0015.png | Bin 1111 -> 0 bytes sunkenfoal/frames/img0016.png | Bin 1095 -> 0 bytes sunkenfoal/frames/img0017.png | Bin 1106 -> 0 bytes sunkenfoal/frames/img0018.png | Bin 1133 -> 0 bytes sunkenfoal/frames/img0019.png | Bin 1172 -> 0 bytes sunkenfoal/frames/img0020.png | Bin 1276 -> 0 bytes sunkenfoal/frames/img0021.png | Bin 1414 -> 0 bytes sunkenfoal/frames/img0022.png | Bin 1529 -> 0 bytes sunkenfoal/frames/img0023.png | Bin 1674 -> 0 bytes sunkenfoal/frames/img0024.png | Bin 1773 -> 0 bytes sunkenfoal/frames/img0025.png | Bin 1899 -> 0 bytes sunkenfoal/frames/img0026.png | Bin 1966 -> 0 bytes sunkenfoal/frames/img0027.png | Bin 2085 -> 0 bytes sunkenfoal/frames/img0028.png | Bin 2247 -> 0 bytes sunkenfoal/frames/img0029.png | Bin 2424 -> 0 bytes sunkenfoal/frames/img0030.png | Bin 2572 -> 0 bytes sunkenfoal/frames/img0031.png | Bin 2721 -> 0 bytes sunkenfoal/frames/img0032.png | Bin 2862 -> 0 bytes sunkenfoal/frames/img0033.png | Bin 3036 -> 0 bytes sunkenfoal/frames/img0034.png | Bin 3153 -> 0 bytes sunkenfoal/frames/img0035.png | Bin 3314 -> 0 bytes sunkenfoal/frames/img0036.png | Bin 3431 -> 0 bytes sunkenfoal/frames/img0037.png | Bin 3476 -> 0 bytes sunkenfoal/frames/img0038.png | Bin 3514 -> 0 bytes sunkenfoal/frames/img0039.png | Bin 3472 -> 0 bytes sunkenfoal/frames/img0040.png | Bin 3420 -> 0 bytes sunkenfoal/frames/img0041.png | Bin 3360 -> 0 bytes sunkenfoal/frames/img0042.png | Bin 3370 -> 0 bytes sunkenfoal/frames/img0043.png | Bin 3390 -> 0 bytes sunkenfoal/frames/img0044.png | Bin 3460 -> 0 bytes sunkenfoal/frames/img0045.png | Bin 3472 -> 0 bytes 51 files changed, 119 insertions(+), 81 deletions(-) delete mode 100644 sf_live/Pianola.pde delete mode 100644 sunkenfoal/frames/img0001.png delete mode 100644 sunkenfoal/frames/img0002.png delete mode 100644 sunkenfoal/frames/img0003.png delete mode 100644 sunkenfoal/frames/img0004.png delete mode 100644 sunkenfoal/frames/img0005.png delete mode 100644 sunkenfoal/frames/img0006.png delete mode 100644 sunkenfoal/frames/img0007.png delete mode 100644 sunkenfoal/frames/img0008.png delete mode 100644 sunkenfoal/frames/img0009.png delete mode 100644 sunkenfoal/frames/img0010.png delete mode 100644 sunkenfoal/frames/img0011.png delete mode 100644 sunkenfoal/frames/img0012.png delete mode 100644 sunkenfoal/frames/img0013.png delete mode 100644 sunkenfoal/frames/img0014.png delete mode 100644 sunkenfoal/frames/img0015.png delete mode 100644 sunkenfoal/frames/img0016.png delete mode 100644 sunkenfoal/frames/img0017.png delete mode 100644 sunkenfoal/frames/img0018.png delete mode 100644 sunkenfoal/frames/img0019.png delete mode 100644 sunkenfoal/frames/img0020.png delete mode 100644 sunkenfoal/frames/img0021.png delete mode 100644 sunkenfoal/frames/img0022.png delete mode 100644 sunkenfoal/frames/img0023.png delete mode 100644 sunkenfoal/frames/img0024.png delete mode 100644 sunkenfoal/frames/img0025.png delete mode 100644 sunkenfoal/frames/img0026.png delete mode 100644 sunkenfoal/frames/img0027.png delete mode 100644 sunkenfoal/frames/img0028.png delete mode 100644 sunkenfoal/frames/img0029.png delete mode 100644 sunkenfoal/frames/img0030.png delete mode 100644 sunkenfoal/frames/img0031.png delete mode 100644 sunkenfoal/frames/img0032.png delete mode 100644 sunkenfoal/frames/img0033.png delete mode 100644 sunkenfoal/frames/img0034.png delete mode 100644 sunkenfoal/frames/img0035.png delete mode 100644 sunkenfoal/frames/img0036.png delete mode 100644 sunkenfoal/frames/img0037.png delete mode 100644 sunkenfoal/frames/img0038.png delete mode 100644 sunkenfoal/frames/img0039.png delete mode 100644 sunkenfoal/frames/img0040.png delete mode 100644 sunkenfoal/frames/img0041.png delete mode 100644 sunkenfoal/frames/img0042.png delete mode 100644 sunkenfoal/frames/img0043.png delete mode 100644 sunkenfoal/frames/img0044.png delete mode 100644 sunkenfoal/frames/img0045.png 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 @@ - + - - + + - + 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>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;idraw(); - + 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;inote==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;imix==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;i0) { - //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 deleted file mode 100644 index e161692..0000000 Binary files a/sunkenfoal/frames/img0001.png and /dev/null differ diff --git a/sunkenfoal/frames/img0002.png b/sunkenfoal/frames/img0002.png deleted file mode 100644 index 415b548..0000000 Binary files a/sunkenfoal/frames/img0002.png and /dev/null differ diff --git a/sunkenfoal/frames/img0003.png b/sunkenfoal/frames/img0003.png deleted file mode 100644 index 7386567..0000000 Binary files a/sunkenfoal/frames/img0003.png and /dev/null differ diff --git a/sunkenfoal/frames/img0004.png b/sunkenfoal/frames/img0004.png deleted file mode 100644 index 5aa2d58..0000000 Binary files a/sunkenfoal/frames/img0004.png and /dev/null differ diff --git a/sunkenfoal/frames/img0005.png b/sunkenfoal/frames/img0005.png deleted file mode 100644 index 6dadf99..0000000 Binary files a/sunkenfoal/frames/img0005.png and /dev/null differ diff --git a/sunkenfoal/frames/img0006.png b/sunkenfoal/frames/img0006.png deleted file mode 100644 index cb89875..0000000 Binary files a/sunkenfoal/frames/img0006.png and /dev/null differ diff --git a/sunkenfoal/frames/img0007.png b/sunkenfoal/frames/img0007.png deleted file mode 100644 index c6cd219..0000000 Binary files a/sunkenfoal/frames/img0007.png and /dev/null differ diff --git a/sunkenfoal/frames/img0008.png b/sunkenfoal/frames/img0008.png deleted file mode 100644 index c9d607d..0000000 Binary files a/sunkenfoal/frames/img0008.png and /dev/null differ diff --git a/sunkenfoal/frames/img0009.png b/sunkenfoal/frames/img0009.png deleted file mode 100644 index ab645b4..0000000 Binary files a/sunkenfoal/frames/img0009.png and /dev/null differ diff --git a/sunkenfoal/frames/img0010.png b/sunkenfoal/frames/img0010.png deleted file mode 100644 index 63e6cf6..0000000 Binary files a/sunkenfoal/frames/img0010.png and /dev/null differ diff --git a/sunkenfoal/frames/img0011.png b/sunkenfoal/frames/img0011.png deleted file mode 100644 index 27cbaab..0000000 Binary files a/sunkenfoal/frames/img0011.png and /dev/null differ diff --git a/sunkenfoal/frames/img0012.png b/sunkenfoal/frames/img0012.png deleted file mode 100644 index 292bf2e..0000000 Binary files a/sunkenfoal/frames/img0012.png and /dev/null differ diff --git a/sunkenfoal/frames/img0013.png b/sunkenfoal/frames/img0013.png deleted file mode 100644 index f2354b2..0000000 Binary files a/sunkenfoal/frames/img0013.png and /dev/null differ diff --git a/sunkenfoal/frames/img0014.png b/sunkenfoal/frames/img0014.png deleted file mode 100644 index 9bfb677..0000000 Binary files a/sunkenfoal/frames/img0014.png and /dev/null differ diff --git a/sunkenfoal/frames/img0015.png b/sunkenfoal/frames/img0015.png deleted file mode 100644 index fa08bb6..0000000 Binary files a/sunkenfoal/frames/img0015.png and /dev/null differ diff --git a/sunkenfoal/frames/img0016.png b/sunkenfoal/frames/img0016.png deleted file mode 100644 index 1e7b350..0000000 Binary files a/sunkenfoal/frames/img0016.png and /dev/null differ diff --git a/sunkenfoal/frames/img0017.png b/sunkenfoal/frames/img0017.png deleted file mode 100644 index c44e810..0000000 Binary files a/sunkenfoal/frames/img0017.png and /dev/null differ diff --git a/sunkenfoal/frames/img0018.png b/sunkenfoal/frames/img0018.png deleted file mode 100644 index adb7202..0000000 Binary files a/sunkenfoal/frames/img0018.png and /dev/null differ diff --git a/sunkenfoal/frames/img0019.png b/sunkenfoal/frames/img0019.png deleted file mode 100644 index ee5ca97..0000000 Binary files a/sunkenfoal/frames/img0019.png and /dev/null differ diff --git a/sunkenfoal/frames/img0020.png b/sunkenfoal/frames/img0020.png deleted file mode 100644 index 9911cb8..0000000 Binary files a/sunkenfoal/frames/img0020.png and /dev/null differ diff --git a/sunkenfoal/frames/img0021.png b/sunkenfoal/frames/img0021.png deleted file mode 100644 index ad0436c..0000000 Binary files a/sunkenfoal/frames/img0021.png and /dev/null differ diff --git a/sunkenfoal/frames/img0022.png b/sunkenfoal/frames/img0022.png deleted file mode 100644 index ef7cdd7..0000000 Binary files a/sunkenfoal/frames/img0022.png and /dev/null differ diff --git a/sunkenfoal/frames/img0023.png b/sunkenfoal/frames/img0023.png deleted file mode 100644 index 9071112..0000000 Binary files a/sunkenfoal/frames/img0023.png and /dev/null differ diff --git a/sunkenfoal/frames/img0024.png b/sunkenfoal/frames/img0024.png deleted file mode 100644 index 3acbbcb..0000000 Binary files a/sunkenfoal/frames/img0024.png and /dev/null differ diff --git a/sunkenfoal/frames/img0025.png b/sunkenfoal/frames/img0025.png deleted file mode 100644 index 33d643e..0000000 Binary files a/sunkenfoal/frames/img0025.png and /dev/null differ diff --git a/sunkenfoal/frames/img0026.png b/sunkenfoal/frames/img0026.png deleted file mode 100644 index 92ea60b..0000000 Binary files a/sunkenfoal/frames/img0026.png and /dev/null differ diff --git a/sunkenfoal/frames/img0027.png b/sunkenfoal/frames/img0027.png deleted file mode 100644 index 6d20bf5..0000000 Binary files a/sunkenfoal/frames/img0027.png and /dev/null differ diff --git a/sunkenfoal/frames/img0028.png b/sunkenfoal/frames/img0028.png deleted file mode 100644 index 6732a85..0000000 Binary files a/sunkenfoal/frames/img0028.png and /dev/null differ diff --git a/sunkenfoal/frames/img0029.png b/sunkenfoal/frames/img0029.png deleted file mode 100644 index d3ab369..0000000 Binary files a/sunkenfoal/frames/img0029.png and /dev/null differ diff --git a/sunkenfoal/frames/img0030.png b/sunkenfoal/frames/img0030.png deleted file mode 100644 index 89a1cc8..0000000 Binary files a/sunkenfoal/frames/img0030.png and /dev/null differ diff --git a/sunkenfoal/frames/img0031.png b/sunkenfoal/frames/img0031.png deleted file mode 100644 index 816505a..0000000 Binary files a/sunkenfoal/frames/img0031.png and /dev/null differ diff --git a/sunkenfoal/frames/img0032.png b/sunkenfoal/frames/img0032.png deleted file mode 100644 index 0a42fe7..0000000 Binary files a/sunkenfoal/frames/img0032.png and /dev/null differ diff --git a/sunkenfoal/frames/img0033.png b/sunkenfoal/frames/img0033.png deleted file mode 100644 index d8cd1cb..0000000 Binary files a/sunkenfoal/frames/img0033.png and /dev/null differ diff --git a/sunkenfoal/frames/img0034.png b/sunkenfoal/frames/img0034.png deleted file mode 100644 index 537734e..0000000 Binary files a/sunkenfoal/frames/img0034.png and /dev/null differ diff --git a/sunkenfoal/frames/img0035.png b/sunkenfoal/frames/img0035.png deleted file mode 100644 index 6a81a3d..0000000 Binary files a/sunkenfoal/frames/img0035.png and /dev/null differ diff --git a/sunkenfoal/frames/img0036.png b/sunkenfoal/frames/img0036.png deleted file mode 100644 index bd1a36c..0000000 Binary files a/sunkenfoal/frames/img0036.png and /dev/null differ diff --git a/sunkenfoal/frames/img0037.png b/sunkenfoal/frames/img0037.png deleted file mode 100644 index 9afc621..0000000 Binary files a/sunkenfoal/frames/img0037.png and /dev/null differ diff --git a/sunkenfoal/frames/img0038.png b/sunkenfoal/frames/img0038.png deleted file mode 100644 index 7d876e1..0000000 Binary files a/sunkenfoal/frames/img0038.png and /dev/null differ diff --git a/sunkenfoal/frames/img0039.png b/sunkenfoal/frames/img0039.png deleted file mode 100644 index d8ab7eb..0000000 Binary files a/sunkenfoal/frames/img0039.png and /dev/null differ diff --git a/sunkenfoal/frames/img0040.png b/sunkenfoal/frames/img0040.png deleted file mode 100644 index 187fcf6..0000000 Binary files a/sunkenfoal/frames/img0040.png and /dev/null differ diff --git a/sunkenfoal/frames/img0041.png b/sunkenfoal/frames/img0041.png deleted file mode 100644 index d8428c1..0000000 Binary files a/sunkenfoal/frames/img0041.png and /dev/null differ diff --git a/sunkenfoal/frames/img0042.png b/sunkenfoal/frames/img0042.png deleted file mode 100644 index 859267d..0000000 Binary files a/sunkenfoal/frames/img0042.png and /dev/null differ diff --git a/sunkenfoal/frames/img0043.png b/sunkenfoal/frames/img0043.png deleted file mode 100644 index 736d424..0000000 Binary files a/sunkenfoal/frames/img0043.png and /dev/null differ diff --git a/sunkenfoal/frames/img0044.png b/sunkenfoal/frames/img0044.png deleted file mode 100644 index d8d60a6..0000000 Binary files a/sunkenfoal/frames/img0044.png and /dev/null differ diff --git a/sunkenfoal/frames/img0045.png b/sunkenfoal/frames/img0045.png deleted file mode 100644 index ad9ca42..0000000 Binary files a/sunkenfoal/frames/img0045.png and /dev/null differ -- cgit v1.2.3