La cuisine polyphonique (6 / 8 étapes)

Étape 6: Le Code : traitement

Dans notre code de traitement, nous avons accroché les contributions reçues du port série à un fichier audio. Si que certains capteurs s’éteint, le son va commencer. Vous pouvez remarquer un léger retard dans le démarrage du son. C’est parce que nous avons il calculé de sorte que les sons débutera sur le rythme et travailler avec eux.

Le fichier zip a les fichiers de données (extraits sonores) et l’esquisse de traitement dans la hiérarchie de dossier correct suffit donc télécharger le fichier zip, extraire le dossier avec son contenant des fichiers et ouvrent l’esquisse de traitement ! (Si quelque chose s’est passé à elle, assurez-vous que le dossier de données et le fichier .pde sont à l’intérieur du dossier portant le même nom que le fichier .pde.)

Notes sur le code :
1) port série défini dans le présent code doit correspondre le port série que vous avez connecté votre Arduino pour. Dans la fonction de réglage, nous avons mis le port variable à un objet série représentant le port qu'il utilisera pour lire les données. Actuellement, elle est définie sur le premier port disponible, mais si cela ne fonctionne pas, remplacez le nom du port votre Arduino connecté au deuxième argument.
2) nous avons préchargés deux genres de musique. Pour basculer entre les deux, vous devez régler le tempo variable et compter le nombre correct, tel que défini dans les commentaires.

Code de traitement :

/*
La cuisine polyphonique
Sara Montoro
Karl Landin
Alice Lee
Pitts de Noah

Université de Californie à Berkeley
CNM290/CS294-85
Fabrication de critique : Matériaux, protocoles et Culture

Laissez-nous un commentaire si vous avez d’autres idées et suggestions !
*/

Import processing.serial.* ;
Import ddf.minim.* ;

int [] mag = {0,0,0,0} ;
int [] pot = {0,0,0,0,0} ; Les potentiomètres ne sont pas stockés dans l’ordre. Le milieu
relié à la broche qu'a3 est réellement injecté dans la série après
tous les autres potentiomètres. Ce sera la dernière valeur de
ce tableau (pot[4]).
float volumeCab ;

mot d’int = 0 ; détecteur de mouvement. (non utilisé)
int cap ;

fichiers audio
String [] chansons ;
Chaîne de 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"} ;

minimStarted booléen = false ;

Si vous souhaitez choisir un genre différent, modifiez le dessous deux variables à celles correspondant à la musique que vous souhaitez.
REGGAE, tempo = 75, count = 1
FLAMENCO, tempo = 120, count = 1
int tempo = 75 ;
int count = 1 ;

int a battu, beatSum, lastMillis, erreur, mspb bps ;

Port série ;

Minim minim ;
AudioPlayer [] joueurs = nouveau AudioPlayer [8] ;

void setup() {}
MSPB = count * 60000/tempo ;
BPS = tempo/60 ;
taille (512, 200, P3D) ;

Remarque : le deuxième argument dans le présent appel doit être le nom du Port série qui
votre Arduino communique avec l’ordinateur par l’intermédiaire. (Sur votre Arduino Sketch,
allez dans Outils > Port série. Le port marqué est celui qui est à l’aide de votre Arudino.)
Pour afficher la liste des ports disponibles, décommenter le seuil.
println(Serial.List()) ;
port = nouvelle série (ce, Serial.list() [0], 9600) ;

être en mesure d’atteindre le répertoire de données
minim = new Minim(this) ;

{Switch(tempo)}
boîte de 100 :
println ("Tempo : 100 - sans médias actuellement disponibles") ;  tempo = 100
rupture ;

cas 120 :
Temp FLAMENCO = 120
chansons = flamenco ;
rupture ;

cas 140 :
println ("Tempo : 140 - non médias actuellement disponibles") ;  tempo = 140
rupture ;

Tempo REGGAE = 75
décision 75 :
chansons = reggae ;
rupture ;
}

