Midi_tempo::Midi_tempo( int useconds_per_4_i )
{
useconds_per_4_i_ = useconds_per_4_i;
-// huh, is it not per 4?
-// seconds_per_1_f_ = (Real)useconds_per_4_i_ * 4 / 1e6;
- seconds_per_1_f_ = (Real)useconds_per_4_i_ * 8 / 1e6;
+ seconds_per_1_f_ = (Real)useconds_per_4_i_ * 4 / 1e6;
}
String
return str;
}
+int
+Midi_tempo::useconds_per_4_i()
+{
+ return useconds_per_4_i_;
+}
+
int
Midi_tempo::get_tempo_i( Moment moment )
{
if ( count_32_i != 8 )
warning( String( "#32 in quarter: " ) + String( count_32_i ), 0 );
num_i_ = num_i;
- den_i_ = 2 << den_i;
+ den_i_ = den_i;
clocks_1_i_ = clocks_4_i * 4;
}
Moment
Midi_time::bar_mom()
{
- return Moment( num_i_ ) * Duration_convert::dur2_mom( Duration( den_i_ ) );
+ return Moment( num_i_ ) * Duration_convert::dur2_mom( Duration( 1 << den_i_ ) );
}
int
return clocks_1_i_;
}
-Duration
-Midi_time::i2_dur( int time_i, int division_1_i )
+int
+Midi_time::den_i()
{
- Moment mom = Duration_convert::i2_mom( time_i, division_1_i );
- mom /= sync_f_;
-
- dtor << "\n% (" << time_i << ", " << mom << "): "
- << sync_f_ << endl;
-
- Duration dur = Duration_convert::mom2_dur( mom );
- if ( !dur.type_i_ ) {
- vtor << "\n% resyncing(" << time_i << ", " << mom << "): "
- << sync_f_ << " -> ";
- mom *= sync_f_;
- sync_f_ = Duration_convert::sync_f( sync_dur_, mom );
- vtor << sync_f_ << endl;
- mom /= sync_f_;
- dur = Duration_convert::mom2_dur( mom );
- }
+ return den_i_;
+}
- return dur;
+int
+Midi_time::num_i()
+{
+ return num_i_;
}
String
Midi_time::mudela_str( bool command_mode_bo )
{
String str = "meter { "
- + String( num_i_ ) + "*" + String( den_i_ )
+ + String( num_i_ ) + "*" + String( 1 << den_i_ )
+ " }";
if ( !command_mode_bo )
str = String( '\\' ) + str;
midi_key_p_ = new Midi_key( 0, 0 );
// useconds per 4: 250000 === 60 4 per minute
delete midi_tempo_p_;
- midi_tempo_p_ = new Midi_tempo( 250000 );
+ midi_tempo_p_ = new Midi_tempo( 1000000 );
delete midi_time_p_;
- midi_time_p_ = new Midi_time( 4, 4, 384, 8 );
+ midi_time_p_ = new Midi_time( 4, 2, 24, 8 );
now_i64_ = 0;
bar_i_ = 1;
Moment
My_midi_parser::mom()
{
- return Duration_convert::i2_mom( now_i64_, division_1_i_ );
+ return Moment( now_i64_, Duration::division_1_i_s );
}
void
// running_i64_i64_a_[ channel_i ][ pitch_i ] = -1;
// assert( start_i64 != -1 ); // did we start?
- return new Midi_note( midi_key_p_->notename_str( pitch_i ), midi_time_p_->i2_dur( now_i64_ - start_i64, division_1_i_ ) );
+ Duration dur( 0 );
+ if ( Duration_convert::be_blonde_b_s )
+ dur = Duration_convert::ticks2_dur( (I64)now_i64_ - start_i64 );
+ else
+ dur = Duration_convert::ticks2standardised_dur( (I64)now_i64_ - start_i64 );
+ return new Midi_note( midi_key_p_->notename_str( pitch_i ), dur );
}
int
My_midi_parser::set_division_4( int division_4_i )
{
division_1_i_ = division_4_i * 4;
+ Duration::division_1_i_s = division_1_i_;
if ( division_4_i < 0 )
warning( "seconds iso metrical time" , 0 );
}
}
void
-My_midi_parser::set_tempo( int useconds_i )
+My_midi_parser::set_tempo( int useconds_per_4_i )
{
delete midi_tempo_p_;
- midi_tempo_p_ = new Midi_tempo( useconds_i );
+ midi_tempo_p_ = new Midi_tempo( useconds_per_4_i );
}
void