De polyfone keuken (6 / 8 stap)

Stap 6: De Code: verwerking


In onze code Processing, vastgehaakt we de ingangen van de seriële poort ontvangen naar een geluidsbestand. Als dat bepaalde sensor afgaat, zal het geluid beginnen. U kunt een lichte vertraging in het opstarten van het geluid opmerken. Dit is omdat wij het heb berekend zodat geluiden zal op de beat beginnen en met elkaar werken.

Het zip-bestand heeft zowel de gegevensbestanden (clips met geluid) en de Processing schets in de juiste mappenhiërarchie dus gewoon download het zip dossier, haal de omslag met haar met bestanden uit en openstellen van de Processing Schets! (Als iets aan het gebeurde, maar zorg ervoor dat zowel de datamap en het bestand .pde binnenkant van de map met dezelfde naam als het .pde bestand.)

Opmerkingen over de code:
1) de seriële poort die is gedefinieerd in deze code moet overeenkomen met de seriële poort die u hebt aangesloten, uw Arduino aan. In de setup-functie stel we de variabele poort naar een seriële-object vertegenwoordigen de poort die wordt gebruikt om de gegevens te lezen. Momenteel is ingesteld op de eerste beschikbare poort gebruikt, maar als dat niet werkt, wijzigt de naam van de poort die je Arduino is aangesloten op het tweede argument.
2) Wij hebben twee genres van muziek voorgeladen. Om te schakelen tussen de twee, moet u het variabele tempo en tellen tot de juiste nummers zoals gedefinieerd in de commentaren.

Verwerking van Code:

/*
De polyfone keuken
Sara Montoro
Karl Landin
Alice Lee
Noah Pitts

Universiteit van Californië, Berkeley
CNM290/CS294-85
Kritische maken: Materialen, protocollen en cultuur

Laat ons een reactie hebt u suggesties en andere ideeën!
*/

importeren van processing.serial.*;
importeren van ddf.minim.*;

int [] mag = {0,0,0,0};
int [] pot = {0,0,0,0,0}; De potentiometers worden niet opgeslagen in volgorde. Het midden
verbonden met pin die a3 eigenlijk wordt ingevoerd in de Serial na
alle van de andere potentiometers. Het zal de laatste waarde van
deze array (pot[4]).
float volumeCab;

int mot = 0; de sensor van de motie. (niet gebruikt)
int GLB;

geluidsbestanden
Tekenreeks [] nummers;
String [] reggae = {"t75bass1.wav","t75drums1.wav","t75horn1.wav","t75guitar1.wav","t75keys1.wav","t75synth1.wav","t75vocals1.wav","t75backup1.wav"};
String [] flamenco = {"t120bass1.wav", "t120drums1.wav", "t120guitar1.wav", "t120guitarSolo1.wav", "t120percusA1.wav", "t120percusB1.wav", "t120piano1.wav", "t120vocals1.wav"};

Boole minimStarted = false;

Als u wenst om te kiezen een ander genre, wijzigt u de hieronder twee variabelen die overeenkomen met de muziek die je wilt.
REGGAE, tempo = 75, graaf = 1
FLAMENCO, tempo = 120, graaf = 1
int tempo = 75;
int count = 1;

int beat, beatSum, lastMillis, fout, mspb, bps;

Seriële poort;

Minim minim;
AudioPlayer [] spelers = nieuwe AudioPlayer [8];

VOID Setup {}
MSPB = aantal * 60000/tempo;
bps = tempo/60;
grootte (512, 200, P3D);

Opmerking: het tweede argument in deze oproep moet de naam van de seriële poort die
je Arduino communiceert met de computer via. (Op uw Arduino Sketch,
Ga naar extra > seriële poort. De gemarkeerde poort is enerzijds uw Arudino wordt gebruikt.)
Een lijst van beschikbare poorten wilt bekijken, uncomment de hieronder lijn.
println(Serial.List());
poort = nieuwe Serial (dit, Serial.list() [0], 9600);

kunnen bereiken de gegevensmap
Minim = nieuwe Minim(this);

switch(tempo) {}
Case 100:
println ("Tempo: 100 - No Media momenteel beschikbaar");  tempo = 100
breken;

