Permit setting tempo from (bar) range.

This commit is contained in:
Jonathan Moore Liles 2008-05-31 20:54:01 -05:00
parent 18800a97d9
commit 08e50292c8
2 changed files with 29 additions and 8 deletions

View File

@ -161,6 +161,17 @@ Timeline::menu_cb ( Fl_Widget *w, void *v )
((Timeline*)v)->menu_cb( (Fl_Menu_*)w );
}
void
Timeline::fix_range ( void )
{
if ( p1 > p2 )
{
nframes_t t = p2;
p2 = p1;
p1 = t;
}
}
void
Timeline::menu_cb ( Fl_Menu_ *m )
{
@ -189,22 +200,30 @@ Timeline::menu_cb ( Fl_Menu_ *m )
Loggable::block_end();
}
else if ( ! strcmp( picked, "Tempo from range" ) )
else if ( ! strcmp( picked, "Tempo from range (beat)" ) )
{
if ( p1 != p2 )
{
if ( p1 > p2 )
{
nframes_t t = p2;
p2 = p1;
p1 = t;
}
fix_range();
beats_per_minute( p1, sample_rate() * 60 / (float)( p2 - p1 ) );
p2 = p1;
}
}
else if ( ! strcmp( picked, "Tempo from range (bar)" ) )
{
if ( p1 != p2 )
{
fix_range();
position_info pi = solve_tempomap( p1 );
beats_per_minute( p1, sample_rate() * 60 / (float)( ( p2 - p1 ) / pi.beats_per_bar ) );
p2 = p1;
}
}
else if ( ! strcmp( picked, "Playhead to mouse" ) )
{
int X = Fl::event_x() - Track::width();
@ -322,7 +341,8 @@ Timeline::Timeline ( int X, int Y, int W, int H, const char* L ) : Fl_Overlay_Wi
/* menu->add( "Add Track", 0, 0, 0 ); */
menu->add( "Add Audio Track", 'a', 0, 0 );
menu->add( "Tempo from range", 't', 0, 0 );
menu->add( "Tempo from range (beat)", 't', 0, 0 );
menu->add( "Tempo from range (bar)", FL_CTRL + 't', 0, 0 );
menu->add( "Playhead to mouse", 'p', 0, 0 );
menu->add( "P1 to mouse", '[', 0, 0 );
menu->add( "P2 to mouse", ']', 0, 0 );

View File

@ -101,6 +101,7 @@ class Timeline : public Fl_Overlay_Window, public RWLock
void cb_scroll ( Fl_Widget *w );
static void menu_cb ( Fl_Widget *w, void *v );
void menu_cb ( Fl_Menu_ *m );
void fix_range ( void );
int _fpp; /* frames per pixel, power of two */