Laboration 7 - förslag - Så ska det låta
Gör ett piano som låter och kan känna igen melodier.
Så här kan det se ut.
Steg 1: Grafik
Gör en klaviatur med boxar. Utgå från oktaven som vi byggde
på en av övningarna. Vi gjorde inte den uppgiften på kursen 2010 eller 2011
men lösningen finns här: Piano.java.
Steg 2: Ljud
Innan du sätter igång med ljudet kan det vara bra att starta programmet
audiocontrol i terminalfönstret.
När man trycker på tangenterna med musen ska det låta i högtalarna.
För det krävs förstås en muslyssnare och så några magiska satser för att
trolla fram ljud. Först behövs importraden
import javax.sound.midi.*;
och sedan initierar man så här:
MidiChannel channel;
Synthesizer synthesizer;
try {
synthesizer = MidiSystem.getSynthesizer();
synthesizer.open();
channel = synthesizer.getChannels()[0];
} catch(Exception e){System.out.println(e);}
Nu kan man spela en ton genom att anropa channel.noteOn(ton, styrka)
där ton är ett heltal som anger vilken ton man vill spela och
styrka är ett heltal som anger hur starkt den ska spelas. Ettstrukna
C (i mitten på ett vanligt piano) har nummer 60 och 100 är en rimlig styrka.
När man har tröttnat på ljudet anropar man channel.noteOff(ton).
Steg 3: Melodiigenkännare
I filen barnvisor finns alla svenska barnvisor. Den ser ut
så här:
CCGGAAG
Blinka lilla stjärna
GGGHAAAC
Björnen sover
BEbFCBAbGFEb
Bamse
C#EEC#C#HHA
Alfons Åberg
Programmet ska läsa in filen och lagra alla melodier i en hashtabell.
Om användaren spelar någon av
melodierna så ska hon få reda på det så du måste
komma ihåg dom senaste tonerna användaren spelade och kolla om den
tonföljden finns i hashtabellen.
|