Docjar: A Java Source and Docuemnt Enginecom.*    java.*    javax.*    org.*    all    new    plug-in

Quick Search    Search Deep

jmqt
Class QTCycle  view QTCycle download QTCycle.java

java.lang.Object
  extended byjmqt.QTCycle
All Implemented Interfaces:
java.awt.event.ActionListener, jm.constants.Alignments, javax.swing.event.ChangeListener, jm.constants.DrumMap, jm.constants.Durations, jm.constants.Dynamics, java.util.EventListener, jm.constants.Frequencies, jm.JMC, jm.constants.Noises, jm.constants.Panning, jm.constants.Pitches, jm.constants.ProgramChanges, jm.constants.RhythmValues, jm.constants.Scales, jm.constants.Tunings, jm.constants.Volumes, jm.constants.Waveforms

public final class QTCycle
extends java.lang.Object
implements jm.JMC, javax.swing.event.ChangeListener, java.awt.event.ActionListener

Real Time MIDI playback for jMusic using Apple's QuickTime Java API. To use, create a score and pass it to the constructor of this class then call the startPlayback() method (only once!) to begin looping. Use suspendPlayback() and resumePlayback() to interupt the playback once started. It is the responsibility of the calling app to update the scores as required, and numerous accessor methods are provided to adjust elements of the score or cycle process on the fly. A swing GUI is provided to adjust the scheduling parameters as required. It is initiated by thecalling the settings() method.


Field Summary
private  double anticipationAmt
           
private  int cycleCount
           
private  javax.swing.JLabel gapNumber
           
private  javax.swing.JSlider gapSlider
           
private  java.lang.Thread myThread
           
private  boolean newScoreFlag
           
private  double nextTempo
           
private  java.lang.Object obj
           
private  QTUtil qtu1
           
private  jm.music.data.Score score
           
private  double scoreLength
           
private  javax.swing.JLabel sleepNumber
           
private  javax.swing.JSlider sleepSlider
           
private  javax.swing.JButton startButton
           
private  javax.swing.JButton stopButton
           
private  double tempo
           
private  javax.swing.JLabel tempoNumber
           
private  javax.swing.JSlider tempoSlider
           
private  double time
           
private  javax.swing.Timer timer
           
private  double waitTime
           
 
Fields inherited from interface jm.JMC
AMPLITUDE, DEBUG, DYNAMIC, EIGHT_BIT, FREQUENCY, KEY_SIG_EVT, MONO, NO_DENOMINATOR, NO_INSTRUMENT, NO_KEY_QUALITY, NO_KEY_SIGNATURE, NO_NUMERATOR, OCTAPHONIC, PAN, PITCH, PROG_EVT, QUADRAPHONIC, RHYTHM, SIXTEEN_BIT, STEREO, TEMP_EVT, THIRTY_TWO_BIT, TIME_SIG_EVT, VERBOSE
 
Fields inherited from interface jm.constants.Durations
C, CD, CDD, CROTCHET, CROTCHET_TRIPLET, CT, DC, DDC, DDEN, DDHN, DDM, DDQ, DDQN, DEMI_SEMI_QUAVER, DEMI_SEMI_QUAVER_TRIPLET, DEN, DHN, DM, DOTTED_CROTCHET, DOTTED_EIGHTH_NOTE, DOTTED_HALF_NOTE, DOTTED_MINIM, DOTTED_QUARTER_NOTE, DOTTED_QUAVER, DOTTED_SEMI_QUAVER, DOTTED_SIXTEENTH_NOTE, DOUBLE_DOTTED_CROTCHET, DOUBLE_DOTTED_EIGHTH_NOTE, DOUBLE_DOTTED_HALF_NOTE, DOUBLE_DOTTED_MINIM, DOUBLE_DOTTED_QUARTER_NOTE, DOUBLE_DOTTED_QUAVER, DQ, DQN, DSN, DSQ, DSQT, EIGHTH_NOTE, EIGHTH_NOTE_TRIPLET, EN, ENT, HALF_NOTE, HALF_NOTE_TRIPLET, HN, HNT, M, MD, MDD, MINIM, MINIM_TRIPLET, MT, Q, QD, QDD, QN, QNT, QT, QUARTER_NOTE, QUARTER_NOTE_TRIPLET, QUAVER, QUAVER_TRIPLET, SB, SEMI_QUAVER, SEMI_QUAVER_TRIPLET, SEMIBREVE, SIXTEENTH_NOTE, SIXTEENTH_NOTE_TRIPLET, SN, SNT, SQ, SQD, SQT, THIRTYSECOND_NOTE, THIRTYSECOND_NOTE_TRIPLET, TN, TNT, TSN, TSNT, WHOLE_NOTE, WN
 
