Ultrasonic Theremin (3 / 4 steg)

Steg 3: Steg 3: kod

Hämta bifogade filer och kopiera och förbi koden i de relevanta filerna. Att lägga till keyClass.cpp och keyClass.h som nya filer.

ofApp.cpp kod

#include "ofApp.h"
int för att lagra byte data från Arduino.

int byteData;

//--------------------------------------------------------------

void ofApp::setup() {

Allmänna inställningar av utseendet på fönstret.

ofBackground(255);

ofSetColor(0);

seriell port setup. med hjälp av COM3 för Windows port.

Även använder överföringshastighet 9600, skiss samma i Arduino.

sampleRate = 44100; ställa in sampleRate

bufferSize = 512; ställa in bufferSize

för (int jag = 0; jag < n.size(); i ++) {/ / loopa igenom vektorn av anteckningar

Keys.emplace_back (nya Key(n[i])); eftersom jag använder en uniqe_ptr som jag kallar emplace_back istället för push_back

}

ofSoundStreamSetup (2, 0, denna, sampleRate bufferSize, 4); här inrätta jag anslutningen med ljudkortet med ofSoundStreamSetup

Serial.Setup ("/dev/cu.usbmodem1421", 9600); portnumret som ska vara unik på varje enhet och detta körs på en Mac och det är därför portnummer som är annorlunda. Se till att portnumret är korrekt innan du kör koden

}

//--------------------------------------------------------------

void ofApp::update() {

Enkelt om uttalande att informera användaren om Arduino skickar seriell meddelanden.

om (serial.available() < 0) {

MSG = "Arduino fel";

}

annat {

Medan uttalande ges loopa igenom seriell meddelanden när seriell.

samtidigt (serial.available() > 0) {

byte data som skrivits in i byteData som int.

byteData = serial.readByte();

byteData konverteras till en sträng för att rita senare.

MSG = "cm:" + ofToString(byteData);

}

}

}

//--------------------------------------------------------------

void ofApp::draw() {

Rita sträng version pf byteData fönstret.

ofDrawBitmapString (msg, 50, 100);

skriva ut byteData till konsolen.

Cout << byteData << oä;

Dessa om uttalanden kontrollerar särskilda avståndet från ultrasonic sensor och så beroende på avstånd en annan anteckning kommer att utlösas

om (byteData > = 1 & & byteData < = 2) {

nyckel [0] -> on ();

} annat {

nyckel [0] -> off();

}

om (byteData > = 3 & & byteData < = 4) {

nyckel [1] -> on ();

} annat {

nyckel [1] -> off(); }

om (byteData > = 5 & & byteData < = 6) {

nyckel [2] -> on ();

} annat {

nyckel [2] -> off();

}

om (byteData > = 7 & & byteData < = 8) {

nyckel [3] -> on ();

} annat {

nyckel [3] -> off();

}

om (byteData > = 9 & & byteData < = 10) {

nyckel [4] -> on ();

} annat {

nyckel [4] -> off();

}

om (byteData > = 11 & & byteData < = 12) {

nyckel [5] -> on ();

} annat {

nyckel [5] -> off();

}

om (byteData > = 13 & & byteData < = 14) {

nyckel [6] -> on ();

} annat {

nyckel [6] -> off();

}

om (byteData > = 15 & & byteData < = 16) {

nyckel [7] -> on ();

} annat {

nyckel [7] -> off();

}

}

void ofApp::audioOut (float * utgång, int bufferSize, int nChannels) {

för (int jag = 0; jag < bufferSize; jag ++) {/ / du behöver att gå igenom bufferSize

för (int j = 0; j < n.size(); j ++) {/ / loopa igenom vektorn av anteckningar

anteckningar += nyckel [j] -> play() / n.size();

}

myMix.stereo (anteckningar, utgångar, 0,5);

output [jag * nChannels] = utgångar [0];

output [jag * nChannels + 1] = utgångar [1].

}

}

< stark > ofApp.h < / strong >

