TapTunes - ett Tap-baserat gränssnitt till iTunes
Mitt system består av följande komponenter:
• 1 Arduino (den som används är en Arduino Mega 2560)
• 1 piezoelektriska givare
• 1 Mega-ohms motstånd
• Set av brödunderläggen som innehåller 3 lysdioder
• 1 USB-A-till-B kabel
• 1 laptop som kör Visual Studios 2010 och iTunes
1Mega-ohms motstånd är att förhindra piezoelektriska sensorn från att skada Indataporten av Arduino. Lysdioderna ger användarfeedback. Orange LED blinkar när användaren kranar sensorn, vilket visar att systemet är aktivt inspelning kranen. Den röda indikatorn blinkar när användaren kranar ett mönster som inte känns igen. Likaså blinkar den gröna lysdioden när en användares mönster av kranar accepteras av systemet.
Systemet utnyttjar såväl som drivs av en USB-kabel ansluter Arduino och den bärbara datorn.
PROGRAMVARA (ARDUINO)
Den programvara som körs på Arduino är en urvattnad version av C++, inspirerad av programspråket bearbetning. Det skrevs med standard Arduino IDE som är tillgänglig online.
Programmet är relativt enkel. Systemet innehåller en matris av lagrade tap mönster som kan matchas. Systemet snurrar i en loop, väntar på första kranen ska identifieras. När detta inträffar systemet markerar den aktuella tiden och väntar på nästa kranen. För varje efterföljande klapp lagras tidsintervallet mellan det och tidigare kranen. Processen fortsätter tills det maximala antalet kranar överskrids, eller ingen kran har upptäckts i en sekund. Klappen är då normaliseras. Detta gör att kranar på olika tempon kan matchas med samma mönster. Normalisering utförs genom att dela varje lagrade intervall av det längsta tidsintervall och multiplicera med 100, därmed omvandla varje intervall till ett heltal mellan 1 och 100.
Tap mönster har tre viktiga kriterier att uppfylla om de anses matchar ett lagrade mönster:
1. båda mönster måste innehålla samma antal kranar
2. användaren intervall kan inte avvika med mer än 25% från motsvarande lagrade intervallet
3. genomsnittet av alla intervaller får inte avvika med mer än 15% från medelvärdet av de lagrade intervallerna.
Om alla dessa villkor är uppfyllda, accepterar systemet mönstret. Systemet sänder sedan index för att mönstret som en enda byte över seriell anslutning av USB-kabeln till ett lyssnande program som körs på den bärbara datorn (i vårt fall, ett C# programmet gränssnitt med iTunes). När byten som sänts, återgår systemet till väntar nya användarmönster tap.
Peka på mönstren för närvarande är:
• En enda tryck
• Två kranar
• Tre enhetliga kranar
• Fyra enhetliga kranar
• En långsam kran följt av två snabba kranar
• Två snabba kranar följt av en långsam kran
• "Rakning och en frisyr, två bitar" mönstret
Denna lista av mönster är lätt anpassningsbara och utbyggbara när en blir bekant med hur mönster är representerade.
PROGRAMVARA (LAPTOP)
Jag valde att skriva laptop-side-program i C# eftersom jag har haft tidigare upplever skriva anpassade gränssnitt med Arduinos i C#. Detta kan enkelt genomföras i andra språk, som språket stöder seriell kommunikation över COM-portar.
C# används Microsoft XNA Skeletten, som normalt används för att utveckla spel, ger en fin, loop-baserade programflödet lämplig för gränssnitt med Arduinos och visar en visuell GUI.
Programmet börjar öppnas en seriell anslutning till Arduino och att skapa ett gränssnitt till iTunes. När dessa är etablerade, avsöker programmet ständigt seriell anslutning för byte. Om det finns byte skall läsas, programmet läser varje som ett heltal och utför motsvarande kommando. Till exempel om byten innehöll nummer 1, växlar då programmet om iTunes spelar eller pausats. Eftersom ett byte innehåller 32 värden, kan totalt 32 enskilda kommandon skrivas ut från Arduino till C# program. I denna grundläggande demo genomförs bara sex kommandon faktiskt.
Den mottagna nummer, kommandon och tillhörande mönster är följande:
0. växla visualiseringar – "Rakning och en frisyr, två bitar"
1. växla spela/paus – en kran
2. nästa låt – två kranar
3. föregående låten-tre enhetliga kranar
4. spola framåt – en långsam kran följt av två snabba kranar
5. rewind – två snabba kranar följt av en långsam kran
6. växla shuffle-fyra enhetliga kranar
C#-gränssnitt med iTunes genom dess COM API. Min visas också en grundläggande GUI som ger information om Itunes's stat, av ståndpunkt i den aktuella låten, och det aktuella spåret namn, artist och album.