Fields inherited from interface jm.constants.Pitches
a0, A0, a1, A1, a2, A2, a3, A3, a4, A4, a5, A5, a6, A6, a7, A7, a8, A8, af0, AF0, af1, AF1, af2, AF2, af3, AF3, af4, AF4, af5, AF5, af6, AF6, af7, AF7, af8, AF8, afn1, AFN1, an1, AN1, as0, AS0, as1, AS1, as2, AS2, as3, AS3, as4, AS4, as5, AS5, as6, AS6, as7, AS7, as8, AS8, asn1, ASN1, b0, B0, b1, B1, b2, B2, b3, B3, b4, B4, b5, B5, b6, B6, b7, B7, b8, B8, bf0, BF0, bf1, BF1, bf2, BF2, bf3, BF3, bf4, BF4, bf5, BF5, bf6, BF6, bf7, BF7, bf8, BF8, bfn1, BFN1, bn1, BN1, bs0, BS0, bs1, BS1, bs2, BS2, bs3, BS3, bs4, BS4, bs5, BS5, bs6, BS6, bs7, BS7, bs8, BS8, bsn1, BSN1, c0, C0, c1, C1, c2, C2, c3, C3, c4, C4, c5, C5, c6, C6, c7, C7, c8, C8, c9, C9, cf0, CF0, cf1, CF1, cf2, CF2, cf3, CF3, cf4, CF4, cf5, CF5, cf6, CF6, cf7, CF7, cf8, CF8, cf9, CF9, cn1, CN1, cs0, CS0, cs1, CS1, cs2, CS2, cs3, CS3, cs4, CS4, cs5, CS5, cs6, CS6, cs7, CS7, cs8, CS8, cs9, CS9, csn1, CSN1, d0, D0, d1, D1, d2, D2, d3, D3, d4, D4, d5, D5, d6, D6, d7, D7, d8, D8, d9, D9, df0, DF0, df1, DF1, df2, DF2, df3, DF3, df4, DF4, df5, DF5, df6, DF6, df7, DF7, df8, DF8, df9, DF9, dfn1, DFN1, dn1, DN1, ds0, DS0, ds1, DS1, ds2, DS2, ds3, DS3, ds4, DS4, ds5, DS5, ds6, DS6, ds7, DS7, ds8, DS8, ds9, DS9, dsn1, DSN1, e0, E0, e1, E1, e2, E2, e3, E3, e4, E4, e5, E5, e6, E6, e7, E7, e8, E8, e9, E9, ef0, EF0, ef1, EF1, ef2, EF2, ef3, EF3, ef4, EF4, ef5, EF5, ef6, EF6, ef7, EF7, ef8, EF8, ef9, EF9, efn1, EFN1, en1, EN1, es0, ES0, es1, ES1, es2, ES2, es3, ES3, es4, ES4, es5, ES5, es6, ES6, es7, ES7, es8, ES8, es9, ES9, esn1, ESN1, f0, F0, f1, F1, f2, F2, f3, F3, f4, F4, f5, F5, f6, F6, f7, F7, f8, F8, f9, F9, ff0, FF0, ff1, FF1, ff2, FF2, ff3, FF3, ff4, FF4, ff5, FF5, ff6, FF6, ff7, FF7, ff8, FF8, ff9, FF9, ffn1, FFN1, fn1, FN1, fs0, FS0, fs1, FS1, fs2, FS2, fs3, FS3, fs4, FS4, fs5, FS5, fs6, FS6, fs7, FS7, fs8, FS8, fs9, FS9, fsn1, FSN1, g0, G0, g1, G1, g2, G2, g3, G3, g4, G4, g5, G5, g6, G6, g7, G7, g8, G8, g9, G9, gf0, GF0, gf1, GF1, gf2, GF2, gf3, GF3, gf4, GF4, gf5, GF5, gf6, GF6, gf7, GF7, gf8, GF8, gf9, GF9, gfn1, GFN1, gn1, GN1, gs0, GS0, gs1, GS1, gs2, GS2, gs3, GS3, gs4, GS4, gs5, GS5, gs6, GS6, gs7, GS7, gs8, GS8, gsn1, GSN1, REST
 
Fields inherited from interface jm.constants.Frequencies
FRQ
 
Fields inherited from interface jm.constants.Tunings
EQUAL, JUST, MEAN, PYTHAGOREAN
 