#pragma en gång < br >

#include "ofMain.h"

#include "ofxMaxim.h"

#include "keyClass.h"

klass ofApp: offentliga ofBaseApp {

offentlig:

Standard funktioner.

void setup();

void update();

void draw();

void audioOut (float * ouput, int bufferSize, int nChannels);

int bufferSize, sampleRate;

dubbel anteckningar;

dubbla utgångar [2].

array av frekvenser

Vector n {261.63, 293.66, 329.63, 349.23, 392.00, 440,00, 493.88, 523.25};

Vector > nycklar;

maxiMix myMix;

Anpassade variabler för på skärmen strängen och teckensnitt.

sträng msg;

ofTrueTypeFont teckensnitt;

Nya seriella objekt.

ofSerial seriell;

};

keyClass.cpp kod

#include "keyClass.h" < br >

Key::Key (dubbel _f) {

Freq = _f;

env.setAttack(1000);

env.setDecay(1);

env.setSustain(1);

env.setRelease(1000);

}

ogiltig nyckel:: on () {

env.trigger = 1;

}

{ogiltig nyckel:: off()

env.trigger = 0;

}

dubbla nyckel:: play() {

återgå env.adsr(osc.sinewave(freq), env.trigger);

}

keyClass.h kod

#ifndef __keyboardofxMaxim__keyClass__ < br >
#define __keyboardofxMaxim__keyClass__

#include

#include "ofxMaxim.h"

klass nyckeln {

offentlig:

maxiOsc osc;

maxiEnv env;

dubbel freq;

Nyckel (dubbel _f);

Double Play ();

Annullera on ();

void off();

};

#endif / * defined(__keyboardofxMaxim__keyClass__) * /


Se Steg
Relaterade Ämnen

Intellekten IoT Edison Sonar Theremin

Intel® Edison är Intels nya små konstigt, med bl a en dual-core Intel® Atom™ processor System på ett Chip, 1GB RAM, WiFi, Bluetooth LE som gör det möjligt att köra en riktig operativsystem (linux!) på det och göra vad du kan tänka dig.Det blir ännu b...

Star Wars Adafruit Flora Theremin LED BH

använda styrkan, Luke. Blunda, hålla tätt till en ljus sabel och...Vidrör inte att ringa. Ingen tweaking vreden. Bara vifta med händerna framför de två känsliga sensorer inbyggda i denna skräddarsydda bärbara tech.Plagget har en inbäddad Adafruit Flo...

Arduino Theremin dörr-sista påminnelse

Ibland, måste vi lägga till lite krydda till vårt liv, så att du ska må bättre och roligare att fråga liv bli fantastiska.Mina kolleger och mig glömmer alltid att stänga dörren efter vårt möte, och det finns alltför många värdesaker i träffa rummet....

En trevlig låda för en theremin

Efter diy grejer för musik saga var det dags att bygga en annan box, denna gång för min theremaniacs theremin kit.Jag hade theremin i en mycket ful trä låda och alltid velat ge det ett bättre hem. efter att ha gjort cajon på min sista instructable ja...

Gakken Theremin Kit hacka

här är instruktioner att göra några grundläggande hacka theremin kit som du kan köpa från göra. Sant, det finns redan vägbeskrivning att göra båda dessa saker i medföljande tidningen, men vad som skiljer detta hur-till är att det är på engelska. Om l...

Cirkelträning Scribe ljus Theremin

Detta Instructable använder krets Scribe moduler och ledande bläck för att skapa en enkel ljus theremin. I detta projekt bestämmer input från ljussensorn tonhöjden för ljudet genereras av summern. Circuit Scribe kit gör det lätt att göra - ingen prog...

Moldover's Light-Theremin CD (DIY version)

Hej! Jag är Moldover. Jag gör musik och jag göra musikinstrument.Jag släppte min första ursprungliga album (självbetitlade) som Moldover under 2009. Den Awesome upplagan av detta album kom på en CD som monteras på ett skräddarsytt kretskort som också...