LoadFiles du dossier de données et du dossier de croquis
pour (int x = 0; x < songs.length; x ++) {}
les joueurs [x] = minim.loadFile(songs[x]) ;
}

Demander tout de suite les valeurs
port.Write(65) ;

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

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

changer le volume du poêle
pour (int i = 0; i < 4; i ++) {}
Players[i].setGain(Map(float(pot[i]),0,1023,-80,14)) ;
}

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

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

garder le temps musical
if(Millis() > = lastMillis + mspb) {}
lastMillis = millis ()-6 ;
if(Beat == 32) {}
battre = 0 ;
}
erreur = lastMillis % mspb ;
Print(Beat) ;
Print («, » + beatSum) ;
println (", erreur:" erreur + « ms ») ;

pour (int i = 0; i < 4; i ++) {}
Si (mag [i] == 1 & &! players[i+4].isPlaying()) {}
.setLoopPoints de joueurs [1 + 4] (0, 5) ;
Players[i+4].Play(0) ;
println (« joueur » + (i + 4) + « tout a commencé ») ;
}
Players[i+4].setGain(volumeCab) ;
}

Ajouter pour battre les chefs d’accusation
battre = battement + count ;
beatSum = beatSum + count ;
println ("cap:" + Integer.toString(cap)) ;
}
}

Fermez tous les lecteurs audio et minim
stop() Sub {}
pour (AudioPlayer p: joueurs) {}
p.Close() ;
}
minim.Stop() ;
Super.Stop() ;
}

appelée chaque fois qu’il y a quelque chose availble pour lire
void serialEvent(Serial port) {}
Lire les données
Dim input As String = port.readStringUntil('*') ;
Si (entrée! = null) {}
Épissure de la chaîne dans un tableau d’entiers
int [] vals = int (splitTokens (input, ", *")) ;

vérifier que toutes les valeurs sont trouvent
Si (vals.length! = 10) {}
println ("erreur : n’a reçu que" + vals.length + « values. ») ;
retour ;
}

Placer les valeurs dans les variables
Si (cap! = {int(vals[0]))}
Cap = int(vals[0]) ;
marche/arrêt minim
}

pour (int i = 1; i < = 5; i ++) {}
Si (pot [i-1]! = {vals[i])}
Méfiez-vous ! Le potentiomètre central est imprimé en dernier et sera pot [4]
parce que c’était le four de notre prototype et pas un brûleur de cuisinière comme la
autres 4 potentionmeters
pot [i-1] = vals [i] ;
}
}

pour (int i = 6; i < = 9; i ++) {}
Si (mag [i-6]! = {vals[i])}
Mag [i-6] = vals [i] ;
}
}
}
poignée de main
port.Write(65) ;
}

Articles Liés

Minuterie de cuisine Arduino avec une introduction aux interruptions de minuterie

Minuterie de cuisine Arduino avec une introduction aux interruptions de minuterie

Bienvenue sur mon premier instructable,J'ai décidé de faire un projet assez simple d'entrer dans le monde instructable. Ce projet consiste à faire une minuterie de cuisine simple avec un Arduino Uno. Donc je vais donner une petite introduction à l'éc
Grande cuisine Facelift

Grande cuisine Facelift

Donnez à votre cuisine un lifting avec nouvelles portes de coffret.Je vais vous expliquer comment faire la porte rouge sur la photo, avec un pull intégré (manche), que vous pourriez ajouter comme un accent à votre cuisine ou faire assez pour remplace
Sphères juteuse Snack - cuisine facile Science

Sphères juteuse Snack - cuisine facile Science

Il s'agit d'un moyen facile et amusant à jouer avec la nourriture ! Si vous avez des enfants pointilleux, vous pourriez faire des jus de fruits et de légumes et ensuite créer ces gelées « caviar » hors de lui.Il s'agit seulement de deux ingrédients !
Clothes Peg cuisine Hack

