RSS
Language:

Music Cubes

Næste iteration af Music Cubes hedder Aerial Tunes og kan ses her.
Herunder ses “første iteration” på Music Cubes, hvor de blev skabt i et kursus.

(7 uger, Q1, 3. år af IT, 2010)

Denne side omhandler et projekt lavet i kurset Advanced Physical Computing 2010.

Music Cubes playing

Kort om projektet

Music Cubes er udviklet i Advanced Physical Computing, som et eksamensprojekt under emnet “Play”. Projektet gik derudover ud på at lave et fysisk og elektronisk produkt, hvor der skulle lægges vægt på interaktionen og legen, samtidig med at teknologien fra (og udover) kursets pensum skulle benyttes i produktet. Music Cubes er et bud på en helt ny innovativ interaktionsform, som er implementeret i et produkt der fordrer til leg og læring med musik. Med Music Cubes kan man nemlig lege med toners højde, via manipulation af bolde der flyver i luften, og afspille disse toner.

Music Cubes funktionalitet

Hovedfunktionen i Music Cubes er at afspille toner efter hvilken højde nogle flyvende bolde har. Cubes består af to forskellige typer moduler. Hhv. én controller, og et vilkårligt antal kuber.

Controlleren

Controller

Controllerens rolle i det samlede produkt er at styre alle de tilkoblede Music Cubes, forsyne dem med strøm, afspille lyde og modtage brugerinputs. Controlleren er udstyret med et betjeningspanel, og herunder ses hvad hvert input kan gøre:
  • Vippekontakt: starte/tænde og stoppe/slukke Music cubes
  • Afspilningsknap: start eller stop afspilning en sekvens af toner
  • Loopknap: slå loop af sekvensen til eller fra
  • Hastighedsslider: styre afspilningshastigheden af sekvensen
  • Drejekontakt: ændre den overordnede volumen
Derudover finder man på venstre side af controlleren en lineout udgang, der gør det muligt at slutte Music Cubes direkte til musikanlægget/højtalerne i stuen.

Music Cubes

Hver af kuberne i Music Cubes har en bold der kan svæve i luften, pga. en indbygget blæser der holder bolden flyvende via et hul i midten af kuben. Disse bolde kan tages ud af luftstrømmen hvormed blæseren slukkes. Bolden kan så genindsættes og blæseren justerer luftstrømmen således at bolden bliver der hvor man holder bolden. Kuberne er også udstyret med et lys, der indikerer at kubens tone bliver afspillet, og som også bruges til at indikere at en kalibrering er i gang.

Sådan bruger man Music Cubes

Controlleren og alle de tilkoblede Music Cubes startes ved at slå vippekontakten over på “on”. Når dette gøres, kalibreres alle kuberne, og når de er færdige afspilles en lille lyd, hvilket betyder at de nu er klar til at blive brugt. Efter kalibreringen kan boldene sættes i forskellige højder i luften, ved blot at tage fat i bolden og holde den i den ønskede højde. Når man har fat i en bold og holder den i luftstrømmen, imens man justerer højden, afspilles tonen løbende, som man skifter højden (denne funktion er dog ikke implementeret i prototypen endnu). Når man så vil afspille alle de Music Cubes kuber der er koblet til controlleren trykkes på afspil knappen. Derved afspilles tonerne en efter en, i den rækkefølge de er stillet op, fra venstre mod højre. Når den sidste kube er afspillet, eller hvis der trykkes på afspilningsknappen igen, stopper afspilningen. Er loop derimod slået til, starter afspilningen forfra efter at være nået til enden. Derudover kan man justere afspilningshastigheden, dvs. hvor lange tonerne skal være før der skiftes til den næste, vha. hastighedsslideren og man kan skrue op og ned for volumen ved at dreje på volumenstyringen.
Alle funktioner, udover loop til/fra, kan bruges imens en afspilning kører, hvilket gør legen meget flydende. Fx kan man justere højden på en bold/tone lige efter den er blevet afspillet og på den måde lave en ny lyd næste gang afspilningen når til den samme bold. Dette gør det muligt at lave deciderede melodier hvis man er musikalsk og hurtigt nok til at skifte tonerne så de passer.

