ScorePlayer


A ScorePlayer is an object which can play a Score. The ScorePlayer keeps track of the position, speed, and filters of the Score. Note that it is perfectly okay to have multiple ScorePlayers playing the same Score at once.

class ScorePlayer {
public:
  typedef UtilPtr<Score> ScorePtr;
  typedef UtilPtr<MidiFilter> MidiFilterPtr;
  static void startMultiple(ScorePlayerPtrArray*);
  static void stopMultiple(ScorePlayerPtrArray*);
  ScorePlayer(ScorePtr);
  ScorePlayer(ScorePtr, void (*func)(const MIDI_msg&));
  ~ScorePlayer();
  void start();
  void stop();
  bool isPlaying() const;
  void setMute(bool);
  bool getMute() const;
  void setLoop(bool);
  bool getLoop() const;
  void rewind();
  void setIndex(int);
  int getIndex() const;
  void setTimeUnscaled(ScoreTime);
  ScoreTime getTimeUnscaled() const;
  void setTimeScaled(ScoreTime);
  ScoreTime getTimeScaled() const;
  void setScale(ScoreScale);
  ScoreScale getScale() const;
  void addFilter(MidiFilterPtr);
  void removeFilter(char*);
  MidiFilterPtr getFilter(char*) const;
};
static void startMultiple(ScorePlayerPtrArray* a)
Causes all of the ScorePlayers listed in a to start playing simultaneously.
static void stopMultiple(ScorePlayerPtrArray* a)
Causes all of the ScorePlayers listed in a to stop playing simultaneously.
ScorePlayer(ScorePtr s)
Creates a new ScorePlayer which can play Score s. The output function is oap->write(). When created, the ScorePlayer is not playing, is not muted, is not looped, has a scale of 1, is positioned at the beginning, and has no filters.
ScorePlayer(ScorePtr s, void (*func)(const MIDI_msg& m))
Creates a new ScorePlayer which can play Score s. The output function is func, which should be a function that plays the MIDI_msg m in some customized way. When created, the ScorePlayer is not playing, is not muted, is not looped, has a scale of 1, is positioned at the beginning, and has no filters.
~ScorePlayer()
Destroys the ScorePlayer. The ScorePlayer stops playing when it is destroyed.
void start()
This causes the ScorePlayer to start playing the Score at the current position. Nothing happens if the ScorePlayer is already playing.
void stop()
This causes the ScorePlayer to stop playing the Score. Nothing happens if the ScorePlayer is not playing.
bool isPlaying()
This function returns 1 if the ScorePlayer is playing and 0 if it is not.
void setMute(bool m)
This function causes the ScorePlayer to be muted (not send out any MIDI_msgs) if the argument is 1, and not be muted if the argument is 0. Note that functions in a Score will be called even if the Score is muted.
bool getMute()
This returns the value set by setMute.
void setLoop(bool l)
This function causes the ScorePlayer to loop (i. e. go back to the beginning when it reaches the end) if the argument is 1, and not loop (i. e. stop playing when it reaches the end) if the argument is 0. It is okay to do this whether the ScorePlayer is currently playing or not.
bool getLoop()
This returns the value set by setLoop.
void rewind()
This moves the ScorePlayer back to the beginning of the Score. Yes, it is okay to do this while the ScorePlayer is playing.
void setIndex(int n)
This moves the ScorePlayer to event number n. Yes, it is okay to do this while the ScorePlayer is playing.
int getIndex()
This returns the current event index.
void setTimeUnscaled(ScoreTime t)
This sets the position of the ScorePlayer to t demimilliseconds from the beginning of the Score, based on the default speed of the Score. It is okay to call this function while the ScorePlayer is playing.
ScoreTime getTimeUnscaled()
This gets the position of the ScorePlayer in demimilliseconds from the beginning of the Score, based on the default speed of the Score.
void setTimeScaled(ScoreTime t)
This sets the position of the ScorePlayer to t demimilliseconds from the beginning of the Score, based on the current ScoreScale of the ScorePlayer. It is okay to call this function while the ScorePlayer is playing.
ScoreTime getTimeScaled()
This gets the position of the ScorePlayer in demimilliseconds from the beginning of the Score, based on the current ScoreScale of the ScorePlayer.
void setScale(ScoreScale s)
This sets the speed of the ScorePlayer. The default durations are multiplied by s to get the actual durations. Therefore, 1 will play the Score at the default speed, .5 will play it twice as fast, 2 will play it twice as slow, etc. And guess what? You can call this function while the ScorePlayer is playing.
ScoreScale getScale()
This returns the scaling factor that was set with setScale.
void addFilter(MidiFilterPtr f)
This member function adds a MidiFilter to the ScorePlayer. If a MidiFilter of the same type already exists (e. g. there is already a Transposer and you try to add another Transposer), then the existing one will be removed.
void removeFilter(char* x)
This member function removes the filter named x (for example, "Transposer") from the ScorePlayer
MidiFilterPtr getFilter(char* x)
This member function returns a pointer to the filter named x, if it exists in the current ScorePlayer, or a null pointer if it does not.

Modified 21 January 1996 pepellet@mit.edu