|
|||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||
java.lang.Objectfi.jyu.mit.Music.MidiPlayer
public class MidiPlayer
MidiPlayer-luokka sisältää varsinaisen äänijärjestelmän yksinkertaisen MIDI-datan toistoa varten. äänijärjestelmä kykenee soittamaan yhdellä instrumentilla nuoteista koostuvaa soittoa. Kaikki GM-1 standardin tukemat instrumentit ovat käytässä. Standardin määritykset läytyvät spesifikaatiosta. Oktaavi, ks: esim: http://fi.wikipedia.org/wiki/Oktaavi
BufferedMidiPlayer| Nested Class Summary | |
|---|---|
static class |
MidiPlayer.NoteDuration
Nuotin kestot tahdin desimaaliosissa. |
| Field Summary | |
|---|---|
static String[] |
ALLNOTES
Lista nuoteista. |
static String |
basicNotes
|
static String |
basicNotes2
|
protected MidiChannel[] |
channels
Taulukko midikanavia varten. |
protected int |
currentChannel
Nykyinen käytässä oleva kanava. |
static int |
DEFOCTAVE
|
static int |
DEFVELOCITY
|
static String |
DELAYST
|
protected Instrument[] |
instruments
Taulukko instrumentteja varten. |
protected Synthesizer |
synth
Syntetisaattori. |
| Constructor Summary | |
|---|---|
MidiPlayer()
Muodostaa äänijärjestelmän. |
|
MidiPlayer(boolean init)
Muodostaa äänijärjestelmän, kuitenkaan syntetisaattoria alustamatta. |
|
| Method Summary | |
|---|---|
protected void |
channelOff(int note)
Sulkee kanavalta nuotin. |
protected void |
channelOn(int note,
int velocity)
Avaa kanavalta nuotin. |
protected void |
checkSynth(String origin)
Tulostaa virheviestin. |
protected void |
error(String msg)
Tulostaa virheviestin ja lopettaa ohjelman. |
protected int |
getBeatLength()
|
int |
getDefOctave()
|
int |
getInstrument()
|
int |
getInstrumentIndex(String regexp)
Etsii ensimmäisen instrumentin jonka nimi täsmää hakuehtoon |
List<Note> |
getNotes(String sequence,
double length,
int defaultOctave,
int velocity)
Jäsentää merkkijonon nuotit & tauot yksittäisiksi nuotteiksi. |
int |
getTempo()
|
int |
getVelocity()
|
void |
init()
Alustaa MIDI-syntetisaattorin. |
boolean |
isVerbose()
|
Note |
makeNote(String note,
double length,
int octave)
Muuntaa nuotin, oktaavin ja voimakkuuden Note-luokan alkioksi. |
Note |
makeNote(String note,
double length,
int octave,
int velocity)
Muuntaa nuotin, oktaavin ja voimakkuuden Note-luokan alkioksi. |
protected void |
message(String msg)
Tulostaa viestin mikäli viestintulostus on päällä. |
void |
midiEndNote(int note,
int length,
int velocity)
Aloittaa kanavalta MIDI-nuotin (21-108). |
void |
midiSoundNote(int note,
int length,
int velocity)
Soittaa kanavalta MIDI-nuotin (21-108). |
void |
midiStartNote(int note,
int length,
int velocity)
Aloittaa kanavalta MIDI-nuotin (21-108). |
void |
play(List<Note> notes)
Soittaa nuotit nuottien listasta |
void |
play(String sequence)
Toistaa nuotteja. |
void |
play(String sequence,
double length)
Toistaa nuotteja tietyssä oktaavissa neljäsosanuotteina. |
void |
play(String sequence,
double length,
int octave)
|
void |
play(String sequence,
double length,
int octave,
int velocity)
Toistaa merkkijonon neljäsosanuotteja perusoktaavissa (4), esim. |
void |
playAsciiFile(String filename)
Toistaa ASCII-tiedoston. |
void |
playMidiFile(String filename)
Soittaa valitun midi-tiedoston ja odottaa soiton loppumista. |
Sequencer |
playMidiFileAsync(String filename)
Toistaa MIDI-tiedoston niin että ohjelma vi jatkaa muita tehtäviä. |
void |
playSingleNote(String note)
Toistaa neljäsosanuotin neljännessä oktaavissa. |
void |
playSingleNote(String note,
double length)
Toistaa nuotin neljännessä oktaavissa. |
void |
playSingleNote(String note,
double length,
int octave)
Toistaa minkä tahansa kestoisen nuotin tietyssä oktaavissa. |
void |
playSingleNote(String note,
double length,
int octave,
int velocity)
Toistaa minkä tahansa kestoisen nuotin tietyssä oktaavissa. |
void |
printInstruments()
Tulostaa kaikkien instrumenttien nimet |
void |
printSequence(Sequence song)
|
protected void |
rest(int barLength)
Toistaa mielivaltaisen tauon. |
void |
selectChannel(int channel)
Valitsee kanavan. |
void |
setDefOctave(int defocatve)
|
void |
setInstrument(int instrument)
Vaihtaa instrumentin. |
void |
setInstrument(int instrument,
int def)
Vaihtaa instrumentin. |
void |
setTempo(int bpm)
Asettaa tempon. |
void |
setVelocity(int velocity)
Asetetaan nopeus jolla "kosketinta lyödään" |
void |
setVerbose(boolean set)
Debug-viestit päälle/pois |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Field Detail |
|---|
public static final int DEFVELOCITY
public static final int DEFOCTAVE
public static final String DELAYST
public static final String[] ALLNOTES
public static final String basicNotes
public static final String basicNotes2
protected MidiChannel[] channels
protected int currentChannel
protected Instrument[] instruments
protected Synthesizer synth
| Constructor Detail |
|---|
public MidiPlayer()
public MidiPlayer(boolean init)
init - Alustustehto. Jos true, niin syntetisaattori käynnistetään, jos false, niin ei.| Method Detail |
|---|
public int getDefOctave()
public void setDefOctave(int defocatve)
public final List<Note> getNotes(String sequence,
double length,
int defaultOctave,
int velocity)
sequence - Merkkijono nuoteista, esim. C#5defaultOctave - Oletusoktaavi, jossa nuotit soitetaan, jos niille ei annettu oktaavialength - Yksittäisen nuotin pituus jos nuotille ei erikeen ole annettu pituuttavelocity - voimakkuus, 64 on perus
#import java.util.*; MidiPlayer mp = new MidiPlayer(); Listnotes; notes = mp.getNotes("-b -/4 -#*",0.25,4,64); // - = tauko, ylennys tai alennus ei haittaa notes.get(0).isDelay() === true; notes.get(1).isDelay() === true; notes.get(2).isDelay() === true; notes.get(0).getLength() === 500; notes.get(1).getLength() === 125; notes.get(2).getLength() === 1000; notes = mp.getNotes("C/E/4D*F*4A.F*1.2",0.25,4,64); // /nro jakaa pituuden, *nro kertoo notes.get(0).isDelay() === false; notes.get(0).getLength() === 250; // / yksin on sama kuin /2 notes.get(1).getLength() === 125; // /4 jakaa pituuden 4:llä notes.get(2).getLength() === 1000; // * yksin on sama kuin *2 notes.get(3).getLength() === 2000; // *4 kertoo pituuden 4:llä notes.get(4).getLength() ~~~ 500*1.5; // kerrotaan pituus 1.5:lla notes.get(5).getLength() ~~~ 500*1.2; // ja 1.2lla notes = mp.getNotes("C C# D D# E F F# G G# A Bb B",0.25,4,64); // oktaavin kaikki nuotit for (int i=0; i<12; i++) { notes.get(i).getNote() === 60 + i; } notes = mp.getNotes("c c# d d# e f f# g g# a Bb B",0.25,4,64); // samat pienillä (paitsi B) for (int i=0; i<12; i++) { notes.get(i).getNote() === 60 + i; } notes = mp.getNotes("C Db D Eb E F Gb | G Ab A A# B",0.25,4,64); // ylennetään "eritavalla" for (int i=0; i<12; i++) { notes.get(i).getNote() === 60 + i; } notes = mp.getNotes("HBhbBb",0.25,4,64); // H ja B ovat synonyymejä notes.get(0).getNote() === notes.get(1).getNote() notes.get(2).getNote() === notes.get(3).getNote() notes = mp.getNotes("C1C2C3C4C5C6C7C8",0.25,4,64); // kokeillaan C:tä eri oktaaveista notes.get(0).getNote() === 60 - 3*12 notes.get(1).getNote() === 60 - 2*12 notes.get(2).getNote() === 60 - 1*12 notes.get(3).getNote() === 60 - 0*12 notes.get(4).getNote() === 60 + 1*12 notes.get(5).getNote() === 60 + 2*12 notes.get(6).getNote() === 60 + 3*12 notes.get(7).getNote() === 60 + 4*12 notes = mp.getNotes("E# F H# C5",0.25,4,64); notes.get(0).getNote() === notes.get(1).getNote() notes.get(2).getNote() === notes.get(3).getNote() notes = mp.getNotes("A#3* Hb3*",0.25,4,64); // Ylennetty A on sama kuin alennettu H molemmat 2* notes.get(0).getNote() === notes.get(1).getNote() notes.get(0).getLength() === notes.get(1).getLength()
public void init()
MidiUnavailableException
InvalidMidiDataException
public final Note makeNote(String note,
double length,
int octave,
int velocity)
note - Nuotti tekstimuodossa, esim. C# tai Bblength - Nuotin pituus tahdin kokonaisosinaoctave - Oktaavi (0-8)velocity - voimakkuus, 64 on normaali
Note
MidiPlayer mp = new MidiPlayer();
Note note;
note = mp.makeNote("C",0.5,4,64);
note.getLength() === 1000;
note.getNote() === 60;
note = mp.makeNote("C#",0.5,4,64); // korotus
note.getNote() === 61;
note = mp.makeNote("H#",0.5,4,64); // korotettu H on seuraava C
note.getNote() === 72;
note = mp.makeNote("Bb",0.5,4,64); // Alennettu B (H)
note.getNote() === 70;
note = mp.makeNote("-",0.5,4,64); // Tauko
note.isDelay() === true;
note = mp.makeNote("-#",0.5,4,64); // Tauko, ylennys ei haittaa
note.isDelay() === true;
note = mp.makeNote("-b",0.5,4,64); // Tauko, alennus ei haittaa
note.isDelay() === true;
public final Note makeNote(String note,
double length,
int octave)
note - Nuotti tekstimuodossa, esim. "C#"length - Nuotin pituus tahdin kokonaisosinaoctave - Oktaavi (0-8)
public void midiSoundNote(int note,
int length,
int velocity)
note - Nuotti (21-108)length - Kesto millisekunteinavelocity - Nuotin nk. painovoimakkuus. Oletus on 64.
public void midiStartNote(int note,
int length,
int velocity)
note - Nuotti (21-108)length - Kesto millisekunteinavelocity - Nuotin nk. painovoimakkuus. Oletus on 64.
public void midiEndNote(int note,
int length,
int velocity)
note - Nuotti (21-108)length - Kesto millisekunteinavelocity - Nuotin nk. painovoimakkuus. Oletus on 64.public void play(String sequence)
play in interface BasicMidiPlayersequence - Nuotit
public void play(String sequence,
double length)
play in interface BasicMidiPlayersequence - Nuotitoctave - Oktaavi
public void play(String sequence,
double length,
int octave,
int velocity)
Esim:
C#A on ylennetty C ja A, oktaavista 4, kesto perusnuotin verran (yleensä siis 1/4 nuotti)
C5 C 5:stä oktaavista
C*2 on perusnuottia 2 pidempi nuotti (yleensä siis puolinuotti)
C/4 C jonka kesto on 1/4 perusnuotista (siis 1/16 nuotti yleensä)
A/ A jonka kesto on puoleta perusnuotista (yleensä siis 1/8 nuotti)
C#5*4 4 kertaa normaali pidempi ylennetty C 5. oktaavista
D. 1.5 kertaa normaalia pidempi D, eli sama kuin D*1.5
play in interface BasicMidiPlayersequence - Nuotit merkkijonona, jonossa olevat välilyönnit ja | eivät haittaa
kunhan niitä ei laiteta nuotin sisälleoctave - Oletusoktaavi. Jos nuotille ei ole omaa oktaavia, käytettään tätälength - Yksittäisen nuotin kesto, tähän suhteutetaan muut jonon nuotitvelocity - voimakkuus, 64 on normaali
public void play(String sequence,
double length,
int octave)
play in interface BasicMidiPlayerpublic void play(List<Note> notes)
play in interface BasicMidiPlayernotes - soitettavat nuotitpublic void playAsciiFile(String filename)
filename - public Sequencer playMidiFileAsync(String filename)
filename - Tiedoston nimi, oltava midi-tiedosto
public void playMidiFile(String filename)
filename - public void printSequence(Sequence song)
public void playSingleNote(String note)
playSingleNote in interface BasicMidiPlayernote - Nuotti (C-B)
InvalidMidiDataException
public void playSingleNote(String note,
double length)
playSingleNote in interface BasicMidiPlayernote - Nuottioctave - Oktaavi
InvalidMidiDataException
public void playSingleNote(String note,
double length,
int octave)
playSingleNote in interface BasicMidiPlayernote - Nuottilength - Kestooctave - Oktaavi
InvalidMidiDataException
public void playSingleNote(String note,
double length,
int octave,
int velocity)
playSingleNote in interface BasicMidiPlayernote - Nuottilength - Kestooctave - Oktaavivelocity - voimakkuus
InvalidMidiDataExceptionprotected void rest(int barLength)
barLength - tauon pituus mspublic void selectChannel(int channel)
channel - Kanava väliltä 1-16.public void setInstrument(int instrument)
instrument - Instrumentti väliltä 1-128.public int getInstrument()
public void setInstrument(int instrument,
int def)
instrument - Instrumentti väliltä 1-128.def - Oletusarvo mitä käytetään jos annettu indeksi on väärinpublic void setTempo(int bpm)
setTempo in interface BasicMidiPlayerbpm - public int getTempo()
public void setVelocity(int velocity)
velocity - lyöntinopeus, 64 on normaalipublic int getVelocity()
public void setVerbose(boolean set)
protected void channelOff(int note)
note - nuottivelocity - voimakkuus
protected void channelOn(int note,
int velocity)
note - nuottivelocity - voimakkuusprotected void checkSynth(String origin)
origin - Kutsuva metodiprotected void error(String msg)
msg - Viestiprotected final int getBeatLength()
protected void message(String msg)
msg - Viestipublic void printInstruments()
public int getInstrumentIndex(String regexp)
regexp -
public boolean isVerbose()
|
|||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||