#include "event.hh"
#include "warn.hh"
-#include "event.hh"
-
+
Moment
Event::get_length () const
{
set_property ("duration", d ->compressed (m.main_part_).smobbed_copy ());
}
-void
-Event::transpose (Pitch delta)
-{
- /*
- TODO: should change music representation such that
- _all_ pitch values are transposed automatically.
- */
-
- Pitch *p = unsmob_pitch (get_property ("pitch"));
- if (!p)
- return ;
-
- Pitch np = p->transposed (delta);
-
- if (abs (np.get_alteration ()) > DOUBLE_SHARP)
- {
- warning (_f ("Transposition by %s makes alteration larger than two",
- delta.to_string ()));
- }
-
- set_property ("pitch", np.smobbed_copy ());
-}
Pitch
Event::to_relative_octave (Pitch last)
SCM newlist = SCM_EOL;
Pitch *p = unsmob_pitch (pit);
- for (SCM s = l; ly_c_pair_p (s); s = ly_cdr (s))
+ for (SCM s = l; scm_is_pair (s); s = scm_cdr (s))
{
- SCM key = ly_caar (s);
- SCM alter = ly_cdar (s);
- if (ly_c_pair_p (key))
+ SCM key = scm_caar (s);
+ SCM alter = scm_cdar (s);
+ if (scm_is_pair (key))
{
- Pitch orig (scm_to_int (ly_car (key)),
- scm_to_int (ly_cdr (key)),
+ Pitch orig (scm_to_int (scm_car (key)),
+ scm_to_int (scm_cdr (key)),
scm_to_int (alter));
- orig =orig.transposed (*p);
+ orig = orig.transposed (*p);
SCM key = scm_cons (scm_int2num (orig.get_octave ()),
scm_int2num (orig.get_notename ()));
Pitch orig (0, scm_to_int (key), scm_to_int (alter));
orig = orig.transposed (*p);
- key =scm_int2num (orig.get_notename ());
+ key = scm_int2num (orig.get_notename ());
alter = scm_int2num (orig.get_alteration ());
newlist = scm_cons (scm_cons (key, alter), newlist);
}
Key_change_ev::transpose (Pitch p)
{
SCM pa = get_property ("pitch-alist");
-
set_property ("pitch-alist", ly_transpose_key_alist (pa, p.smobbed_copy ()));
- Pitch tonic = *unsmob_pitch (get_property ("tonic"));
- set_property ("tonic",
- tonic.smobbed_copy ());
+
+ Event::transpose (p);
}
bool
alist_equal_p (SCM a, SCM b)
{
for (SCM s = a;
- ly_c_pair_p (s); s = ly_cdr (s))
+ scm_is_pair (s); s = scm_cdr (s))
{
- SCM key = ly_caar (s);
- SCM val = ly_cdar (s);
+ SCM key = scm_caar (s);
+ SCM val = scm_cdar (s);
SCM l = scm_assoc (key, b);
if (l == SCM_BOOL_F
- || !ly_c_equal_p ( ly_cdr (l), val))
+ || !ly_c_equal_p ( scm_cdr (l), val))
return false;
}