Ultrasone Theremin (3 / 4 stap)

Stap 3: Stap 3: Code

Download de bijgevoegde bestanden en het kopiëren en in het verleden de code in de relevante bestanden. Het toevoegen van keyClass.cpp en keyClass.h als de nieuwe bestanden.

ofApp.cpp Code

 #include "ofApp.h" //int for storing the byte data from Arduino. 
 int byteData; 
 //-------------------------------------------------------------- 
 void ofApp::setup(){ 
 //General setup of look of window. 
 ofBackground(255); 
 ofSetColor(0); 
 //serial port setup. using COM3 for Windows port. 
 //Also using baud rate 9600, same in Arduino sketch. 
 sampleRate = 44100; // setting up the sampleRate 
 bufferSize = 512; // setting up the bufferSize 
 for( int i = 0; i < n.size(); i ++) { // looping through the vector of notes 
 keys.emplace_back( new Key(n[i])); // because I'm using a uniqe_ptr I call emplace_back instead of push_back 
 } 
 ofSoundStreamSetup(2, 0, this, sampleRate, bufferSize, 4); // here I'm setting up the connection with the sound card using ofSoundStreamSetup 
 serial.setup("/dev/cu.usbmodem1421", 9600); // the port number will be different on every device and this is running on a Mac and that's why the port number is different. Make sure that the port number is correct before you run the code 
 } 
 //-------------------------------------------------------------- 
 void ofApp::update(){ 
 //Simple if statement to inform user if Arduino is sending serial messages. 
 if (serial.available() < 0) { 
 msg = "Arduino Error"; 
 } 
 else { 
 //While statement looping through serial messages when serial is being provided. 
 while (serial.available() > 0) { 
 //byte data is being writen into byteData as int. 
 byteData = serial.readByte(); 
 //byteData is converted into a string for drawing later. 
 msg = "cm: " + ofToString(byteData); 
 } 
 } 
 } 
 //-------------------------------------------------------------- 
 void ofApp::draw(){ 
 //drawing the string version pf byteData on oF window. 
 ofDrawBitmapString(msg, 50, 100); 
 //printing byteData into console. 
 cout << byteData << endl; 
 // These if statements checks the specific distance from the ultrasonic sensor and so depending in the distance a different note will be triggered 
 if(byteData >= 1 && byteData <= 2 ){ 
 keys[0]->on(); 
 }else{ 
 keys[0]->off(); 
 } 
 if(byteData >= 3 && byteData <= 4){ 
 keys[1]->on(); 
 }else{ 
sleutels [1] -> off(); keys[1]->off(); } 
 if(byteData >= 5 && byteData <= 6){ 
 keys[2]->on(); 
 }else{ 
 keys[2]->off(); 
 } 
 if(byteData >= 7 && byteData <= 8){ 
 keys[3]->on(); 
 }else{ 
 keys[3]->off(); 
 } 
 if(byteData >= 9 && byteData <= 10){ 
 keys[4]->on(); 
 }else{ 
 keys[4]->off(); 
 } 
 if(byteData >= 11 && byteData <= 12){ 
 keys[5]->on(); 
 }else{ 
 keys[5]->off(); 
 } 
 if(byteData >= 13 && byteData <= 14){ 
 keys[6]->on(); 
 }else{ 
 keys[6]->off(); 
 } 
 if(byteData >= 15 && byteData <= 16){ 
 keys[7]->on(); 
 }else{ 
 keys[7]->off(); 
 } 
 } 
 void ofApp::audioOut( float * output, int bufferSize, int nChannels){ 
 for(int i = 0; i < bufferSize; i ++) { // you need to loop through the bufferSize 
 for(int j = 0; j < n.size(); j ++) { // looping through the vector of notes 
 notes += keys[j]->play() / n.size(); 
 } 
 myMix.stereo(notes, outputs, 0.5); 
 output[i * nChannels] = outputs[0]; 
 output[i * nChannels + 1] = outputs[1]; 
 } 
 } 
 <strong>ofApp.h</strong> 
 #pragma once<br> 
 #include "ofMain.h" 
 #include "ofxMaxim.h" 
 #include "keyClass.h" 
 class ofApp : public ofBaseApp{ 
 public: 
 //Standard oF functions. 
 void setup(); 
 void update(); 
 void draw(); 
 void audioOut( float * ouput, int bufferSize, int nChannels); 
 int bufferSize, sampleRate; 
 double notes; 
 double outputs[ 2 ]; 
 //array of frequencies 
 vector n {261.63, 293.66, 329.63, 349.23, 392.00, 440.00, 493.88, 523.25 }; 
 vector> keys; 
 maxiMix myMix; 
 //Custom variables for on screen string and font. 
 string msg; 
 //ofTrueTypeFont font; 
 //New serial object. 
 ofSerial serial; 
 }; 

keyClass.cpp Code

 #include "keyClass.h"<br> 
 Key::Key(double _f) { 
 freq = _f; 
 env.setAttack(1000); 
 env.setDecay(1); 
 env.setSustain(1); 
 env.setRelease(1000); 
 } 
 void Key::on() { 
 env.trigger = 1; 
 } 
 void Key::off() { 
 env.trigger = 0; 
 } 
 double Key:: play(){ 
 return env.adsr(osc.sinewave(freq), env.trigger); 
 } 

keyClass.h Code

 #ifndef __keyboardofxMaxim__keyClass__<br> #define __keyboardofxMaxim__keyClass__ 
 #include 
 #include "ofxMaxim.h" 
 class Key { 
 public: 
 maxiOsc osc; 
 maxiEnv env; 
 double freq; 
 Key( double _f); 
 double play(); 
 void on(); 
 void off(); 
 }; 
 #endif /* defined(__keyboardofxMaxim__keyClass__) */ 