Arduino Ultrasonic Sensor

Detta är exempel att använda ultrasonic sensor (HC-SR04) i arduino.Steg 1: Del lista:Arduino UNO R3 styrelseHC-SR04 Ultrasonic SensorRöd LEDGrön LED560 ohm (grön, blå, brun, guld) motståndHalfBreadboardsladdarSteg 2: Ansluta komponenterna Steg 3: Skr...

Arduino - Ultrasonic Sensor med lysdioder och Summer

Hi guys detta är min första tutorial, jag har precis börjat för några månader sedan lära sig elektronik (tidigare jag har bara visste hur man programmerar i C och Python). När jag avslutat projektet (tog mig ca 5 timmar eller något) har jag beslutat...

Distansera mätningen och hinder detektering med NXP 89v51rd2fn och ultrasonic sensor HC-SR04.

Alla använder arduino uno eller mega att göra projekt som de är lätt att använda och koden för arduino är lätt tillgängliga på arduino forum och ingen använder atmel, philips eller andra microcontroller för att göra projekt som kodning är ganska svår...

En multithreaded blinkande theremin drivs av VIPER

Theremin är ett experimentellt musikinstrument uppfanns av den ryska fysikern Lev Sergejevitj Termen på 20-talet. Utan fysisk kontakt, kan två antenner känna theremin spelarens händer position i rymden och använda den för att styra frekvensen och amp...

Hur man gör en MIDI-Theremin

Använda Touch styrelsen att åter tänka Theremin!För er som inte har hört av en theremin, är det en tidig elektroniska musikinstrument som kontrolleras eller spelade utan fysisk beröring. Den ursprungliga theremin ritades av uppfinnaren Leon Theremin...

Ultrasonic skala

I detta projekt guidar jag dig hur man gör en digital skala med hjälp av Arduino uno och några andra objektDetta är en mycket lätt att projektetSteg 1: Objekt krävs 1. Arduino uno2. ultrasonic sensor3. LCD-skärm4. par hoppare ledningar5. skärbrädaSte...

Ultrasonic avståndsmätare med LCD-display på Arduino UNO

I denna tutorial kommer vi att se en annan användning av modulen HC-SR04 ultraljud. Denna modul används ofta på robotar och leksaksbilar för att hitta hinder men det kan användas för att mäta avstånd också.Avstånd som mäts av HC-SR04 visas på vår äls...

Arduino ljus Theremin

En theremin är en elektronisk musikenhet som kan känna av placera av en utförare händer och skapa musikaliska ljud utan modellen någonsin röra enheten. För våra ljus theremin ska vi anpassa detta koncept och skapa en theremin som styr färg i stället...

Arduino: HC-SR04 Ultrasonic Sensor

Syfte:Utnyttja en HC-SR04 ultrasonic sensor med en Arduino att mäta distansera av något föremål.Den grundläggande idén bakom en ultrasonic sensor:En ultrasonic sensor utlöser en signal om att färdas i en rak bana, och sedan om utlösta signalen stöter...

Bygga en optisk Theremin--förbättra din Snap kretsar genom att lägga till en 555 Timer integrerad krets II

i detta Instructable, får du lära dig att förbättra din samling av Snap kretsar block genom att lägga till en 555 Timer IC och bygga en optisk theremin. Du lär dig funktionerna av stiften på 555 chip. Du lär dig att när 555 är i astable läge, produkt...

Hur man bygger en optisk Theremin

vad är en theremin? Det är ett instrument som kan spelas utan beröring. Traditionella instrumenten använder antenner och oscillatorer att känna av en persons hand och generera en ton. Vår använder ljus istället för detta, det är inte en faktisk there...

555 ljus Theremin

snabb! Gör en Tight, ljus-kontrollerad tongeneratorn! Det är ett roligt att bygga lite devise som kan göras med lätt att hitta elektroniska komponenter! Ännu bättre är att den har ett coolt namn! "Ljus Theremin" (Th-air-ah-min) att jag kommer at...