- */
-class Music:public Input {
-public:
- Music_list * parent_music_l_;
-
- /** The kind of iterator needed to walk this music. This doesn't
- make sense for simple (ie non-list) music, but it does no harm
- here. Yes, it did harm Music_list: you can forget to copy it.
-
- */
- String translator_type_str_;
-
- /// what name (or look for this name)
- String translator_id_str_;
-
- virtual Musical_pitch to_relative_octave (Musical_pitch);
- virtual MInterval time_int() const;
- virtual ~Music(){}
- void print() const;
- virtual void transpose (Musical_pitch );
- virtual void translate (Moment dt);
- VIRTUAL_COPY_CONS(Music,Music);
- DECLARE_MY_RUNTIME_TYPEINFO;
- Music();
+ bool internal_is_music_type (SCM) const;
+
+ Stream_event *to_event () const;
+
+ DECLARE_SCHEME_CALLBACK (relative_callback, (SCM, SCM));
+ Pitch to_relative_octave (Pitch);
+ Pitch generic_to_relative_octave (Pitch);
+ Moment get_length () const;
+ Moment start_mom () const;
+ void print () const;
+
+ /// Transpose, with the interval central C to #p#
+ void transpose (Pitch p);
+
+ /// Scale the music in time by #factor#.
+ void compress (Moment factor);
+
+ // Broadcast the event in a context's event-source.
+ void send_to_context (Context *c);
+
+ DECLARE_SCHEME_CALLBACK (duration_length_callback, (SCM));
+
+protected:
+ virtual SCM copy_mutable_properties () const;
+ virtual void type_check_assignment (SCM, SCM) const;
+ virtual void derived_mark () const;