Gerelateerde Artikelen

Arduino Theremin deur / slot herinnering

Arduino Theremin deur / slot herinnering

Soms, moeten we om toe te voegen sommige kruiden aan ons leven, zodat u zult zich beter voelen en maken leuker leven worden verbazingwekkende wordt gevraagd.Mijn collega's en ik altijd vergeet om de deur dicht na onze ontmoeting, en er zijn te veel w
Intel IoT Edison Sonar Theremin

Intel IoT Edison Sonar Theremin

Intel® Edison is Intel's nieuwe kleine wonder, met o.a. een dual core Intel® Atom™ processor systeem op een Chip, 1GB RAM, WiFi, Bluetooth LE waarmee u een echte besturingssysteem (linux!) op het en doen wat je kunt bedenken.Dingen krijgen zelfs bete
Star Wars Adafruit Flora Theremin LED beha

Star Wars Adafruit Flora Theremin LED beha

gebruik van de force, Luke. Sluit je ogen, strak aan uw lichte saber vasthouden en...Raak niet dat bellen.  Geen tweaken van de knoppen.  Enkel golf je handen voor de twee gevoelige sensoren ingebed in dit op maat gemaakte stuk van wearable tech.Het
Theremin arduino

Theremin arduino

Nl este instructable vamos een hacer VN theremin con arduino, la intención tijdperk hacer VN arpa pero como geen vamos een usar lasers o algo que semeje cuerdas, es mas correcto llamarlo theremin.Stap 1: Materiales Arduino UNOProtoboardKabelsDiodo la
Besturen van een Motor met behulp van ultrasone sensoren van de afstand (HC-SR04)

Besturen van een Motor met behulp van ultrasone sensoren van de afstand (HC-SR04)

Hallo iedereen! In dit project zullen wij de richting van een motor met behulp van twee ultrasone opgezette sensoren controleren.Als de juiste sensor wordt geactiveerd, zal de motor draaien linksom.Als de linker sensor wordt geactiveerd, zal de motor
Moldover van licht-Theremin CD (DIY versie)

Moldover van licht-Theremin CD (DIY versie)

Hallo! Ik ben Moldover. Ik maak muziek en ik maken muziekinstrumenten.Ik bracht mijn eerste originele album (zelfbetiteld) als Moldover in 2009. De ontzagwekkende uitgave van dit album kwam op een CD die is gemonteerd op een speciaal ontworpen circui
Ultrasone afstandsmeter met LCD-scherm van Arduino UNO

Ultrasone afstandsmeter met LCD-scherm van Arduino UNO

In deze tutorial gaan we zien een ander gebruik van de HC-SR04 ultrasone module. In deze module wordt vaak gebruikt op robots en speelgoedauto's te vinden van belemmeringen, maar het kan worden gebruikt voor het meten van afstanden ook.Afstanden geme
Arduino ultrasone waterniveau Sensor voor espressomachines

Arduino ultrasone waterniveau Sensor voor espressomachines

Ik heb een zeer goede maar mooie oude koffie espressomachine met een uitneembare watertank, het probleem is dat het niet bieden een waarschuwing voor laag waterniveau, licht, dus ik kan niet zo'n niveau voordat u uit water weten! OF op zijn minst zon
Een mooie doos voor een theremin

Een mooie doos voor een theremin

Na de diy spullen voor muziek saga was het tijd om te bouwen een ander vak, ditmaal voor mijn theremaniacs theremin kit.Ik had de theremin in een zeer lelijke houten doos en altijd wilde het een beter huis geven. na het doen van de cajon op mijn laat
Gemakkelijk ultrasone 4-pin sensor controle (hc-sr04)

Gemakkelijk ultrasone 4-pin sensor controle (hc-sr04)

Hallo Instructables,Ik heb wat moeite met mijn goedkoop ultrasone sensor (hc-sr04) en vandaag vond ik een echt eenvoudige oplossing.Het is een echt eenvoudig bewerken van de code van de normale 3pin.Ik voegde de 4 int naar het begin van de code, zoda
UltraGuitar - een ultrasone gitaar

UltraGuitar - een ultrasone gitaar

Hoi!Ik hou van muziek. Ik ben het spelen op de piano, maar ik wilde ook om te leren spelen op gitaar. Ik heb een heleboel keer geprobeerd, maar het was erg moeilijk om zelfs eenvoudige nummers te spelen. Ik kon een melodische lijn, maar niet de akkoo
Het gebruik van een ultrasone Sensor met Arduino

Het gebruik van een ultrasone Sensor met Arduino

HC-SR04 ultrasone sensoren afstanden vrij nauwkeurig kunnen meten en zijn zeer nuttig in vele Arduino projecten. Ik heb ze gebruikt in autonome robots, elektronische instrumenten, en vele andere projecten. Ze hebben een bereik van 2 cm - 400 cm (~ 0.
[Arduino project] #Remote Monitoring van ultrasone Sensor waarde met behulp van ioShield-A & Cloud Server

[Arduino project] #Remote Monitoring van ultrasone Sensor waarde met behulp van ioShield-A & Cloud Server

Mijn post wordt uitgelegd hoe u controleert de waarde van de ultrasone sensor op afstand met behulp van Arduino, ioShield-A & Xively Server.Arduino Uno bord wordt gebruikt voor het hele systeem bedienen en het meten van de waarde van de sensor. Ik be
Ingebouwde Hackduino (Arduino) ultrasone parkeren gids

Ingebouwde Hackduino (Arduino) ultrasone parkeren gids

Dit is een gids voor het parkeren van hackduino die in een oude doos voor werk, past dus het kan ingebouwd worden in aan de muur in uw garage. Oorspronkelijk wilde ik met de Arduino en de ultrasone afstandssensor bepalen van een werkelijke verkeersli