+#include "context.hh"
+#include "international.hh"
+#include "performer-group.hh"
+#include "warn.hh"
+
+/* Perform a staff. Individual notes should have their instrument
+ (staff-wide) set, so we override play_element ()
+*/
+class Staff_performer : public Performer
+{
+public:
+ TRANSLATOR_DECLARATIONS (Staff_performer);
+ ~Staff_performer ();
+
+protected:
+ virtual void acknowledge_audio_element (Audio_element_info info);
+ virtual void finalize ();
+ virtual void initialize ();
+ void process_music ();
+ void stop_translation_timestep ();
+
+private:
+ string new_instrument_string ();
+ void set_instrument_name (string voice);
+ void set_instrument (int channel, string voice);
+ int get_channel (string instrument);
+ Audio_staff* get_audio_staff (string voice);
+ Audio_staff* new_audio_staff (string voice);
+ Real get_dynamic (string voice);