Fields inherited from interface jm.constants.Volumes
F, FF, FFF, FORTE, FORTISSIMO, MEZZO_FORTE, MEZZO_PIANO, MF, MP, P, PIANISSIMO, PP, PPP, SILENT
 
Fields inherited from interface jm.constants.Panning
PAN_CENTER, PAN_CENTRE, PAN_LEFT, PAN_RIGHT
 
Fields inherited from interface jm.constants.ProgramChanges
AAH, ABASS, AC_GUITAR, ACCORDION, ACOUSTIC_BASS, ACOUSTIC_GRAND, ACOUSTIC_GUITAR, AGOGO, AHHS, ALTO, ALTO_SAX, ALTO_SAXOPHONE, APPLAUSE, ATMOSPHERE, BAG_PIPES, BAGPIPE, BAGPIPES, BANDNEON, BANJO, BARI, BARI_SAX, BARITONE, BARITONE_SAX, BARITONE_SAXOPHONE, BASS, BASSOON, BELL, BELLS, BIRD, BOTTLE, BOTTLE_BLOW, BOWED_GLASS, BRASS, BREATH, BREATHNOISE, BRIGHT_ACOUSTIC, BRIGHTNESS, CALLOPE, CELESTA, CELESTE, CELLO, CGUITAR, CHARANG, CHIFFER, CHIFFER_LEAD, CHOIR, CHURCH_ORGAN, CLAR, CLARINET, CLAV, CLAVINET, CLEAN_GUITAR, CONCERTINA, CONTRA_BASS, CONTRABASS, CRYSTAL, CYMBAL, DGUITAR, DIST_GUITAR, DISTORTED_GUITAR, DOUBLE_BASS, DROPS, DRUM, DX_EPIANO, EBASS, ECHO, ECHO_DROP, ECHO_DROPS, ECHOS, EL_BASS, EL_GUITAR, ELECTRIC_BASS, ELECTRIC_GRAND, ELECTRIC_GUITAR, ELECTRIC_ORGAN, ELECTRIC_PIANO, ELPIANO, ENGLISH_HORN, EPIANO, EPIANO2, FANTASIA, FBASS, FIDDLE, FINGERED_BASS, FLUTE, FRENCH_HORN, FRET, FRET_NOISE, FRETLESS, FRETLESS_BASS, FRETNOISE, FRETS, GLOCK, GLOCKENSPIEL, GMSAW_WAVE, GMSQUARE_WAVE, GOBLIN, GT_HARMONICS, GUITAR, GUITAR_HARMONICS, HALO, HALO_PAD, HAMMOND_ORGAN, HARMONICA, HARMONICS, HARP, HARPSICHORD, HELICOPTER, HONKYTONK, HONKYTONK_PIANO, HORN, ICE_RAIN, ICERAIN, JAZZ_GUITAR, JAZZ_ORGAN, JGUITAR, KALIMBA, KOTO, MARIMBA, METAL_PAD, MGUITAR, MUSIC_BOX, MUTED_GUITAR, MUTED_TRUMPET, NGUITAR, NYLON_GUITAR, OBOE, OCARINA, OGUITAR, OOH, OOHS, ORCHESTRA_HIT, ORGAN, ORGAN2, ORGAN3, OVERDRIVE_GUITAR, PAD, PAN_FLUTE, PANFLUTE, PBASS, PHONE, PIANO, PIANO_ACCORDION, PIC, PICC, PICCOLO, PICKED_BASS, PIPE_ORGAN, PIPES, PITZ, PIZZ, PIZZICATO_STRINGS, POLY_SYNTH, POLYSYNTH, PSTRINGS, RAIN, RECORDER, REED_ORGAN, REVERSE_CYMBAL, RHODES, SAW, SAWTOOTH, SAX, SAXOPHONE, SBASS, SEA, SEASHORE, SFX, SGUITAR, SHAKUHACHI, SHAMISEN, SHANNAI, SITAR, SLAP, SLAP_BASS, SLOW_STRINGS, SOLO_VOX, SOP, SOPRANO, SOPRANO_SAX, SOPRANO_SAXOPHONE, SOUNDEFFECTS, SOUNDFX, SOUNDTRACK, SPACE_VOICE, SQUARE, STAR_THEME, STEEL_DRUM, STEEL_DRUMS, STEEL_GUITAR, STEELDRUM, STEELDRUMS, STR, STREAM, STRINGS, SWEEP, SWEEP_PAD, SYN_CALLIOPE, SYN_STRINGS, SYNTH_BASS, SYNTH_BRASS, SYNTH_CALLIOPE, SYNTH_DRUM, SYNTH_DRUMS, SYNTH_STRINGS, SYNVOX, TAIKO, TELEPHONE, TENOR, TENOR_SAX, TENOR_SAXOPHONE, THUMB_PIANO, THUNDER, TIMP, TIMPANI, TINKLE_BELL, TOM, TOM_TOM, TOM_TOMS, TOMS, TREMOLO, TREMOLO_STRINGS, TROMBONE, TRUMPET, TUBA, TUBULAR_BELL, TUBULAR_BELLS, VIBES, VIBRAPHONE, VIOLA, VIOLIN, VIOLIN_CELLO, VOICE, VOX, WARM_PAD, WHISTLE, WIND, WOODBLOCK, WOODBLOCKS, XYLOPHONE
 
