diff options
| -rw-r--r-- | audioin/Makefile | 13 | ||||
| -rw-r--r-- | audioin/addons.make | 0 | ||||
| -rw-r--r-- | audioin/config.make | 142 | ||||
| -rw-r--r-- | audioin/src/main.cpp | 13 | ||||
| -rw-r--r-- | audioin/src/ofApp.cpp | 144 | ||||
| -rw-r--r-- | audioin/src/ofApp.h | 68 |
6 files changed, 380 insertions, 0 deletions
diff --git a/audioin/Makefile b/audioin/Makefile new file mode 100644 index 0000000..177e172 --- /dev/null +++ b/audioin/Makefile @@ -0,0 +1,13 @@ +# Attempt to load a config.make file. +# If none is found, project defaults in config.project.make will be used. +ifneq ($(wildcard config.make),) + include config.make +endif + +# make sure the the OF_ROOT location is defined +ifndef OF_ROOT + OF_ROOT=$(realpath ../../..) +endif + +# call the project makefile! +include $(OF_ROOT)/libs/openFrameworksCompiled/project/makefileCommon/compile.project.mk diff --git a/audioin/addons.make b/audioin/addons.make new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/audioin/addons.make diff --git a/audioin/config.make b/audioin/config.make new file mode 100644 index 0000000..73776f4 --- /dev/null +++ b/audioin/config.make @@ -0,0 +1,142 @@ +################################################################################ +# CONFIGURE PROJECT MAKEFILE (optional) +# This file is where we make project specific configurations. +################################################################################ + +################################################################################ +# OF ROOT +# The location of your root openFrameworks installation +# (default) OF_ROOT = ../../.. +################################################################################ +OF_ROOT = ../../openFrameworks + +################################################################################ +# PROJECT ROOT +# The location of the project - a starting place for searching for files +# (default) PROJECT_ROOT = . (this directory) +# +################################################################################ +# PROJECT_ROOT = . + +################################################################################ +# PROJECT SPECIFIC CHECKS +# This is a project defined section to create internal makefile flags to +# conditionally enable or disable the addition of various features within +# this makefile. For instance, if you want to make changes based on whether +# GTK is installed, one might test that here and create a variable to check. +################################################################################ +# None + +################################################################################ +# PROJECT EXTERNAL SOURCE PATHS +# These are fully qualified paths that are not within the PROJECT_ROOT folder. +# Like source folders in the PROJECT_ROOT, these paths are subject to +# exlclusion via the PROJECT_EXLCUSIONS list. +# +# (default) PROJECT_EXTERNAL_SOURCE_PATHS = (blank) +# +# Note: Leave a leading space when adding list items with the += operator +################################################################################ +# PROJECT_EXTERNAL_SOURCE_PATHS = + +################################################################################ +# PROJECT EXCLUSIONS +# These makefiles assume that all folders in your current project directory +# and any listed in the PROJECT_EXTERNAL_SOURCH_PATHS are are valid locations +# to look for source code. The any folders or files that match any of the +# items in the PROJECT_EXCLUSIONS list below will be ignored. +# +# Each item in the PROJECT_EXCLUSIONS list will be treated as a complete +# string unless teh user adds a wildcard (%) operator to match subdirectories. +# GNU make only allows one wildcard for matching. The second wildcard (%) is +# treated literally. +# +# (default) PROJECT_EXCLUSIONS = (blank) +# +# Will automatically exclude the following: +# +# $(PROJECT_ROOT)/bin% +# $(PROJECT_ROOT)/obj% +# $(PROJECT_ROOT)/%.xcodeproj +# +# Note: Leave a leading space when adding list items with the += operator +################################################################################ +# PROJECT_EXCLUSIONS = + +################################################################################ +# PROJECT LINKER FLAGS +# These flags will be sent to the linker when compiling the executable. +# +# (default) PROJECT_LDFLAGS = -Wl,-rpath=./libs +# +# Note: Leave a leading space when adding list items with the += operator +################################################################################ + +# Currently, shared libraries that are needed are copied to the +# $(PROJECT_ROOT)/bin/libs directory. The following LDFLAGS tell the linker to +# add a runtime path to search for those shared libraries, since they aren't +# incorporated directly into the final executable application binary. +# TODO: should this be a default setting? +# PROJECT_LDFLAGS=-Wl,-rpath=./libs + +################################################################################ +# PROJECT DEFINES +# Create a space-delimited list of DEFINES. The list will be converted into +# CFLAGS with the "-D" flag later in the makefile. +# +# (default) PROJECT_DEFINES = (blank) +# +# Note: Leave a leading space when adding list items with the += operator +################################################################################ +# PROJECT_DEFINES = + +################################################################################ +# PROJECT CFLAGS +# This is a list of fully qualified CFLAGS required when compiling for this +# project. These CFLAGS will be used IN ADDITION TO the PLATFORM_CFLAGS +# defined in your platform specific core configuration files. These flags are +# presented to the compiler BEFORE the PROJECT_OPTIMIZATION_CFLAGS below. +# +# (default) PROJECT_CFLAGS = (blank) +# +# Note: Before adding PROJECT_CFLAGS, note that the PLATFORM_CFLAGS defined in +# your platform specific configuration file will be applied by default and +# further flags here may not be needed. +# +# Note: Leave a leading space when adding list items with the += operator +################################################################################ +PROJECT_CFLAGS = -Ilibs/ringbuf/include + +################################################################################ +# PROJECT OPTIMIZATION CFLAGS +# These are lists of CFLAGS that are target-specific. While any flags could +# be conditionally added, they are usually limited to optimization flags. +# These flags are added BEFORE the PROJECT_CFLAGS. +# +# PROJECT_OPTIMIZATION_CFLAGS_RELEASE flags are only applied to RELEASE targets. +# +# (default) PROJECT_OPTIMIZATION_CFLAGS_RELEASE = (blank) +# +# PROJECT_OPTIMIZATION_CFLAGS_DEBUG flags are only applied to DEBUG targets. +# +# (default) PROJECT_OPTIMIZATION_CFLAGS_DEBUG = (blank) +# +# Note: Before adding PROJECT_OPTIMIZATION_CFLAGS, please note that the +# PLATFORM_OPTIMIZATION_CFLAGS defined in your platform specific configuration +# file will be applied by default and further optimization flags here may not +# be needed. +# +# Note: Leave a leading space when adding list items with the += operator +################################################################################ +# PROJECT_OPTIMIZATION_CFLAGS_RELEASE = +# PROJECT_OPTIMIZATION_CFLAGS_DEBUG = + +################################################################################ +# PROJECT COMPILERS +# Custom compilers can be set for CC and CXX +# (default) PROJECT_CXX = (blank) +# (default) PROJECT_CC = (blank) +# Note: Leave a leading space when adding list items with the += operator +################################################################################ +# PROJECT_CXX = +# PROJECT_CC = 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; +}; |
