|
|||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object fi.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 BasicMidiPlayer
sequence
- Nuotitpublic void play(String sequence, double length)
play
in interface BasicMidiPlayer
sequence
- Nuotitoctave
- Oktaavipublic 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 BasicMidiPlayer
sequence
- 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 normaalipublic void play(String sequence, double length, int octave)
play
in interface BasicMidiPlayer
public void play(List<Note> notes)
play
in interface BasicMidiPlayer
notes
- 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 BasicMidiPlayer
note
- Nuotti (C-B)
InvalidMidiDataException
public void playSingleNote(String note, double length)
playSingleNote
in interface BasicMidiPlayer
note
- Nuottioctave
- Oktaavi
InvalidMidiDataException
public void playSingleNote(String note, double length, int octave)
playSingleNote
in interface BasicMidiPlayer
note
- Nuottilength
- Kestooctave
- Oktaavi
InvalidMidiDataException
public void playSingleNote(String note, double length, int octave, int velocity)
playSingleNote
in interface BasicMidiPlayer
note
- Nuottilength
- Kestooctave
- Oktaavivelocity
- voimakkuus
InvalidMidiDataException
protected 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 BasicMidiPlayer
bpm
- 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
- voimakkuusprotected 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 |