v1.01 Codebreakers
The following changes from 1.01beta to 1.01 may cause some applications
to break.
OLD | NEW |
Instrument was a class | Instrument is now an interface |
extends Instrument | extends InstrumentAdapter (InstrumentAdapter is the same as old Instrument class) |
interface BehaviorFunction | interface Behavior |
DefaultBehaviorFunction | UniformRandomBehavior |
interface PlayListener | interface Playable |
addStartListener(PlayListener p) | addStartPlayable(Playable p) |
addRepeatListener(PlayListener p) | addRepeatPlayable(Playable p) |
addStopListener(PlayListener p) | addStopPlayable(Playable p) |
removeAllStartListeners() | removeAllStartPlayables() |
removeAllRepeatListeners() | removeAllRepeatPlayables() |
removeAllStopListeners() | removeAllStopPlayables() |
JMSL.now() used to mean current clock time. | JMSL.realTime() is current clock time. JMSL.now() = realtime + timeadvance |
v1.03 Codebreakers
The following changes from 1.01 to 1.03 may cause some applications
to break.
OLD | NEW/FIX |
Score.getTimeAdvance() and Score.setTimeAdvance() no longer exist | Use JMSL.clock.getAdvance() and JMSL.clock.setAdvance() |
MidiListener did not handle SysEx, now it does. | Classes which implement MidiListener must add a method with
the following signature:
public void handleSysEx(double timeStamp, byte[] data) |
abstract class com.softsynth.jmsl.util.Tuning used to have the following
integer methods:
public abstract double getFrequency(double pitchIndex, int octaveNumber); public abstract double getFrequency(double pitchIndex);
|
New version has double pitchIndex arguments. If your implementations require int, simply cast (int)pitchIndex in your code. |
MusicShapeEditor now implements com.didkovsky.portview.PVPanel, so it is no longer a Component. It is an object whose getComponent() returns either a Swing or AWT compatible component, depending on JMSL.getViewFactory() . Therefore you can expect calls to myContainer.add(myMusicSapeEditor) to break | use add(myMusicShapeEditor.getComponent()) instead |
Dimension limits electively enforced by MusicShape set() now. Defaults to false (not enforced). This may cause some code to generate out of range values if your code was depending on bounds checking | myMusicShape.setConstrainedToLimits(true) to restore old behavior |