Clothes Peg cuisine Hack

Que peut faire un piquet de vêtements dans la cuisine ?Cela peut sembler comme une blague, mais c'est ce que j'ai fait.Étape 1: éléments Quelques pinces à lingeDouble face ruban (ou une colle silicone)ChaîneUn ciseauxVous pouvez facilement obtenir ce
Support de couteau de cuisine

Support de couteau de cuisine

Ma femme voulait une sorte de rabot. Mais nous avons plusieurs différentes sortes et types de couteaux.La première idée était d'acheter un porte-couteau magnétique, mais ces titulaire ne cadrait pas dans notre cuisine... dit ma femme.Donc j'ai constr
Cuisine Coquinas

Cuisine Coquinas

C'est un de mes plats préférés. Coquinas. Certaines personnes appellent Tellina ou Donax Variablilis, son nom scientifique, est une espèce de petite palourde d'eau de mer comestible. C'est une espèce d'eau chaude qui se produit dans des eaux peu prof
Aide de cuisine D4E1

Aide de cuisine D4E1

Ce produit a été créé pour aider les personnes ayant une déficience visuelle qui veut être en mesure de faire cuire à nouveau.Les plus gros problèmes étaient :Détecter où se trouve chaque ustensile de cuisine > œuvres très lentVoir légumes fois sombr
ATRIL PARA cuisine Y pas TUS MANCHAR LIBROS

ATRIL PARA cuisine Y pas TUS MANCHAR LIBROS

Proyecto tiene como objetivo proteger el libro de cocina mientras se cocina. Nations Unies atril por TR sólo levanta el libro de la superficie sucia, sin n'embargo aucun resguarda el libro de las manos sucias. El proyecto investiga la manera de dar v
Savon de cuisine bon matin (café)

Savon de cuisine bon matin (café)

j'ai été prise de savon depuis environ 12 ans. Quand je dis « faire savon » je veux dire vrai savon... pas la glycérine, ou faire fondre et verser genre comme vous acheter de la papeterie (tous si j'ai eu l'occasion de l'utiliser pour certains projet
Déshydrateur, issu d’un placard de la cuisine.

Déshydrateur, issu d’un placard de la cuisine.

Je sais que vous pouvez sortir et acheter un déshydrateur électrique, mais celui-ci peut être construit avec les choses que vous avez déjà et aussi son toujours cool à construire vous-même. Ci-dessus vous y trouverez la partie 3, vidéo que j'ai fait
PVC cuisine Helper Hack

PVC cuisine Helper Hack

Aimé l'idée des aides de cuisine, mais n'a pas apprécié leurs étiquettes de prix. A cherché beaucoup de hacks et la plupart d'entre eux impliqués menuiserie nécessitant des outils supplémentaires ; pas vraiment notre tasse de thé. Puis vint l'aha ! i
Tiroirs de cuisine garde-manger

Tiroirs de cuisine garde-manger

Conduire à travers le quartier, j'ai vu quelques "à vendre" des signes dans les front yard d'un voisin. Je me suis arrêté pour parler avec lui et, étant un ancien entrepreneur général, il avait accumulé quelques vieux outils, dont certains avaie
Pinces de cuisine plat Pack

Pinces de cuisine plat Pack

Cet outil de cuisine vous aidera à économiser de l'espace dans vos tiroirs. Au lieu d'acheter un plein jeu de pinces de cuisine que vous pouvez simplement utiliser des cuillères ou fourchettes que déjà vous avez dans votre cuisine et utilisez comme d
Gros de cuisson dans une petite cuisine

Gros de cuisson dans une petite cuisine

Aller à l'étranger est quelque chose que j'ai n'eu aucun scrupule sur. Culture différente ? Hein, fine. Langue différente ? Je vais le comprendre. Mais ayant en quelque sorte une cuisine différente, c'était ce qui m'a jeté. Après avoir passé des mois