Stap 3: Schets mods
http://code.Google.com/p/Rogue-code/wiki/ToneLibraryDocumentation
In feite is hoe het geluid werken dat de bibliotheek creëert een blokgolf van de opgegeven frequentie. U definieert wat notities gewenste speelde in het begin van de schets. Ook moet u definiëren hoe lang elke noot wordt gespeeld. De foto toont wat neemt nota van dat de bibliotheek is in staat om te genereren.
In dit geval definiëren we een paar deuntjes, [starttune] en [Opmerking]. Wij definiëren ook de duur van elke melodie als duur [] en Duur2 []. Starttune [] melodie is de Mexicaanse Tsechu melodie en de nota [] melodie is de melodie van de lading.
int starttune [] = {NOTE_C4, NOTE_F4, NOTE_C4, NOTE_F4, NOTE_C4, NOTE_F4, NOTE_C4, NOTE_F4, NOTE_G4, NOTE_F4, NOTE_E4, NOTE_F4, NOTE_G4};
int veld Duur2 [] = {100, 200, 100, 200, 100, 400, 100, 100, 100, 100, 200, 100, 500};
int Opmerking [] = {NOTE_C4, NOTE_C4, NOTE_G4, NOTE_C5, NOTE_G4, NOTE_C5};
int [van duur] = {100 100 100, 300, 100, 300};
U kunt een van de notities en duur tijden maken welke bits van muziek die je wilt te hebben gespeeld. De duur times ik speelde rond met tot ze klonk goed voor mij. Maar de duur van 100 bedragen aan een notitie van de 1/8, 200 is een kwartnoot, 300 is in feite een gestippelde kwartnoot, 400 een helft notitie en 500 een gestippelde halve noot. De eenheid speelt via de melodie vrij snel, maar u kunt de controle van de snelheid door het plaatsen van een vertraging in de lus die de melodie speelt. Als u het aantal notities gebruikt in een van de nummers wijzigen zult u wilt bijwerken de sectie waar de melodie wordt gespeeld.
Om te spelen deze muziekstukken springen wij naar deze sectie.
voor (int thisNote = 0; thisNote < 13; thisNote ++) {}
Speel de volgende opmerking:
speakerpin.Play(starttune[thisNote]);
Houd de opmerking:
Als (thisNote == 0 || thisNote == 2 || thisNote == 4 || thisNote == 6)
{
digitalWrite (ledpin [0], hoge);
}
Als (thisNote == 1 || thisNote == 3 || thisNote == 5 || thisNote == 7 || thisNote == 9 || thisNote == 11)
{
digitalWrite (ledpin [1], hoge);
}
Als (thisNote == 8 || thisNote == 12)
{
digitalWrite (ledpin [2], hoge);
}
Als (thisNote == 10)
{
digitalWrite (ledpin [3], hoge);
}
delay(Duration2[thisNote]);
Stop voor de volgende notitie:
speakerpin.stop();
digitalWrite (ledpin [0], laag);
digitalWrite (ledpin [1], laag);
digitalWrite (ledpin [2], laag);
digitalWrite (ledpin [3], laag);
delay(25);
}
We gebruiken een For() verklaring om een lus te doorlopen van de melodie die wij willen spelen. In de "voor (int thisNote = 0; thisNote < 13; thisNote ++) {"lijn het nummer 13 referes aan het aantal noten in de melodie. De code begint bij de eerste noot en genereert de Toon voor de opgegeven duur. Terwijl haar daarbij dat de code is verlichting is een corresponderende LED afhankelijk van wat het merk in de reeks. Zo kunt u gaan en veranderen welke LED is verlichte onder wat opmerking te maken van de lichten dansen zoals u goeddunkt. De vertraging die geplaatst na het uitschakelen van de LED's het tempo van de muziek bepaalt. In dit geval wanneer de 13th note heeft gespeeld beweegt de programma op.
De hoofdmacht van de schets (void loop()) is waar het programma leest de willekeurig gegenereerde matrix en begint de LED's knipperen en het spelen van een notitie. Alle notities die u er opnieuw definiëren moeten worden gedupliceerd in de nietig input() dus dezelfde noot wordt gespeeld terug wanneer je de knoppen.
De Toon te horen wanneer u mist de volgorde die ik als een eenvoudige 2 Opmerking Toon die lus een paar keer gehouden. Dat vindt u in de sectie ongeldig fail() van de schets.