8-bitars stil melodi kort från Public Domain innehåll (3 / 6 steg)
Steg 3: Att göra Arduino melodier från musikinspelningar
Som förklarade, användes arkivens inspelningar av berömda musik lappar i verkstaden som basis av kort melodier. Den ursprungliga 16 inspelningar var mp3s, och varje av dem användes för att skapa en annan melodi. Du hittar nedan en lista över alla källa inspelningar. Tanken var att skapa mp3s enkla Arduino koder som skulle spela melodier, och att ladda upp dessa på de små och prisvärda ATtiny85s använda Arduino som en ISP programmerare. För att uppnå detta, mp3s konverterades först till MIDI, och slutligen till koden.
Du kanske undrar varför man ska gå om detta komplicerat förfarande - varför inte bara göra Arduino koden direkt? Du kan säkert göra detta. Koden som används för korten är även mycket enkel och består av främst tone() kommandon. En anledning varför melodierna har skapats från mp3-filer var eftersom verkstaden utforskade kreativa möjligheter i att använda kulturarvet innehåll från Europeana, och främst mp3s fanns tillgängliga. En annan orsak till det valda förfarandet var att, medan du spelar med mp3s, jag upptäckte att den brister och oförutsägbara natur av konverteringar i MIDI- och därefter till koden resulterat i ganska härlig överraskning melodier. Så verkade överraskningsmoment som en fördel, snarare än nackdel. Nedan finns melodin generation steg mer i detalj om du är intresserad att veta mer.
Ljud-till-MIDI conversion
Ljud-till-MIDI konverteringen gjordes med Ableton Live (instruktioner på deras hemsida). Istället för att använda hela mp3-inspelning, som vanligen var mycket lång, användes en minut eller så från början. Jag försökte både "Konvertera harmoni till nya MIDI-spår" och "Konvertera melodi till nya MIDI-spår" (under högerklicka) i Ableton för att se vilket resulterade i en mer rolig melodi. Efter detta exporterade jag MIDI-filen. Du kan hitta MIDI filer nedan.
Du kan naturligtvis också hoppa över ljud-till-MIDI konvertering, och använda rätt bort MIDI som källfilen om du vill leka med detta format. Det finns gott om öppet licensierade MIDI filer ute, till exempel på Wikimedia Commons.
Från MIDI till Arduino kod
MIDI till Arduino online verktyg som tillhandahålls av Dominic Canare (CC BY-SA) användes för att konvertera de genererade MIDI-filerna till Arduino kod. Detta verktyg tar alltid MIDI-spår 1 som den som konverteras till kommandona Arduino tonen. De andra MIDI-spår konverteras till digitalWrite() och kan användas t.ex. blinka en LED. På grund av detta, se till att den melodi som du vill ska spelas på spår 1. Jag använde ett open source program som kallas Aria Maestosa redigera MIDI-spår så att jag hade två identiska spår, en numrerad 1 och de andra 2 ("Inställningar" > "Channel management" > "Manuell" Redigera spårnummer). Spår 1 spelades enligt anteckningar och spår 2 kommandon en blinkande lysdiod.
Efter jag hade redigerat spårnumren, jag laddade upp MIDI-filen till verktyget online-konvertering och kopieras producerade koden till min skiss. Koden var oftast för stor för ATtiny, så jag sänkte det från slutet till strax under 8 kilobyte. Konverteringsverktyget skapade också en hel del onödiga kommandorader, så jag städade upp de flesta av extra koden innan du lägger upp det på ATtiny (men inte alla, så koden inte är ett bra exempel på programmering). Melodin var också flyttade in program slingan för att hålla det spelar flera gånger. Du hittar under alla de 16 olika melodi skisserna - som ni kan se de är enkla och består av bara massor och massor av kommandona tone() och digitalWrite(). Du kan säkert göra olika slags kod om du är upp till sund programmering - för melodi kortet viktigaste är att det spelar en melodi eller ett ljud av något slag.
Ladda upp melodierna på ATtiny genom att använda en Arduino
Arduino melodi koderna laddades upp på en ATtiny85 microcontroller med en regelbunden Arduino Uno styrelse som en ISP programmerare. Här är instruktioner av Jeko på hur man programmerar ATtiny85 (eller 45) använder Arduino IDE - kom ihåg att också ladda upp exemplet "Arduino som ISP" på Arduino till få den arbetande. Jag använde först en skärbräda för programmering, men fann att göra en särskild sköld med programmering socket är mycket mer praktiskt. Du kan se en self-made en i bilden.
Som timing kommandon som delay() inte fungerar rakt på ATtiny vid programmering, med en Arduino, tillbringade jag lite tid att justera timing parametrar (främst varaktigheterna förseningar) i Arduino koden för att hitta lämplig hastighet för melodin. Som styrelsen val valde jag "ATtiny85 @ 1MHz (intern oscillator, BOD inaktiverad)" - verkade detta fungera i mitt fall.
En annan fråga som jag stötte på var att jag fick ett felmeddelande när jag försöker ladda upp stora skisser på ATtiny, men löst problemet med den information du hittar i denna tråd.
Lista av Public Domain källkod inspelningarna:
- "Laulu ilman sanoja", komponerad av Toivo Kuulas / The Nationalbiblioteket
- "Don Quichotte del 3", komponerad av Julet Massenet / Sound & Vision
- "Symfoni nr 9 op.125 i d kl.t: Molto vivace", tillsammans med Ludwig van Beethoven / Sound & Vision
- "Allegro från cembalo concerto nr 1 i d kl.t. (BWV.1052) ", tillsammans med Johan Sebastian Bach / Sound & Vision
- "La Traviata: Libiamo", komponerad av Giuseppe Verdi / Sound & Vision
- "Pianokonsert nr.3 op.37 i c kl.t.: Allegro con brio", tillsammans med Ludwig van Beethoven / Sound & Vision
- "Vips från Symfoni nr 22 e-lägenheten (Hob.Gr.I nr 22)", komponerad av Joseph Haydn / Sound & Vision
- "Symfoni nr 4 op.98 i e kl.t.: Allegro energico e passionato", tillsammans med Johannes Brahms / Sound & Vision
- "Etyd nr 7 i cis kl.t. från 12 Etudes op.25 ", tillsammans med Frédéric Chopin / Sound & Vision
- "Symphony nr.29 i en gr.t. KV.203: Minuetto ", tillsammans med Wolfgang Amadeus Mozart / Sound & Vision
- "Han föda skall sin hjord från Messias HWV.56", komponerad av Georg Frederick Handel / Sound & Vision
- "Uppfinning nr.6 i E gr.t.", komponerad av Johann Sebastian Bach / Sound & Vision
- "Symfoni nr.28 i en gr.t. (Hob.Gr.I nr.28) ", tillsammans med Joseph Haydn / Sound & Vision
- "Variationer on.12 i Bes gr.t. från 12 Etudes op.25 ", tillsammans med Frédéric Chopin / Sound & Vision
- "Variationer på Weinen Klagen sorg Zagen (S.180)", komponerad av Franz Liszt / Sound & Vision
- "Symfoni nr 38 i D gr.t. KV.504: Finale (Presto) ", tillsammans med Wolfgang Amadeus Mozart / Sound & Vision