]> git.donarmstrong.com Git - lilypond.git/blob - lily/midi-def.cc
release: 0.1.38
[lilypond.git] / lily / midi-def.cc
1 /*
2   midi-def.cc -- implement Midi_def
3
4   source file of the GNU LilyPond music typesetter
5
6   (c) 1997 Jan Nieuwenhuizen <jan@digicash.com>
7
8 */
9 #include <math.h>
10 #include "misc.hh"
11 #include "midi-def.hh"
12 #include "translator.hh"
13 #include "performance.hh"
14 #include "assoc-iter.hh"
15 #include "score-performer.hh"
16 #include "debug.hh"
17
18 // classes, alphasorted
19 //     statics
20 //     constructors
21 //     destructor
22 //     routines, alphasorted
23
24 Midi_def::Midi_def()
25 {
26   outfile_str_ = ""; 
27   // ugh
28   set_tempo (Moment (1, 4), 60);
29 }
30
31 Midi_def::~Midi_def()
32 {
33 }
34
35 Real
36 Midi_def::duration_to_seconds_f (Moment mom)
37 {
38   if (!mom)
39     return 0;
40   
41   return Moment (whole_in_seconds_mom_) * mom;
42 }
43
44
45 int
46 Midi_def::get_tempo_i (Moment one_beat_mom)
47 {
48   Moment wholes_per_min = Moment(60) /Moment(whole_in_seconds_mom_);
49   int beats_per_min = wholes_per_min / one_beat_mom;
50   return int (beats_per_min);
51 }
52
53 void
54 Midi_def::set_tempo (Moment one_beat_mom, int beats_per_minute_i)
55 {
56   Moment beats_per_second = Moment (beats_per_minute_i) / Moment (60);
57   whole_in_seconds_mom_ = 1/(beats_per_second * one_beat_mom);
58 }
59
60 void
61 Midi_def::print() const
62 {
63 #ifndef NPRINT
64   DOUT << "Midi {";
65   DOUT << "4/min: " << Real (60) / (whole_in_seconds_mom_ * 4);
66   DOUT << "out: " << outfile_str_;
67   DOUT << "}\n";
68 #endif
69 }
70
71
72 IMPLEMENT_IS_TYPE_B1(Midi_def, Music_output_def);