summaryrefslogtreecommitdiff
path: root/audioin/src
diff options
context:
space:
mode:
Diffstat (limited to 'audioin/src')
-rw-r--r--audioin/src/main.cpp13
-rw-r--r--audioin/src/ofApp.cpp144
-rw-r--r--audioin/src/ofApp.h68
3 files changed, 225 insertions, 0 deletions
diff --git a/audioin/src/main.cpp b/audioin/src/main.cpp
new file mode 100644
index 0000000..e57370b
--- /dev/null
+++ b/audioin/src/main.cpp
@@ -0,0 +1,13 @@
+#include "ofMain.h"
+#include "ofApp.h"
+
+//========================================================================
+int main( ){
+ ofSetupOpenGL(1024,768,OF_WINDOW); // <-------- setup the GL context
+
+ // this kicks off the running of my app
+ // can be OF_WINDOW or OF_FULLSCREEN
+ // pass in width and height too:
+ ofRunApp(new ofApp());
+
+}
diff --git a/audioin/src/ofApp.cpp b/audioin/src/ofApp.cpp
new file mode 100644
index 0000000..4535c3c
--- /dev/null
+++ b/audioin/src/ofApp.cpp
@@ -0,0 +1,144 @@
+#include "ofApp.h"
+void ofApp::setup(){
+
+ int frameRate=60;
+
+ ofSetFrameRate(frameRate);
+ ofBackground(0);
+ ofEnableSmoothing();
+ ofEnableAlphaBlending();
+ ofSetVerticalSync(true);
+
+ blockSize = SAMPLERATE / (frameRate*20); //200
+
+ soundStream.setup(this,0, 1, SAMPLERATE, blockSize, 1);
+
+ buffer=Buffer(SAMPLERATE);
+
+ vScale=3.0f;
+ hScale=8.0f;
+
+}
+void ofApp::update(){
+
+
+}
+
+int sampleNum=0;
+int frameNum=0;
+
+void ofApp::draw(){
+ ofBackground(0);
+
+ ofPushMatrix();
+
+ ofTranslate(0,ofGetHeight()/2);
+
+ ofScale(1.0f,ofGetHeight()*vScale);
+
+ ofPolyline line;
+ line.addVertex(0,buffer[0]);
+
+ float i=0.0f;
+ while (i<ofGetWidth()){
+ line.curveTo(i,buffer[(int)i]);
+ i+=hScale;
+ }
+
+ line.draw();
+
+ ofPopMatrix();
+
+ frameNum++;
+
+}
+
+
+
+void ofApp::audioIn(float * input, int blockSize, int nChannels){
+ //ofLog()<< "frame "<<frameNum<<" ,got blockr "<<sampleNum++<<" , "<<nChannels<<" channels "<<blockSize<<" samples";
+
+// for (int i=0;i<blockSize;i++){
+// buffer.push_front()
+// }
+
+ //ofLog()<< "samples: "<<input[0]<<" "<<input[1]<<" "<<input[2]<<" ";
+
+ buffer.add(input,blockSize);
+
+}
+
+
+
+
+//--------------------------------------------------------------
+void ofApp::keyPressed(int key){
+ switch(key){
+ case 'f':{
+ ofToggleFullscreen();
+ break;
+ }
+ case 'i':{
+ vScale*=1.1f;
+ ofLog()<< "vScale: "<<vScale;
+ break;
+ }
+ case 'm':{
+ vScale/=1.1f;
+ ofLog()<< "vScale: "<<vScale;
+ break;
+ }
+ case 'j':{
+ hScale*=1.1f;
+ ofLog()<< "hScale: "<<hScale;
+ break;
+ }
+ case 'k':{
+ hScale/=1.1f;
+ ofLog()<< "hScale: "<<hScale;
+ break;
+ }
+ default:
+ break;
+ }
+
+}
+
+//--------------------------------------------------------------
+void ofApp::keyReleased(int key){
+
+}
+
+//--------------------------------------------------------------
+void ofApp::mouseMoved(int x, int y ){
+
+}
+
+void ofApp::mouseDragged(int x, int y, int button){
+
+}
+
+//--------------------------------------------------------------
+void ofApp::mousePressed(int x, int y, int button){
+
+}
+
+//--------------------------------------------------------------
+void ofApp::mouseReleased(int x, int y, int button){
+
+}
+
+//--------------------------------------------------------------
+void ofApp::windowResized(int w, int h){
+
+}
+
+//--------------------------------------------------------------
+void ofApp::gotMessage(ofMessage msg){
+
+}
+
+//--------------------------------------------------------------
+void ofApp::dragEvent(ofDragInfo dragInfo){
+
+}
diff --git a/audioin/src/ofApp.h b/audioin/src/ofApp.h
new file mode 100644
index 0000000..cecc23e
--- /dev/null
+++ b/audioin/src/ofApp.h
@@ -0,0 +1,68 @@
+#pragma once
+
+#include "ofMain.h"
+
+#include <baudvine/ringbuf.h>
+
+#define SAMPLERATE 48000
+#define min(a,b) (a<b?a:b)
+
+class Buffer{
+public:
+ Buffer(size_t sz=0){
+ if (sz){
+ data =new float[sz];
+ size=sz;
+ }
+ }
+ ~Buffer(){
+ delete data;
+ }
+ void add(float * input, int num){
+ memcpy(&data[writePoint],input,min(num,size-writePoint)*4);
+ if (size-writePoint<num){
+ memcpy(data,&input[size-writePoint],(num-(size-writePoint))*4);
+ writePoint=num-(size-writePoint);
+ }
+ else writePoint+=num;
+ }
+ float operator [] (int i) const {return data[writePoint>i?writePoint-i:size-(i-writePoint)];}
+ float& operator [] (int i) {return data[writePoint>i?writePoint-i:size-(i-writePoint)];}
+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);
+
+ ofSoundStream soundStream;
+ int blockSize;
+ int sampleRate;
+
+ int frameHead; //last sample drawn
+
+ //baudvine::RingBuf<float, SAMPLERATE> buffer;
+
+ Buffer buffer;
+
+ float hScale;
+ float vScale;
+};