Case 120:
FLAMENCO temp = 120
nummers = flamenco;
breken;

Case 140:
println ("Tempo: 140 - No Media momenteel beschikbaar");  tempo = 140
breken;

REGGAE tempo = 75
Case 75:
nummers = reggae;
breken;
}

loadfiles uit de datamap en de schets-map
voor (int x = 0; x < songs.length; x ++) {}
spelers [x] = minim.loadFile(songs[x]);
}

Waarden meteen vragen
Port.write(65);

for (int i = 0; ik < 4; i ++) {}
Players[i].loop();
Players[i].setGain(-80);
}
Minim.Start(this);
}

VOID draw() {}
Background(0);
Stroke(255);
frameRate(120);

wijzigen van de omvang van de kachel
for (int i = 0; ik < 4; i ++) {}
Players[i].setGain(map(float(pot[i]),0,1023,-80,14));
}

volumeCab = map(float(pot[4]),0,1023,-80,14);

for (int i = 0; ik < 4; i ++) {}
Players[i+4].setGain(volumeCab);
}

muzikale tijd houden
if(Millis() > = lastMillis + mspb) {}
lastMillis = millis ()-6;
if(Beat == 32) {}
Beat = 0;
}
fout = lastMillis % mspb;
Print(Beat);
afdrukken ("," + beatSum);
println (", fout:" + fout + "ms");

for (int i = 0; ik < 4; i ++) {}
Als (mag [i] == 1 & &! players[i+4].isPlaying()) {}
spelers [1 + 4] .setLoopPoints (0, 5);
Players[i+4].Play(0);
println ("speler" (ik + 4) + "net begonnen");
}
Players[i+4].setGain(volumeCab);
}

toevoegen om te verslaan van graven
beat = beat + tellen;
beatSum = beatSum + tellen;
println ("GLB:" + Integer.toString(cap));
}
}

Sluit alle audiospelers en minim
VOID stop() {}
voor (AudioPlayer p: spelers) {}
p.Close();
}
Minim.stop();
Super.stop();
}

Wanneer er iets genaamd availble om te lezen
VOID serialEvent(Serial port) {}
De gegevens lezen
Input string = port.readStringUntil('*');
Als (input! = null) {}
Splice de tekenreeks in een array van gehele getallen
int [] vals = int (splitTokens (ingang, ", *"));

Controleer alle waarden zijn gevonden
Als (vals.length! = 10) {}
println ("fout: alleen ontvangen" + vals.length + "waarden.");
terugkeer;
}

Zet waarden in de variabelen
Als (GLB! = int(vals[0])) {}
Cap = int(vals[0]);
Start/stop minim
}

for (int i = 1; ik < = 5; i ++) {}
Als (pot [i-1]! = vals[i]) {}
Kijk uit! De middelste potentiometer laatste is uitgeprint en zullen pot [4]
omdat het de oven in onze prototype en niet een kachel-brander, zoals de
andere 4 potentionmeters
pot [i-1] = vals [i];
}
}

for (int i = 6; ik < = 9; i ++) {}
Als (mag [i-6]! = vals[i]) {}
mag [i-6] = vals [i];
}
}
}
handshaking
Port.write(65);
}

Gerelateerde Artikelen

Kid's keuken

Kid's keuken

De keuken van dit speelgoed werd gemaakt door eerste kopen een keukenkast uit een overschot winkel. Toe te voegen en improviseren met verschillende dingen.Stap 1: Het uitsnijden van voor de plaatsing van wastafel en kraan.Stap 2: Wastafel en kraanEen
Grote keuken Facelift

Grote keuken Facelift

Uw keuken een facelift met nieuwe kabinetsdeuren geven.Ik zal uitleggen hoe je de rode deur in de foto, met geïntegreerde Trek (handvat), die u als een accent aan uw keuken of zorg genoeg toevoegen kunt ter vervanging van al uw oude deuren.Je hebt ee
Kleding van Peg keuken Hack

Kleding van Peg keuken Hack

