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. Följande program kan vara till hjälp
att starta med. Några tidigare kursomgångar har haft det som uppgift
på en av övningarna. Programmet använder BoxLayout , en flexibel
LayoutManager som vi inte tagit upp tidigare i kursen. 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
En fil som lagrar starttonföljd och namn för några kända barnvisor
kan se ut så här:
CCGGAAG
Blinka lilla stjärna
GGGHAAAC
Björnen sover
BEbFCBAbGFEb
Bamse
C#EEC#C#HHA
Alfons Åberg
Låt programmet läsa in en sån fil och lagra alla melodier i en hashtabell.
Utvidga gärna med fler melodier!
Om användaren spelar någon av melodierna så ska hon få reda på det
så du måste komma ihåg de senaste tonerna användaren spelade och
kolla om den tonföljden finns i hashtabellen.
|