Herunder ses en video af Music Cubes i aktion, hvor de funktioner, der er implementeret i prototypen, demonstreres.

Metaforen

De flyvende bolde i Music Cubes skal opfattes som en direkte repræsentation af noder. Ligesom med noder bestemmes lyden ud fra hvor højt eller lavt noden er sat. Så hvis noden eller bolden er højt oppe afspilles en lys/høj tone, imens en node eller bold der er langt nede afspilles som en dyb/lav tone. Denne metafor bruger vi for at give en fornemmelse af hvordan musikken ser ud, og det giver også en mulighed for at brugeren kan lære noget om hvordan nodernes højde påvirker lyden. Den runde form på boldene kan også ses som cirklen i en node, hvilket også hjælper til at skabe forbindelsen mellem noder og bolde.

Historien bag

Idéen til den innovative interaktion udsprang fra kravet til projektet, hvilket var at produktet skulle være fysisk og derfor tænkte vi fra start at TUI (Tangible User Interface, se vores Bachelorprojekt for mere information om hvad TUI er og indebærer) var det rigtige sted at starte. Efter utallige artikler faldt vi over et nyt begreb kaldet “Blow displays”, i artiklen “Collaborative Ambient Systems by Blow Displays” af Minakuchi og Nakamura. Heri studerer de hvordan blæsere og vind kan bruges som et Ambient Display (dvs. at vise information fra noget elektronisk der er gemt i miljøet). Med udgangspunkt i begrebet fra artiklen begyndte vi at lede efter implementationer af blow displays, eller ting der kunne være inspireret af det. Vi fandt så en video af en prototype hvor bolde holdes i luften vha. vind fra blæsere, og hvor højden kan styres individuelt for hver enkelt bold. Videoen kan ses her: http://vimeo.com/13059978. Denne, for os, nye form for display interesserede os meget og vi lavede derfor en mindre brainstorm på hvordan det kunne udnyttes i en TUI løsning, hvor boldenes højde også kunne manipuleres fysisk. Herigennem fandt vi frem til at en direkte interaktion med boldene og deres højde ville være en spændende løsning. Og dermed kom vi frem til kerneinteraktionen til Music Cubes, som er noget af det mest interessante ved Music Cubes set ud fra et innovativt synspunkt.

Beskrivelse af Music Cubes

Da Music Cubes blev udviklet i kurset Advanced Physical Computing er der også blevet lagt meget arbejde i det tekniske i Music Cubes. Herunder kan du kort læse om hvad Music Cubes egentlig består af.

Controlleren består af følgende delelementer:

Hovedprint

Hovedprintet består i grove træk af en ATMEGA8 MCU fra atmel, og fungerer som center for kommunikation gennem en rs223, seriel forbindelse til lydkort og kuberne. Gennem denne forbindelse står den for at styre kuberne og sende signaler til lydkortet. Hovedprintet får inputs fra kontrolpanelet, hvor knapperne; standby og play/stop er koblet til MCUens eksterne interrupts og volumenknappen og hastighedsregulatoren er koblet til MCUens analog/digital konverter indgange.

Lydkort

Lydkortet modtager informationer om højderne på de enkelte bolde, og omformer denne information til en tone. For at få bedst mulig lyd ud af Music Cubes, har vi programmeret lydkortet således at den vha. en DAC0808 digital/analog kan genere lydbølger følgende en sinuskurve. Da trigonometriske beregninger er ret tidskrævende på en lille 8Hz MCU, har vi først beregnet sinuskurverne og senere overført dem som opslagstabeller til MCUen.
Lydkortet har en lineout udgang med en udgangsspænding mellem 0 og 0,7 V og en ekstra sikring i form af zenerdioder der sikrer at outputspændingen, selv ved fejl, ikke overstiger 2V.

Strømforsyning

Strømforsyningen er en alm. ATX computerstrømforsyning der kan levere GND, 5V, 12V og -12V. For at denne strømforsyning virker udenfor en alm. computer, er den dog blevet modificeret en smule.