Wat doet een clothes-peg in de keuken?Het klinkt misschien als een grap, maar dit is wat ik heb gedaan.Stap 1: Items Een paar wasknijpersDubbelzijdig tape (of een siliconen lijm)TekenreeksEen schaarKunt u gemakkelijk verkrijgen deze items ergens in u
Keuken meshouder

Keuken meshouder

Mijn vrouw wilde een soort messenblok. Maar we hebben meerdere verschillende soorten en soorten messen.Het eerste idee was om te kopen een magnetische meshouder, maar deze houder niet passen in onze keuken... zei mijn vrouw.Zo heb ik het mijn zelf bo
Sappige bollen Snack - gemakkelijk keuken Science

Sappige bollen Snack - gemakkelijk keuken Science

Dit is een makkelijke en leuke manier om te spelen met je eten! Als je kieskeurig kinderen hebt, kan u doen sommige sap van vruchten en groenten en maakt u deze "caviar" gelei van te maken.Dit omvat slechts twee ingrediënten! .. .en een kopje ol
GOEDE morgen (koffie) keuken zeep

GOEDE morgen (koffie) keuken zeep

ik heb het maken van zeep voor ongeveer 12 jaar nu. Als ik zeg "het maken van zeep" Ik bedoel echte zeep... niet de glycerine, of smelt en pour soort als u kopen bij de ambachtelijke winkel (al hoewel ik de gelegenheid te gebruiken voor sommige
PVC keuken Helper Hack

PVC keuken Helper Hack

Hield van het idee van de helpers van de keuken maar niet waarderen hun prijskaartjes. Zag een heleboel hacks en allermeest zij betrokken houtbewerking die nodig extra hulpmiddelen; niet precies onze kopje thee. Toen kwam de aha! moment; PVC - zo mak
Keuken-bijkeuken-laden

Keuken-bijkeuken-laden

Rijdend door de buurt, zag ik een paar "te koop" tekenen in de voortuin van een buurman. Ik stopte om te praten met hem, en wordt een gepensioneerde algemene aannemer, hij had verzameld sommige oude instrumenten, waarvan sommige had onbruikbaar
Flat Pack keuken Tang

Flat Pack keuken Tang

Deze keuken tool zal u helpen besparen ruimte in uw lades. In plaats van het kopen van een volledige set van keuken Tang, die u annuleerteken uitsluitend toepassing lepels of vorken dat u al in uw keuken hebt en gebruik ze als een tang.Stap 1: Wat he
Groot in een kleine keuken koken

Groot in een kleine keuken koken

Naar het buitenland gaan was iets dat ik had geen scrupules over. Andere cultuur? Eh, prima. Andere taal? Ik zal het uitzoeken. Maar een of andere manier hebben van een andere keuken was wat mij wierp. Na het doorbrengen van maanden en maanden reorga
Keuken renovatie op een begroting

Keuken renovatie op een begroting

Nou, mijn vrouw en ik kocht een huis, en de keuken moest worden gebracht uit de jaren 80 en in de 21e eeuw, maar we hadden niet $10-15 k om te besteden aan een pro om dat te doen. Dit is onze poging om de beste die we met ongeveer $2000-3000 konden!
Keuken rollen huis

Keuken rollen huis

alles wat u nodig hebt is een paar stroken hout, een rechthoekig stuk hout, een sterke lijm en een paar nails(optional) maken dit stuk. Word lid van de strips om rechthoekige mesh zoals structuren maken en koppelen aan de onderkant van een rechthoeki
Keuken Unit hydrocultuur

Keuken Unit hydrocultuur

Dit Instructable is cool voor mij als ik heb gedaan dit voor een paar jaar nu en love it. Samen met een vriend (die heeft jaren waarde van hydro groeiende ervaring) kwamen we met dit ontwerp die is laag in macht te gebruiken, grote bij het kweken van
Massieve beton-keuken

Massieve beton-keuken

Een vriend van mij gevraagd om hem een massieve betonnen keuken,... in feite hij geschaafd te hebben een keukeneiland in 2 meter met 4 meter... dus ik had om dit te doen... een nieuwe uitdaging ;)Stap 1: Bouw van de framwork / schimmel Dus kader was