Fields inherited from interface jm.constants.DrumMap
ACOUSTIC_BASS_DRUM, ACOUSTIC_SNARE, BASS_DRUM_1, CABASA, CHINESE_CYMBAL, CLAVES, CLOSED_HI_HAT, COWBELL, CRASH_CYMBAL_1, CRASH_CYMBAL_2, ELECTRIC_SNARE, HAND_CLAP, HI_BONGO, HI_MID_TOM, HI_WOOD_BLOCK, HIGH_AGOGO, HIGH_FLOOR_TOM, HIGH_TIMBALE, HIGH_TOM, LONG_GUIRO, LONG_WHISTLE, LOW_AGOGO, LOW_BONGO, LOW_CONGA, LOW_FLOOR_TOM, LOW_MID_TOM, LOW_TIMBALE, LOW_TOM, LOW_WOOD_BLOCK, MARACAS, MUTE_CUICA, MUTE_HI_CONGA, MUTE_TRIANGLE, OPEN_CUICA, OPEN_HI_CONGA, OPEN_HI_HAT, OPEN_TRIANGLE, PEDAL_HI_HAT, RIDE_BELL, RIDE_CYMBAL_1, RIDE_CYMBAL_2, SHORT_GUIRO, SHORT_WHISTLE, SIDE_STICK, SPLASH_CYMBAL, TAMBOURINE, VIBRASLAP
 
Fields inherited from interface jm.constants.Scales
AEOLIAN_SCALE, BLUES_SCALE, CHROMATIC_SCALE, DIATONIC_MINOR_SCALE, DORIAN_SCALE, HARMONIC_MINOR_SCALE, INDIAN_SCALE, LYDIAN_SCALE, MAJOR_SCALE, MELODIC_MINOR_SCALE, MINOR_SCALE, MIXOLYDIAN_SCALE, NATURAL_MINOR_SCALE, PENTATONIC_SCALE, TURKISH_SCALE
 
Fields inherited from interface jm.constants.Waveforms
COSINE_WAVE, PULSE_WAVE, SABERSAW_WAVE, SAWDOWN_WAVE, SAWTOOTH_WAVE, SINE_WAVE, SQUARE_WAVE, TRIANGLE_WAVE
 
Fields inherited from interface jm.constants.Noises
BROWN_NOISE, FRACTAL_NOISE, SMOOTH_NOISE, STEP_NOISE, WHITE_NOISE
 
Fields inherited from interface jm.constants.Alignments
AFTER, BEFORE, CENTER_ALIGN, CENTER_ON_END, CENTER_ON_START, CENTRE_ALIGN, CENTRE_ON_END, CENTRE_ON_START, END_ON_CENTER, END_ON_CENTRE, END_TOGETHER, START_ON_CENTER, START_ON_CENTRE, START_TOGETHER
 
Constructor Summary
QTCycle()
          Create an empty object ready to add a score to with setScore().
QTCycle(jm.music.data.Score score)
           
 
Method Summary
 void actionPerformed(java.awt.event.ActionEvent ae)
          This method is invoked when an action occurs.
private  void changeGap()
           
private  void changeTempo()
           
 double getAnticipationAmt()
          Report the current loop anticipation time.
 int getCycleCount()
          Report the number of times the cycle method has been run.
 QTUtil getQTUtil()
          provide access to the quicktime utility object used by this class
 double getScoreLength()
          Reports the current score length setting.
 double getTempo()
          Reports the current speed in beats per minute.
