aboutsummaryrefslogtreecommitdiffstats
path: root/ofxMaxim/ofxMaximExamples007OSX/maxiAtomSynthesis/src/mp.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'ofxMaxim/ofxMaximExamples007OSX/maxiAtomSynthesis/src/mp.cpp')
-rw-r--r--ofxMaxim/ofxMaximExamples007OSX/maxiAtomSynthesis/src/mp.cpp108
1 files changed, 108 insertions, 0 deletions
diff --git a/ofxMaxim/ofxMaximExamples007OSX/maxiAtomSynthesis/src/mp.cpp b/ofxMaxim/ofxMaximExamples007OSX/maxiAtomSynthesis/src/mp.cpp
new file mode 100644
index 0000000..57970cf
--- /dev/null
+++ b/ofxMaxim/ofxMaximExamples007OSX/maxiAtomSynthesis/src/mp.cpp
@@ -0,0 +1,108 @@
+#include "mp.h"
+
+//--------------------------------------------------------------
+void mp::setup(){
+ ofEnableAlphaBlending();
+ ofSetupScreen();
+ ofBackground(0, 0, 0);
+ ofSetVerticalSync(true);
+// pyd.setup("localhost", 23612);
+// pyd.clear();
+
+
+ maxiAtomBook::loadMPTKXmlBook(ofToDataPath("book100.xml"), book);
+ sort(book.atoms.begin(), book.atoms.end(), maxiAtom::atomSortPositionAsc);
+ atomBuffer.resize(512);
+ atomData.resize(book.atoms[0]->length);
+
+ ofxMaxiSettings::setup(44100, 2, 512);
+ ofSoundStreamSetup(maxiSettings::channels,0,this, maxiSettings::sampleRate, maxiSettings::bufferSize, 4);/* Call this last ! */
+
+// flArr test;
+// maxiCollider::createGabor(test, maxiMap::linexp(atom->frequency, 0, 0.2, 20, 20000), 44100, atom->length, atom->phase, 0.3, atom->amp / 40.0);
+
+}
+
+
+
+//--------------------------------------------------------------
+void mp::update(){
+ flArr test;
+ //generate atoms from mouse position
+// maxiCollider::createGabor(test, maxiMap::linexp((float)mouseX/ofGetWidth(), 0, 1, 100, 10000) * (1.0 + (ofRandomuf() * 0.2)),
+// maxiSettings::sampleRate,
+// maxiMap::linlin((float)mouseY / ofGetHeight(), 0, 1, 2000, 40000) * (1.0 + (ofRandomuf() * 0.3)),
+// ofRandomf() * PI, 0.3, 0.05);
+// atomStream.addAtom(test);
+
+ //play book back one atom at a time
+// static int atomIdx=0;
+// maxiGaborAtom *atom = (maxiGaborAtom*) book.atoms[atomIdx % book.atoms.size()];
+// maxiCollider::createGabor(test, maxiMap::linlin(atom->frequency, 0.0, 1.0, 20, 20000), 44100, atom->length, atom->phase, 0.3, atom->amp / 30.0);
+// atomStream.addAtom(test);
+// atomIdx++;
+// cout << (atomIdx % book.atoms.size()) << ", " << maxiMap::linlin(atom->frequency, 0.0, 1.0, 20, 20000) << ", " << atom->amp << endl;
+
+}
+
+//--------------------------------------------------------------
+void mp::draw(){
+
+}
+
+void mp::audioRequested (float * output, int bufferSize, int nChannels){
+ atomPlayer.play(book, atomStream, output, bufferSize);
+
+ memset(&atomBuffer[0], 0, sizeof(float) * bufferSize);
+ atomStream.fillNextBuffer(&(atomBuffer[0]), bufferSize);
+ for (int i = 0; i < bufferSize; i++){
+ output[i*nChannels ] = output[i*nChannels + 1] = atomBuffer[i];
+ }
+
+}
+
+
+//--------------------------------------------------------------
+void mp::keyPressed(int key){
+
+}
+
+//--------------------------------------------------------------
+void mp::keyReleased(int key){
+
+}
+
+//--------------------------------------------------------------
+void mp::mouseMoved(int x, int y ){
+
+}
+
+//--------------------------------------------------------------
+void mp::mouseDragged(int x, int y, int button){
+
+}
+
+//--------------------------------------------------------------
+void mp::mousePressed(int x, int y, int button){
+
+}
+
+//--------------------------------------------------------------
+void mp::mouseReleased(int x, int y, int button){
+
+}
+
+//--------------------------------------------------------------
+void mp::windowResized(int w, int h){
+
+}
+
+//--------------------------------------------------------------
+void mp::gotMessage(ofMessage msg){
+
+}
+
+//--------------------------------------------------------------
+void mp::dragEvent(ofDragInfo dragInfo){
+
+} \ No newline at end of file