- */
-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 type_str_;
-
- /// what name (or look for this name)
- String id_str_;
-
- virtual MInterval time_int()const;
- virtual ~Music(){}
- void print() const;
- virtual void transpose (Melodic_req const *);
- virtual void translate (Moment dt);
- VIRTUAL_COPY_CONS(Music,Music);
- DECLARE_MY_RUNTIME_TYPEINFO;
- Music();
-protected:
- virtual void do_print() const;
+ 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);