private  void playCycle()
          Shedule score playback and score updating when required.
 void resumePlayback()
          If paused, restart playback.
 void setAnticipationAmt(double newGap)
          Update the sleep time value..
 void setCycleCount(int newCount)
          Specify the number ot count cycles from.
 void setNextTempo(double newTempo)
          Specifies the speed in beats per minute.
 void setScore(jm.music.data.Score s)
          Updates the score to be played.
 void setScoreLength(double newLength)
          Specifies the length of a score to be played.
 void setTempo(double newTempo)
          Specifies the speed in beats per minute.
 void setThreadPriority(int newPriority)
          Choose the balance between computing power allocated to music timing compared to other tasks.
 void settings()
          Open a GUI with sliders to adjust the scheduler loading.
 void startPlayback()
          Begin the cycling playback of the scores.
 void stateChanged(javax.swing.event.ChangeEvent e)
          Called by an object to notify the listener that the object's state has changed.
 void suspendPlayback()
          Pause playback.
 boolean tickle(float er, int timer)
           
 void timeChanged(int newTime)
           
 void updateTempo()
          Updates the current speed in beats per minute based on a waiting tempo change.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

myThread

private java.lang.Thread myThread

qtu1

private QTUtil qtu1

obj

private java.lang.Object obj

score

private jm.music.data.Score score

tempo

private double tempo

nextTempo

private double nextTempo

scoreLength

private double scoreLength

waitTime

private double waitTime

anticipationAmt

private double anticipationAmt

cycleCount

private int cycleCount

time

private double time

tempoSlider

private javax.swing.JSlider tempoSlider

sleepSlider

private javax.swing.JSlider sleepSlider

gapSlider

private javax.swing.JSlider gapSlider

tempoNumber

private javax.swing.JLabel tempoNumber

sleepNumber

private javax.swing.JLabel sleepNumber

gapNumber

private javax.swing.JLabel gapNumber

startButton

private javax.swing.JButton startButton

stopButton

private javax.swing.JButton stopButton

newScoreFlag

private boolean newScoreFlag

timer

private javax.swing.Timer timer
Constructor Detail

QTCycle

public QTCycle()
Create an empty object ready to add a score to with setScore().


QTCycle

public QTCycle(jm.music.data.Score score)
Method Detail

startPlayback

public void startPlayback()
Begin the cycling playback of the scores.


playCycle

private void playCycle()
Shedule score playback and score updating when required.


setScoreLength

public void setScoreLength(double newLength)
Specifies the length of a score to be played. Changes the interval between score update calls.


getScoreLength

public double getScoreLength()
Reports the current score length setting.


setScore

public void setScore(jm.music.data.Score s)
Updates the score to be played.


setTempo

public void setTempo(double newTempo)
Specifies the speed in beats per minute.


getTempo

public double getTempo()
Reports the current speed in beats per minute.


setNextTempo

public void setNextTempo(double newTempo)
Specifies the speed in beats per minute.


updateTempo

public void updateTempo()
Updates the current speed in beats per minute based on a waiting tempo change. This prevents gaps or overlaps in the playback which can occur from the use of setTempo() which updates immediatly.


setThreadPriority

public void setThreadPriority(int newPriority)
Choose the balance between computing power allocated to music timing compared to other tasks. There are constants such as Thread.MAX_PRIORITY


setCycleCount

public void setCycleCount(int newCount)
Specify the number ot count cycles from.


getCycleCount

public int getCycleCount()
Report the number of times the cycle method has been run. Useful for counting beats , bars, phrases or whatever chunk of music was passed to this class.


getQTUtil

public QTUtil getQTUtil()
provide access to the quicktime utility object used by this class


resumePlayback

public void resumePlayback()
If paused, restart playback.


suspendPlayback

public void suspendPlayback()
Pause playback.


setAnticipationAmt

public void setAnticipationAmt(double newGap)
Update the sleep time value..


getAnticipationAmt

public double getAnticipationAmt()
Report the current loop anticipation time.


settings

public void settings()
Open a GUI with sliders to adjust the scheduler loading. Used to optimise the timing and efficiecy of the real time QuickTime playback.


stateChanged

public void stateChanged(javax.swing.event.ChangeEvent e)
Description copied from interface: javax.swing.event.ChangeListener
Called by an object to notify the listener that the object's state has changed. The incoming event identifies the source of the event, allowing the listener to differentiate when it is listening for changes in multiple sources.

Specified by:
stateChanged in interface javax.swing.event.ChangeListener

changeTempo

private void changeTempo()

changeGap

private void changeGap()

actionPerformed

public void actionPerformed(java.awt.event.ActionEvent ae)
Description copied from interface: java.awt.event.ActionListener
This method is invoked when an action occurs.

Specified by:
actionPerformed in interface java.awt.event.ActionListener

tickle

public boolean tickle(float er,
                      int timer)

timeChanged

public void timeChanged(int newTime)