1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
|
#pragma once
#include "ofMain.h"
#include "ofxGui.h"
#include "ofxHelios.h"
//#include <baudvine/ringbuf.h>
#define SAMPLERATE 48000
#define min(a,b) (a<b?a:b)
#define max(a,b) (a>b?a:b)
/*
TEXT+SOUND
oscilloscopes on letters
what is the message
text from twitter/ SMS
transformation of text/ oscilloscopes with animation/ audio animation/ gamepad
colours (audio?)
can we get a sillouette from kinect to laser
kinect normal stuff
The biggest thing missing:
A framework to combine these things
*/
class Buffer{
public:
Buffer(size_t sz=0){
if (sz){
data =new float[sz];
memset(data,0,sz*sizeof(float));
size=sz;
}
else data=NULL;
}
~Buffer(){
if (data){
delete[] data; //why is this throwing an error
}
}
void add(float * input, int num){
//this assumes that num < size
memcpy(&data[writePoint],input,min(num,size-writePoint)*sizeof(float));
if (size-writePoint<num){ //we have to wrap
//copy the remaining chunk to the start and set the new writePoint
memcpy(data,&input[size-writePoint],(num-(size-writePoint))*sizeof(float));
writePoint=num-(size-writePoint);
}
else writePoint+=num;
}
float operator [] (int i) const {
return data[(writePoint>i?writePoint-i:size-(i-writePoint))-1];
}
float& operator [] (int i) {
return data[(writePoint>i?writePoint-i:size-(i-writePoint))-1];
}
private:
size_t size;
float *data;
int writePoint;
};
class ofApp : public ofBaseApp{
public:
void setup();
void update();
void draw();
void keyPressed(int key);
void keyReleased(int key);
void mouseMoved(int x, int y );
void mouseDragged(int x, int y, int button);
void mousePressed(int x, int y, int button);
void mouseReleased(int x, int y, int button);
void windowResized(int w, int h);
void dragEvent(ofDragInfo dragInfo);
void gotMessage(ofMessage msg);
void audioIn(float * input, int bufferSize, int nChannels);
void printOscParams();
ofSoundStream soundStream;
int blockSize;
int sampleRate;
int frameHead; //last sample drawn
//baudvine::RingBuf<float, SAMPLERATE> buffer;
Buffer buffer;
float hScale;
float vScale;
float lineWidth;
ofxHelios laser;
//======= laser gui
ofxPanel lasergui;
ofParameter<bool> laser_power;
ofParameter<int> laser_intensity;
ofParameter<int> laser_points;
ofParameter<int> laser_subdivide;
ofParameter<int> laser_blank_num;
ofParameter<float> laser_max_angle;
};
|