@@ -78,7 +78,7 @@ Audio_Sequence::set ( Log_Entry &e ) | |||
assert( t ); | |||
t->track( this ); | |||
t->sequence( this ); | |||
} | |||
else if ( ! strcmp( ":name", s ) ) | |||
name( v ); | |||
@@ -50,7 +50,7 @@ float Disk_Stream::seconds_to_buffer = 2.0f; | |||
counts.*/ | |||
size_t Disk_Stream::disk_io_kbytes = 256; | |||
Disk_Stream::Disk_Stream ( Track *th, float frame_rate, nframes_t nframes, int channels ) : _th( th ) | |||
Disk_Stream::Disk_Stream ( Track *track, float frame_rate, nframes_t nframes, int channels ) : _track( track ) | |||
{ | |||
assert( channels ); | |||
@@ -83,7 +83,7 @@ Disk_Stream::~Disk_Stream ( ) | |||
/* it isn't safe to do all this with the RT thread running */ | |||
engine->lock(); | |||
_th = NULL; | |||
_track = NULL; | |||
sem_destroy( &_blocks ); | |||
@@ -148,10 +148,16 @@ Disk_Stream::shutdown ( void ) | |||
_terminate = false; | |||
} | |||
Track * | |||
Disk_Stream::track ( void ) const | |||
{ | |||
return _track; | |||
} | |||
Audio_Sequence * | |||
Disk_Stream::track ( void ) | |||
Disk_Stream::sequence ( void ) const | |||
{ | |||
return (Audio_Sequence*)_th->track(); | |||
return (Audio_Sequence*)_track->sequence(); | |||
} | |||
/** start Disk_Stream thread */ | |||
@@ -42,7 +42,7 @@ protected: | |||
pthread_t _thread; /* io thread */ | |||
Track *_th; /* Track we belong to */ | |||
Track *_track; /* Track we belong to */ | |||
nframes_t _nframes; /* buffer size */ | |||
@@ -62,7 +62,8 @@ protected: | |||
int channels ( void ) const { return _rb.size(); } | |||
Audio_Sequence * track ( void ); | |||
Audio_Sequence * sequence ( void ) const; | |||
Track * track ( void ) const; | |||
static void *disk_thread ( void *arg ); | |||
@@ -71,7 +71,7 @@ Playback_DS::read_block ( sample_t *buf, nframes_t nframes ) | |||
// printf( "IO: attempting to read block @ %lu\n", _frame ); | |||
if ( ! track() ) | |||
if ( ! sequence() ) | |||
{ | |||
// _frame += _nframes; | |||
return; | |||
@@ -79,7 +79,7 @@ Playback_DS::read_block ( sample_t *buf, nframes_t nframes ) | |||
timeline->rdlock(); | |||
if ( track()->play( buf, _frame, nframes, channels() ) ) | |||
if ( sequence()->play( buf, _frame, nframes, channels() ) ) | |||
_frame += nframes; | |||
else | |||
/* error */; | |||
@@ -213,7 +213,7 @@ Playback_DS::process ( nframes_t nframes ) | |||
for ( int i = channels(); i--; ) | |||
{ | |||
void *buf = _th->output[ i ].buffer( nframes ); | |||
void *buf = track()->output[ i ].buffer( nframes ); | |||
if ( jack_ringbuffer_read( _rb[ i ], (char*)buf, block_size ) < block_size ) | |||
{ | |||
@@ -223,7 +223,7 @@ Playback_DS::process ( nframes_t nframes ) | |||
} | |||
/* TODO: figure out a way to stop IO while muted without losing sync */ | |||
if ( _th->mute() || ( Track::soloing() && ! _th->solo() ) ) | |||
if ( track()->mute() || ( Track::soloing() && ! track()->solo() ) ) | |||
buffer_fill_with_silence( (sample_t*)buf, nframes ); | |||
} | |||
@@ -38,12 +38,12 @@ Record_DS::write_block ( sample_t *buf, nframes_t nframes ) | |||
{ | |||
/* stupid chicken/egg */ | |||
if ( ! ( timeline && track() ) ) | |||
if ( ! ( timeline && sequence() ) ) | |||
return; | |||
// timeline->wrlock(); | |||
_th->write( buf, nframes ); | |||
track()->write( buf, nframes ); | |||
_frames_written += nframes; | |||
@@ -201,7 +201,7 @@ Record_DS::start ( nframes_t frame ) | |||
_frame = frame; | |||
_th->record( frame ); | |||
track()->record( frame ); | |||
run(); | |||
@@ -231,7 +231,7 @@ Record_DS::stop ( nframes_t frame ) | |||
/* FIXME: flush buffers here? */ | |||
_th->stop( frame ); | |||
track()->stop( frame ); | |||
DMESSAGE( "recording finished" ); | |||
} | |||
@@ -252,7 +252,7 @@ Record_DS::process ( nframes_t nframes ) | |||
for ( int i = channels(); i--; ) | |||
{ | |||
void *buf = _th->input[ i ].buffer( nframes ); | |||
void *buf = track()->input[ i ].buffer( nframes ); | |||
if ( jack_ringbuffer_write( _rb[ i ], (char*)buf, block_size ) < block_size ) | |||
{ | |||
@@ -929,7 +929,7 @@ Timeline::handle ( int m ) | |||
add_track( t ); | |||
t->track( o ); | |||
t->sequence( o ); | |||
Loggable::block_end(); | |||
} | |||
@@ -93,7 +93,7 @@ Track::cb_button ( Fl_Widget *w ) | |||
show_all_takes( take_menu->menu()[ v ].value() ); | |||
return; | |||
case 1: /* new */ | |||
track( (Audio_Sequence*)track()->clone_empty() ); | |||
sequence( (Audio_Sequence*)sequence()->clone_empty() ); | |||
return; | |||
} | |||
@@ -104,7 +104,7 @@ Track::cb_button ( Fl_Widget *w ) | |||
Audio_Sequence *t = (Audio_Sequence*)takes->child( i ); | |||
if ( ! strcmp( s, t->name() ) ) | |||
{ | |||
track( t ); | |||
sequence( t ); | |||
redraw(); | |||
break; | |||
} | |||
@@ -116,7 +116,7 @@ void | |||
Track::init ( void ) | |||
{ | |||
_capture = NULL; | |||
_track = NULL; | |||
_sequence = NULL; | |||
_name = NULL; | |||
_selected = false; | |||
_show_all_takes = false; | |||
@@ -312,8 +312,8 @@ Track::resize ( void ) | |||
Fl_Group::size( w(), h() + ( ( 24 ) * pack_visible( annotation ) ) ); | |||
if ( track() ) | |||
track()->size( w(), height() ); | |||
if ( sequence() ) | |||
sequence()->size( w(), height() ); | |||
if ( controls->y() + controls->h() > y() + h() ) | |||
@@ -373,14 +373,14 @@ Track::remove ( Control_Sequence *t ) | |||
} | |||
void | |||
Track::track ( Audio_Sequence * t ) | |||
Track::sequence ( Audio_Sequence * t ) | |||
{ | |||
t->track( this ); | |||
if ( track() ) | |||
add( track() ); | |||
if ( sequence() ) | |||
add( sequence() ); | |||
_track = t; | |||
_sequence = t; | |||
pack->insert( *t, 1 ); | |||
t->labeltype( FL_NO_LABEL ); | |||
@@ -423,7 +423,7 @@ Track::select ( int X, int Y, int W, int H, | |||
bool include_control, bool merge_control ) | |||
{ | |||
Sequence *t = track(); | |||
Sequence *t = sequence(); | |||
if ( ! ( t->y() > Y + H || t->y() + t->h() < Y ) ) | |||
t->select_range( X, W ); | |||
@@ -786,7 +786,7 @@ Track::record ( nframes_t frame ) | |||
/* open it again for reading in the GUI thread */ | |||
Audio_File *af = Audio_File::from_file( _capture_af->name() ); | |||
_capture = new Audio_Region( af, track(), frame ); | |||
_capture = new Audio_Region( af, sequence(), frame ); | |||
_capture->prepare(); | |||
} | |||
@@ -79,7 +79,7 @@ private: | |||
enum { AUDIO } _type; | |||
Audio_Sequence *_track; | |||
Audio_Sequence *_sequence; | |||
Audio_Region *_capture; /* capture region */ | |||
Audio_File *_capture_af; /* capture write source */ | |||
@@ -171,7 +171,7 @@ public: | |||
{ | |||
// assert( t ); | |||
track( t ); | |||
sequence( t ); | |||
} | |||
} | |||
@@ -185,7 +185,7 @@ public: | |||
virtual void get ( Log_Entry &e ) const | |||
{ | |||
e.add( ":name", _name ); | |||
e.add( ":sequence", track() ); | |||
e.add( ":sequence", sequence() ); | |||
e.add( ":selected", _selected ); | |||
e.add( ":height", size() ); | |||
e.add( ":inputs", input.size() ); | |||
@@ -251,8 +251,8 @@ public: | |||
static int width ( void ) { return 150; } | |||
void track ( Audio_Sequence * t ); | |||
Audio_Sequence * track ( void ) const { return _track; } | |||
void sequence ( Audio_Sequence * t ); | |||
Audio_Sequence * sequence ( void ) const { return _sequence; } | |||
void draw ( void ); | |||
int handle ( int m ); | |||