Kontrolpanel

På kassens overside er der placeret hhv. en vippekontakt til at slå standby til og fra, to trykknapper (play/stop og loop), en slider til at justere afspilningshastigheden og en drejekontakt til volumen.

Music Cubes kuberne består af følgende delelementer:

Kasse

Kuberne med blæsere er udformet på samme måde som controlleren, som kuber af størrelsen 27 cm, og passer derfor pænt sammen med controlleren. På toppen af kassen sidder en dyse, som sikrer at luften fra blæseren bliver blæst ud i en ensformig strøm. På bagsiden finder man to stik – hhv. en indgang og en udgang, der sikrer at kuberne kan kobles serielt. De udvendige stik indeholder 5V, GND, +/-12V og serielt RX og TX. Derudover er der på bagsiden boret huller til blæserens indsugning.

Bold

Bolden som kuben blæser op i luften er af opskummet polystyren. Dette materiale er valgt for at bolden kan blive så let som muligt, men samtidig have en fast form.

Hovedprint

I hver af de enkelte kuber sidder der et hovedprint, der næsten er magen til det i controlleren. Dog er der på dette print også monteret en “and-gate”, der sikrer at alle enhederne kan skrive til controlleren. Denne anordning er nødvendig, da al kommunikationen fra de forskellige kuber til controlleren foregår over samme linje og signalet trækkes lavt, når der sendes en besked.
På ATMEGA8 MCU’en har vi skrevet software der sørger for automatisk at kalibrere blæserne ift. luftstrøm/volt, så vi kan indstille den eksakte højde som bolden blæses op i. Mere præcist fungerer dette ved at der under kalibrering oprettes en tabel hvor højde kontra spænding tilført til motoren noteres. Det betyder at når blæseren skal blæse bolden op til en given højde, så slår programmet op i tabellen, og finder den bedst passende voltage tilsvarende den ønskede højde. Den givne værdi konverteres til en 8 bit binær værdi, som sendes ud til motorstyringen.

Motorstyring

Motorstyringen består af en DAC0808 digital til analog converter. Denne omsætter den 8 bit binære værdi, som MCU’en sætter, og omformer den til et analogt signal der i vores kredsløb ligger mellem -12 og 0 volt. For at invertere denne spænding, så den bliver positiv, har vi derefter koblet en operationsforstærker. Da dette signal ikke er særlig kraftigt, og da vi ønsker at kunne styre vores 12V 1A motor, bruges signalet til at styre en LM317 justerbar spændingsregulator, hvorigennem vi så trækker selve blæseren.  For at dette komponent ikke skal overophede har vi beregnet at den skal påmonteres en køleplade med en varmemodstand mellem køleplade og luft på maksimalt 11 C/W)

Radialblæser

For at kunne blæse vores bolde op til en højde på ca. 22 cm, har vi gjort brug af en TMC-0370105 12V Motorrumsventilator. Denne blæser har en kapacitet på 90 CFM og er af typen radialblæser, der sikre at vores luftstrøm bliver jævn og ikke kun løber langs dysens kanter. Blæseren kan fint justeres mellem 5 og 12V og trækker maksimalt lidt over 1 ampere.
I spændingsinterval kan blæseren, med en ordentlig dyse, blæse vores bold op til en højde i intervallet 0-22+ cm.

Afstandsmåler

I den første prototype, og som det fremgår af videoen, har vi brugt en “PING))) Ultrasonic Sensor“ fra parallax til at måle afstanden op til bolden. Dette gør vi ved at omregne den tid det tager for et ultralydssignal at nå fra sensoren, blive reflekteret på bolden og nå tilbage til sensoren igen.
I fremtiden bliver denne sensor dog ombyttet til en IR afstandssensor (GP 2D120J000F) fra SHARP og permanent monteret i kassen.

Lys

På dysen i kassen er der fastmonteret 2 blå power LED’s, som vi kan bruge til at indikere hvornår den enkelte kube afspiller. Under kalibreringen bruges dette lys også til at vise status.