Merge branch 'stable-0.4' into stable-0.4-new-fx-mixer

This commit is contained in:
Tobias Doerffel
2014-01-14 18:02:13 +01:00
63 changed files with 763 additions and 593 deletions

View File

@@ -2,7 +2,7 @@
* AutomationPattern.cpp - implementation of class AutomationPattern which
* holds dynamic values
*
* Copyright (c) 2008-2013 Tobias Doerffel <tobydox/at/users.sourceforge.net>
* Copyright (c) 2008-2014 Tobias Doerffel <tobydox/at/users.sourceforge.net>
* Copyright (c) 2006-2008 Javier Serrano Polo <jasp00/at/users.sourceforge.net>
*
* This file is part of Linux MultiMedia Studio - http://lmms.sourceforge.net
@@ -449,10 +449,10 @@ trackContentObjectView * AutomationPattern::createView( trackView * _tv )
bool AutomationPattern::isAutomated( const AutomatableModel * _m )
{
trackContainer::trackList l = engine::getSong()->tracks() +
TrackContainer::TrackList l = engine::getSong()->tracks() +
engine::getBBTrackContainer()->tracks();
l += engine::getSong()->globalAutomationTrack();
for( trackContainer::trackList::const_iterator it = l.begin();
for( TrackContainer::TrackList::const_iterator it = l.begin();
it != l.end(); ++it )
{
if( ( *it )->type() == track::AutomationTrack ||
@@ -516,10 +516,10 @@ AutomationPattern * AutomationPattern::globalAutomationPattern(
void AutomationPattern::resolveAllIDs()
{
trackContainer::trackList l = engine::getSong()->tracks() +
TrackContainer::TrackList l = engine::getSong()->tracks() +
engine::getBBTrackContainer()->tracks();
l += engine::getSong()->globalAutomationTrack();
for( trackContainer::trackList::iterator it = l.begin();
for( TrackContainer::TrackList::iterator it = l.begin();
it != l.end(); ++it )
{
if( ( *it )->type() == track::AutomationTrack ||

View File

@@ -1,7 +1,7 @@
/*
* ImportFilter.cpp - base-class for all import-filters (MIDI, FLP etc)
*
* Copyright (c) 2006-2009 Tobias Doerffel <tobydox/at/users.sourceforge.net>
* Copyright (c) 2006-2014 Tobias Doerffel <tobydox/at/users.sourceforge.net>
*
* This file is part of Linux MultiMedia Studio - http://lmms.sourceforge.net
*
@@ -27,7 +27,7 @@
#include "ImportFilter.h"
#include "engine.h"
#include "track_container.h"
#include "TrackContainer.h"
#include "ProjectJournal.h"
@@ -50,7 +50,7 @@ ImportFilter::~ImportFilter()
void ImportFilter::import( const QString & _file_to_import,
trackContainer * _tc )
TrackContainer* tc )
{
DescriptorList d;
Plugin::getDescriptorsOfAvailPlugins( d );
@@ -70,8 +70,7 @@ void ImportFilter::import( const QString & _file_to_import,
{
Plugin * p = Plugin::instantiate( it->name, NULL, s );
if( dynamic_cast<ImportFilter *>( p ) != NULL &&
dynamic_cast<ImportFilter *>( p )->tryImport(
_tc ) == true )
dynamic_cast<ImportFilter *>( p )->tryImport( tc ) == true )
{
delete p;
successful = true;
@@ -88,8 +87,8 @@ void ImportFilter::import( const QString & _file_to_import,
if( successful == false )
{
QMessageBox::information( NULL,
trackContainer::tr( "Couldn't import file" ),
trackContainer::tr( "Couldn't find a filter for "
TrackContainer::tr( "Couldn't import file" ),
TrackContainer::tr( "Couldn't find a filter for "
"importing file %1.\n"
"You should convert this file "
"into a format supported by "
@@ -108,8 +107,8 @@ bool ImportFilter::openFile()
if( m_file.open( QFile::ReadOnly ) == false )
{
QMessageBox::critical( NULL,
trackContainer::tr( "Couldn't open file" ),
trackContainer::tr( "Couldn't open file %1 "
TrackContainer::tr( "Couldn't open file" ),
TrackContainer::tr( "Couldn't open file %1 "
"for reading.\nPlease make "
"sure you have read-"
"permission to the file and "

View File

@@ -37,7 +37,7 @@
#include "debug.h"
#include "engine.h"
#include "config_mgr.h"
#include "sample_play_handle.h"
#include "SamplePlayHandle.h"
#include "piano_roll.h"
#include "MicroTimer.h"
#include "atomic_int.h"
@@ -354,7 +354,7 @@ const surroundSampleFrame * Mixer::renderNextBuffer()
p != last_metro_pos && p.getTicks() %
(DefaultTicksPerTact / 4 ) == 0 )
{
addPlayHandle( new samplePlayHandle( "misc/metronome01.ogg" ) );
addPlayHandle( new SamplePlayHandle( "misc/metronome01.ogg" ) );
last_metro_pos = p;
}

View File

@@ -1,7 +1,7 @@
/*
* sample_buffer.cpp - container-class sampleBuffer
* SampleBuffer.cpp - container-class SampleBuffer
*
* Copyright (c) 2005-2013 Tobias Doerffel <tobydox/at/users.sourceforge.net>
* Copyright (c) 2005-2014 Tobias Doerffel <tobydox/at/users.sourceforge.net>
*
* This file is part of Linux MultiMedia Studio - http://lmms.sourceforge.net
*
@@ -23,7 +23,7 @@
*/
#include "sample_buffer.h"
#include "SampleBuffer.h"
#include "Mixer.h"
@@ -62,7 +62,7 @@
#include "templates.h"
sampleBuffer::sampleBuffer( const QString & _audio_file,
SampleBuffer::SampleBuffer( const QString & _audio_file,
bool _is_base64_data ) :
m_audioFile( ( _is_base64_data == true ) ? "" : _audio_file ),
m_origData( NULL ),
@@ -88,7 +88,7 @@ sampleBuffer::sampleBuffer( const QString & _audio_file,
sampleBuffer::sampleBuffer( const sampleFrame * _data, const f_cnt_t _frames ) :
SampleBuffer::SampleBuffer( const sampleFrame * _data, const f_cnt_t _frames ) :
m_audioFile( "" ),
m_origData( NULL ),
m_origFrames( 0 ),
@@ -115,7 +115,7 @@ sampleBuffer::sampleBuffer( const sampleFrame * _data, const f_cnt_t _frames ) :
sampleBuffer::sampleBuffer( const f_cnt_t _frames ) :
SampleBuffer::SampleBuffer( const f_cnt_t _frames ) :
m_audioFile( "" ),
m_origData( NULL ),
m_origFrames( 0 ),
@@ -142,7 +142,7 @@ sampleBuffer::sampleBuffer( const f_cnt_t _frames ) :
sampleBuffer::~sampleBuffer()
SampleBuffer::~SampleBuffer()
{
delete[] m_origData;
delete[] m_data;
@@ -153,7 +153,7 @@ sampleBuffer::~sampleBuffer()
void sampleBuffer::update( bool _keep_settings )
void SampleBuffer::update( bool _keep_settings )
{
const bool lock = ( m_data != NULL );
if( lock )
@@ -225,56 +225,26 @@ void sampleBuffer::update( bool _keep_settings )
}
delete[] f;
}
if( m_frames > 0 && buf != NULL )
{
// following code transforms int-samples into
// float-samples and does amplifying & reversing
const float fac = m_amplification /
OUTPUT_SAMPLE_MULTIPLIER;
m_data = new sampleFrame[m_frames];
const int ch = ( channels > 1 ) ? 1 : 0;
// if reversing is on, we also reverse when
// scaling
if( m_reversed )
if ( m_frames == 0 ) // if still no frames, bail
{
int idx = ( m_frames - 1 ) * channels;
for( f_cnt_t frame = 0; frame < m_frames;
++frame )
{
m_data[frame][0] = buf[idx+0] * fac;
m_data[frame][1] = buf[idx+ch] * fac;
idx -= channels;
}
// sample couldn't be decoded, create buffer containing
// one sample-frame
m_data = new sampleFrame[1];
memset( m_data, 0, sizeof( *m_data ) );
m_frames = 1;
m_loopStartFrame = m_startFrame = 0;
m_loopEndFrame = m_endFrame = 1;
}
else
else // otherwise normalize sample rate
{
int idx = 0;
for( f_cnt_t frame = 0; frame < m_frames;
++frame )
{
m_data[frame][0] = buf[idx+0] * fac;
m_data[frame][1] = buf[idx+ch] * fac;
idx += channels;
}
normalizeSampleRate( samplerate, _keep_settings );
}
delete[] buf;
}
normalizeSampleRate( samplerate, _keep_settings );
}
else
{
// sample couldn't be decoded, create buffer containing
// one sample-frame
m_data = new sampleFrame[1];
memset( m_data, 0, sizeof( *m_data ) );
m_frames = 1;
m_loopStartFrame = m_startFrame = 0;
m_loopEndFrame = m_endFrame = 1;
}
}
else
{
@@ -296,15 +266,94 @@ void sampleBuffer::update( bool _keep_settings )
}
void SampleBuffer::convertIntToFloat ( int_sample_t * & _ibuf, f_cnt_t _frames, int _channels)
{
// following code transforms int-samples into
// float-samples and does amplifying & reversing
const float fac = m_amplification /
OUTPUT_SAMPLE_MULTIPLIER;
m_data = new sampleFrame[_frames];
const int ch = ( _channels > 1 ) ? 1 : 0;
// if reversing is on, we also reverse when
// scaling
if( m_reversed )
{
int idx = ( _frames - 1 ) * _channels;
for( f_cnt_t frame = 0; frame < _frames;
++frame )
{
m_data[frame][0] = _ibuf[idx+0] * fac;
m_data[frame][1] = _ibuf[idx+ch] * fac;
idx -= _channels;
}
}
else
{
int idx = 0;
for( f_cnt_t frame = 0; frame < _frames;
++frame )
{
m_data[frame][0] = _ibuf[idx+0] * fac;
m_data[frame][1] = _ibuf[idx+ch] * fac;
idx += _channels;
}
}
delete[] _ibuf;
void sampleBuffer::normalizeSampleRate( const sample_rate_t _src_sr,
}
void SampleBuffer::directFloatWrite ( sample_t * & _fbuf, f_cnt_t _frames, int _channels)
{
m_data = new sampleFrame[_frames];
const int ch = ( _channels > 1 ) ? 1 : 0;
// if reversing is on, we also reverse when
// scaling
if( m_reversed )
{
int idx = ( _frames - 1 ) * _channels;
for( f_cnt_t frame = 0; frame < _frames;
++frame )
{
m_data[frame][0] = _fbuf[idx+0];
m_data[frame][1] = _fbuf[idx+ch];
idx -= _channels;
}
}
else
{
int idx = 0;
for( f_cnt_t frame = 0; frame < _frames;
++frame )
{
m_data[frame][0] = _fbuf[idx+0];
m_data[frame][1] = _fbuf[idx+ch];
idx += _channels;
}
}
delete[] _fbuf;
}
void SampleBuffer::normalizeSampleRate( const sample_rate_t _src_sr,
bool _keep_settings )
{
// do samplerate-conversion to our default-samplerate
if( _src_sr != engine::mixer()->baseSampleRate() )
{
sampleBuffer * resampled = resample( this, _src_sr,
SampleBuffer * resampled = resample( this, _src_sr,
engine::mixer()->baseSampleRate() );
delete[] m_data;
m_frames = resampled->frames();
@@ -325,7 +374,7 @@ void sampleBuffer::normalizeSampleRate( const sample_rate_t _src_sr,
f_cnt_t sampleBuffer::decodeSampleSF( const char * _f,
f_cnt_t SampleBuffer::decodeSampleSF( const char * _f,
int_sample_t * & _buf,
ch_cnt_t & _channels,
sample_rate_t & _samplerate )
@@ -333,15 +382,29 @@ f_cnt_t sampleBuffer::decodeSampleSF( const char * _f,
SNDFILE * snd_file;
SF_INFO sf_info;
f_cnt_t frames = 0;
bool sf_rr = false;
sample_t * fbuf = 0;
if( ( snd_file = sf_open( _f, SFM_READ, &sf_info ) ) != NULL )
{
frames = sf_info.frames;
_buf = new int_sample_t[sf_info.channels * frames];
if( sf_read_short( snd_file, _buf, sf_info.channels * frames )
< sf_info.channels * frames )
// check if float
if ( (sf_info.format & SF_FORMAT_SUBMASK) == SF_FORMAT_FLOAT ) // if yes, use float format for buffer
{
fbuf = new sample_t[sf_info.channels * frames];
sf_rr = sf_read_float( snd_file, fbuf, sf_info.channels * frames );
}
else // otherwise, use int
{
_buf = new int_sample_t[sf_info.channels * frames];
sf_rr = sf_read_short( snd_file, _buf, sf_info.channels * frames );
}
if( sf_rr < sf_info.channels * frames )
{
#ifdef DEBUG_LMMS
printf( "sampleBuffer::decodeSampleSF(): could not read"
printf( "SampleBuffer::decodeSampleSF(): could not read"
" sample %s: %s\n", _f, sf_strerror( NULL ) );
#endif
}
@@ -353,10 +416,21 @@ f_cnt_t sampleBuffer::decodeSampleSF( const char * _f,
else
{
#ifdef DEBUG_LMMS
printf( "sampleBuffer::decodeSampleSF(): could not load "
printf( "SampleBuffer::decodeSampleSF(): could not load "
"sample %s: %s\n", _f, sf_strerror( NULL ) );
#endif
}
//write down either directly or convert i->f depending on file type
if ( frames > 0 && fbuf != NULL )
{
directFloatWrite ( fbuf, frames, _channels);
}
else if ( frames > 0 && _buf != NULL )
{
convertIntToFloat ( _buf, frames, _channels);
}
return frames;
}
@@ -415,7 +489,7 @@ long qfileTellCallback( void * _udata )
f_cnt_t sampleBuffer::decodeSampleOGGVorbis( const char * _f,
f_cnt_t SampleBuffer::decodeSampleOGGVorbis( const char * _f,
int_sample_t * & _buf,
ch_cnt_t & _channels,
sample_rate_t & _samplerate )
@@ -446,23 +520,23 @@ f_cnt_t sampleBuffer::decodeSampleOGGVorbis( const char * _f,
switch( err )
{
case OV_EREAD:
printf( "sampleBuffer::decodeSampleOGGVorbis():"
printf( "SampleBuffer::decodeSampleOGGVorbis():"
" media read error\n" );
break;
case OV_ENOTVORBIS:
/* printf( "sampleBuffer::decodeSampleOGGVorbis():"
/* printf( "SampleBuffer::decodeSampleOGGVorbis():"
" not an Ogg Vorbis file\n" );*/
break;
case OV_EVERSION:
printf( "sampleBuffer::decodeSampleOGGVorbis():"
printf( "SampleBuffer::decodeSampleOGGVorbis():"
" vorbis version mismatch\n" );
break;
case OV_EBADHEADER:
printf( "sampleBuffer::decodeSampleOGGVorbis():"
printf( "SampleBuffer::decodeSampleOGGVorbis():"
" invalid Vorbis bitstream header\n" );
break;
case OV_EFAULT:
printf( "sampleBuffer::decodeSampleOgg(): "
printf( "SampleBuffer::decodeSampleOgg(): "
"internal logic fault\n" );
break;
}
@@ -497,6 +571,12 @@ f_cnt_t sampleBuffer::decodeSampleOGGVorbis( const char * _f,
while( bytes_read != 0 && bitstream == 0 );
ov_clear( &vf );
// if buffer isn't empty, convert it to float and write it down
if ( frames > 0 && _buf != NULL )
{
convertIntToFloat ( _buf, frames, _channels);
}
return frames;
}
@@ -505,19 +585,27 @@ f_cnt_t sampleBuffer::decodeSampleOGGVorbis( const char * _f,
f_cnt_t sampleBuffer::decodeSampleDS( const char * _f,
f_cnt_t SampleBuffer::decodeSampleDS( const char * _f,
int_sample_t * & _buf,
ch_cnt_t & _channels,
sample_rate_t & _samplerate )
{
DrumSynth ds;
return ds.GetDSFileSamples( _f, _buf, _channels );
f_cnt_t frames = ds.GetDSFileSamples( _f, _buf, _channels );
if ( frames > 0 && _buf != NULL )
{
convertIntToFloat ( _buf, frames, _channels);
}
return frames;
}
bool sampleBuffer::play( sampleFrame * _ab, handleState * _state,
bool SampleBuffer::play( sampleFrame * _ab, handleState * _state,
const fpp_t _frames,
const float _freq,
const bool _looped )
@@ -595,12 +683,12 @@ bool sampleBuffer::play( sampleFrame * _ab, handleState * _state,
&src_data );
if( error )
{
printf( "sampleBuffer: error while resampling: %s\n",
printf( "SampleBuffer: error while resampling: %s\n",
src_strerror( error ) );
}
if( src_data.output_frames_gen > _frames )
{
printf( "sampleBuffer: not enough frames: %ld / %d\n",
printf( "SampleBuffer: not enough frames: %ld / %d\n",
src_data.output_frames_gen, _frames );
}
// Advance
@@ -638,7 +726,7 @@ bool sampleBuffer::play( sampleFrame * _ab, handleState * _state,
sampleFrame * sampleBuffer::getSampleFragment( f_cnt_t _start,
sampleFrame * SampleBuffer::getSampleFragment( f_cnt_t _start,
f_cnt_t _frames, bool _looped, sampleFrame * * _tmp ) const
{
if( _looped )
@@ -685,7 +773,7 @@ sampleFrame * sampleBuffer::getSampleFragment( f_cnt_t _start,
f_cnt_t sampleBuffer::getLoopedIndex( f_cnt_t _index ) const
f_cnt_t SampleBuffer::getLoopedIndex( f_cnt_t _index ) const
{
if( _index < m_loopEndFrame )
{
@@ -698,7 +786,7 @@ f_cnt_t sampleBuffer::getLoopedIndex( f_cnt_t _index ) const
void sampleBuffer::visualize( QPainter & _p, const QRect & _dr,
void SampleBuffer::visualize( QPainter & _p, const QRect & _dr,
const QRect & _clip, f_cnt_t _from_frame, f_cnt_t _to_frame )
{
const bool focus_on_range = _to_frame <= m_frames
@@ -739,7 +827,7 @@ void sampleBuffer::visualize( QPainter & _p, const QRect & _dr,
QString sampleBuffer::openAudioFile() const
QString SampleBuffer::openAudioFile() const
{
QFileDialog ofd( NULL, tr( "Open audio file" ) );
#if QT_VERSION >= 0x040806
@@ -844,7 +932,7 @@ void flacStreamEncoderMetadataCallback( const FLAC__StreamEncoder *,
QString & sampleBuffer::toBase64( QString & _dst ) const
QString & SampleBuffer::toBase64( QString & _dst ) const
{
#ifdef LMMS_HAVE_FLAC_STREAM_ENCODER_H
const f_cnt_t FRAMES_PER_BUF = 1152;
@@ -909,14 +997,14 @@ QString & sampleBuffer::toBase64( QString & _dst ) const
sampleBuffer * sampleBuffer::resample( sampleFrame * _data,
SampleBuffer * SampleBuffer::resample( sampleFrame * _data,
const f_cnt_t _frames,
const sample_rate_t _src_sr,
const sample_rate_t _dst_sr )
{
const f_cnt_t dst_frames = static_cast<f_cnt_t>( _frames /
(float) _src_sr * (float) _dst_sr );
sampleBuffer * dst_sb = new sampleBuffer( dst_frames );
SampleBuffer * dst_sb = new SampleBuffer( dst_frames );
sampleFrame * dst_buf = dst_sb->m_origData;
// yeah, libsamplerate, let's rock with sinc-interpolation!
@@ -934,7 +1022,7 @@ sampleBuffer * sampleBuffer::resample( sampleFrame * _data,
src_data.src_ratio = (double) _dst_sr / _src_sr;
if( ( error = src_process( state, &src_data ) ) )
{
printf( "sampleBuffer: error while resampling: %s\n",
printf( "SampleBuffer: error while resampling: %s\n",
src_strerror( error ) );
}
src_delete( state );
@@ -950,7 +1038,7 @@ sampleBuffer * sampleBuffer::resample( sampleFrame * _data,
void sampleBuffer::setAudioFile( const QString & _audio_file )
void SampleBuffer::setAudioFile( const QString & _audio_file )
{
m_audioFile = tryToMakeRelative( _audio_file );
update();
@@ -1051,7 +1139,7 @@ void flacStreamDecoderErrorCallback( const FLAC__StreamDecoder *,
#endif
void sampleBuffer::loadFromBase64( const QString & _data )
void SampleBuffer::loadFromBase64( const QString & _data )
{
char * dst = NULL;
int dsize = 0;
@@ -1115,7 +1203,7 @@ void sampleBuffer::loadFromBase64( const QString & _data )
void sampleBuffer::setStartFrame( const f_cnt_t _s )
void SampleBuffer::setStartFrame( const f_cnt_t _s )
{
m_varLock.lock();
m_loopStartFrame = m_startFrame = _s;
@@ -1125,7 +1213,7 @@ void sampleBuffer::setStartFrame( const f_cnt_t _s )
void sampleBuffer::setEndFrame( const f_cnt_t _e )
void SampleBuffer::setEndFrame( const f_cnt_t _e )
{
m_varLock.lock();
m_loopEndFrame = m_endFrame = _e;
@@ -1135,7 +1223,7 @@ void sampleBuffer::setEndFrame( const f_cnt_t _e )
void sampleBuffer::setAmplification( float _a )
void SampleBuffer::setAmplification( float _a )
{
m_amplification = _a;
update( true );
@@ -1144,7 +1232,7 @@ void sampleBuffer::setAmplification( float _a )
void sampleBuffer::setReversed( bool _on )
void SampleBuffer::setReversed( bool _on )
{
m_reversed = _on;
update( true );
@@ -1153,7 +1241,7 @@ void sampleBuffer::setReversed( bool _on )
QString sampleBuffer::tryToMakeRelative( const QString & _file )
QString SampleBuffer::tryToMakeRelative( const QString & _file )
{
if( QFileInfo( _file ).isRelative() == false )
{
@@ -1177,7 +1265,7 @@ QString sampleBuffer::tryToMakeRelative( const QString & _file )
QString sampleBuffer::tryToMakeAbsolute( const QString & _file )
QString SampleBuffer::tryToMakeAbsolute( const QString & _file )
{
if( QFileInfo( _file ).isAbsolute() )
{
@@ -1200,7 +1288,7 @@ QString sampleBuffer::tryToMakeAbsolute( const QString & _file )
sampleBuffer::handleState::handleState( bool _varying_pitch ) :
SampleBuffer::handleState::handleState( bool _varying_pitch ) :
m_frameIndex( 0 ),
m_varyingPitch( _varying_pitch )
{
@@ -1218,7 +1306,7 @@ sampleBuffer::handleState::handleState( bool _varying_pitch ) :
sampleBuffer::handleState::~handleState()
SampleBuffer::handleState::~handleState()
{
src_delete( m_resamplingData );
}
@@ -1226,7 +1314,7 @@ sampleBuffer::handleState::~handleState()
#include "moc_sample_buffer.cxx"
#include "moc_SampleBuffer.cxx"
/* vim: set tw=0 noexpandtab: */

View File

@@ -1,7 +1,7 @@
/*
* sample_play_handle.cpp - implementation of class samplePlayHandle
* SamplePlayHandle.cpp - implementation of class SamplePlayHandle
*
* Copyright (c) 2005-2009 Tobias Doerffel <tobydox/at/users.sourceforge.net>
* Copyright (c) 2005-2014 Tobias Doerffel <tobydox/at/users.sourceforge.net>
*
* This file is part of Linux MultiMedia Studio - http://lmms.sourceforge.net
*
@@ -22,23 +22,23 @@
*
*/
#include "sample_play_handle.h"
#include "SamplePlayHandle.h"
#include "AudioPort.h"
#include "bb_track.h"
#include "engine.h"
#include "InstrumentTrack.h"
#include "pattern.h"
#include "sample_buffer.h"
#include "sample_track.h"
#include "SampleBuffer.h"
#include "SampleTrack.h"
samplePlayHandle::samplePlayHandle( const QString & _sample_file ) :
playHandle( SamplePlayHandle ),
m_sampleBuffer( new sampleBuffer( _sample_file ) ),
SamplePlayHandle::SamplePlayHandle( const QString& sampleFile ) :
playHandle( playHandle::SamplePlayHandle ),
m_sampleBuffer( new SampleBuffer( sampleFile ) ),
m_doneMayReturnTrue( true ),
m_frame( 0 ),
m_audioPort( new AudioPort( "samplePlayHandle", false ) ),
m_audioPort( new AudioPort( "SamplePlayHandle", false ) ),
m_ownAudioPort( true ),
m_defaultVolumeModel( DefaultVolume, MinVolume, MaxVolume, 1 ),
m_volumeModel( &m_defaultVolumeModel ),
@@ -50,12 +50,12 @@ samplePlayHandle::samplePlayHandle( const QString & _sample_file ) :
samplePlayHandle::samplePlayHandle( sampleBuffer * _sample_buffer ) :
playHandle( SamplePlayHandle ),
m_sampleBuffer( sharedObject::ref( _sample_buffer ) ),
SamplePlayHandle::SamplePlayHandle( SampleBuffer* sampleBuffer ) :
playHandle( playHandle::SamplePlayHandle ),
m_sampleBuffer( sharedObject::ref( sampleBuffer ) ),
m_doneMayReturnTrue( true ),
m_frame( 0 ),
m_audioPort( new AudioPort( "samplePlayHandle", false ) ),
m_audioPort( new AudioPort( "SamplePlayHandle", false ) ),
m_ownAudioPort( true ),
m_defaultVolumeModel( DefaultVolume, MinVolume, MaxVolume, 1 ),
m_volumeModel( &m_defaultVolumeModel ),
@@ -67,16 +67,16 @@ samplePlayHandle::samplePlayHandle( sampleBuffer * _sample_buffer ) :
samplePlayHandle::samplePlayHandle( sampleTCO * _tco ) :
playHandle( SamplePlayHandle ),
m_sampleBuffer( sharedObject::ref( _tco->getSampleBuffer() ) ),
SamplePlayHandle::SamplePlayHandle( SampleTCO* tco ) :
playHandle( playHandle::SamplePlayHandle ),
m_sampleBuffer( sharedObject::ref( tco->sampleBuffer() ) ),
m_doneMayReturnTrue( true ),
m_frame( 0 ),
m_audioPort( ( (sampleTrack *)_tco->getTrack() )->audioPort() ),
m_audioPort( ( (SampleTrack *)tco->getTrack() )->audioPort() ),
m_ownAudioPort( false ),
m_defaultVolumeModel( DefaultVolume, MinVolume, MaxVolume, 1 ),
m_volumeModel( &m_defaultVolumeModel ),
m_track( _tco->getTrack() ),
m_track( tco->getTrack() ),
m_bbTrack( NULL )
{
}
@@ -84,8 +84,8 @@ samplePlayHandle::samplePlayHandle( sampleTCO * _tco ) :
samplePlayHandle::samplePlayHandle( pattern * _pattern ) :
playHandle( SamplePlayHandle ),
SamplePlayHandle::SamplePlayHandle( pattern * _pattern ) :
playHandle( playHandle::SamplePlayHandle ),
m_sampleBuffer( sharedObject::ref( _pattern->frozenPattern() ) ),
m_doneMayReturnTrue( true ),
m_frame( 0 ),
@@ -101,7 +101,7 @@ samplePlayHandle::samplePlayHandle( pattern * _pattern ) :
samplePlayHandle::~samplePlayHandle()
SamplePlayHandle::~SamplePlayHandle()
{
sharedObject::unref( m_sampleBuffer );
if( m_ownAudioPort )
@@ -113,7 +113,7 @@ samplePlayHandle::~samplePlayHandle()
void samplePlayHandle::play( sampleFrame * _working_buffer )
void SamplePlayHandle::play( sampleFrame * _working_buffer )
{
//play( 0, _try_parallelizing );
if( framesDone() >= totalFrames() )
@@ -140,7 +140,7 @@ void samplePlayHandle::play( sampleFrame * _working_buffer )
bool samplePlayHandle::done() const
bool SamplePlayHandle::done() const
{
return( framesDone() >= totalFrames() && m_doneMayReturnTrue == true );
}
@@ -148,7 +148,7 @@ bool samplePlayHandle::done() const
bool samplePlayHandle::isFromTrack( const track * _track ) const
bool SamplePlayHandle::isFromTrack( const track * _track ) const
{
return( m_track == _track || m_bbTrack == _track );
}
@@ -156,7 +156,7 @@ bool samplePlayHandle::isFromTrack( const track * _track ) const
f_cnt_t samplePlayHandle::totalFrames() const
f_cnt_t SamplePlayHandle::totalFrames() const
{
return( ( m_sampleBuffer->endFrame() - m_sampleBuffer->startFrame() ) *
( engine::mixer()->processingSampleRate() /

View File

@@ -1,5 +1,5 @@
/*
* sample_record_handle.cpp - implementation of class sampleRecordHandle
* SampleRecordHandle.cpp - implementation of class SampleRecordHandle
*
* Copyright (c) 2008 Csaba Hruska <csaba.hruska/at/gmail.com>
*
@@ -23,34 +23,34 @@
*/
#include "sample_record_handle.h"
#include "SampleRecordHandle.h"
#include "bb_track.h"
#include "engine.h"
#include "InstrumentTrack.h"
#include "pattern.h"
#include "sample_buffer.h"
#include "sample_track.h"
#include "SampleBuffer.h"
#include "SampleTrack.h"
sampleRecordHandle::sampleRecordHandle( sampleTCO * _tco ) :
SampleRecordHandle::SampleRecordHandle( SampleTCO* tco ) :
playHandle( SamplePlayHandle ),
m_framesRecorded( 0 ),
m_minLength( _tco->length() ),
m_track( _tco->getTrack() ),
m_minLength( tco->length() ),
m_track( tco->getTrack() ),
m_bbTrack( NULL ),
m_tco( _tco )
m_tco( tco )
{
}
sampleRecordHandle::~sampleRecordHandle()
SampleRecordHandle::~SampleRecordHandle()
{
if( !m_buffers.empty() )
{
sampleBuffer * sb;
SampleBuffer* sb;
createSampleBuffer( &sb );
m_tco->setSampleBuffer( sb );
}
@@ -66,7 +66,7 @@ sampleRecordHandle::~sampleRecordHandle()
void sampleRecordHandle::play( sampleFrame * /*_working_buffer*/ )
void SampleRecordHandle::play( sampleFrame * /*_working_buffer*/ )
{
const sampleFrame * recbuf = engine::mixer()->inputBuffer();
const f_cnt_t frames = engine::mixer()->inputBufferFrames();
@@ -84,7 +84,7 @@ void sampleRecordHandle::play( sampleFrame * /*_working_buffer*/ )
bool sampleRecordHandle::done() const
bool SampleRecordHandle::done() const
{
return false;
}
@@ -92,7 +92,7 @@ bool sampleRecordHandle::done() const
bool sampleRecordHandle::isFromTrack( const track * _track ) const
bool SampleRecordHandle::isFromTrack( const track * _track ) const
{
return( m_track == _track || m_bbTrack == _track );
}
@@ -100,7 +100,7 @@ bool sampleRecordHandle::isFromTrack( const track * _track ) const
f_cnt_t sampleRecordHandle::framesRecorded() const
f_cnt_t SampleRecordHandle::framesRecorded() const
{
return( m_framesRecorded );
}
@@ -108,7 +108,7 @@ f_cnt_t sampleRecordHandle::framesRecorded() const
void sampleRecordHandle::createSampleBuffer( sampleBuffer * * _sample_buf )
void SampleRecordHandle::createSampleBuffer( SampleBuffer** sampleBuf )
{
const f_cnt_t frames = framesRecorded();
// create buffer to store all recorded buffers in
@@ -128,15 +128,15 @@ void sampleRecordHandle::createSampleBuffer( sampleBuffer * * _sample_buf )
data_ptr += ( *it ).second;
}
// create according sample-buffer out of big buffer
*_sample_buf = new sampleBuffer( data, frames );
( *_sample_buf )->setSampleRate( engine::mixer()->inputSampleRate() );
*sampleBuf = new SampleBuffer( data, frames );
( *sampleBuf)->setSampleRate( engine::mixer()->inputSampleRate() );
delete[] data;
}
void sampleRecordHandle::writeBuffer( const sampleFrame * _ab,
void SampleRecordHandle::writeBuffer( const sampleFrame * _ab,
const f_cnt_t _frames )
{
sampleFrame * buf = new sampleFrame[_frames];

View File

@@ -1,8 +1,8 @@
/*
* track_container.cpp - implementation of base-class for all track-containers
* like Song-Editor, BB-Editor...
* TrackContainer.cpp - implementation of base class for all trackcontainers
* like Song-Editor, BB-Editor...
*
* Copyright (c) 2004-2009 Tobias Doerffel <tobydox/at/users.sourceforge.net>
* Copyright (c) 2004-2014 Tobias Doerffel <tobydox/at/users.sourceforge.net>
*
* This file is part of Linux MultiMedia Studio - http://lmms.sourceforge.net
*
@@ -28,14 +28,14 @@
#include <QtGui/QProgressDialog>
#include <QtXml/QDomElement>
#include "track_container.h"
#include "TrackContainer.h"
#include "InstrumentTrack.h"
#include "engine.h"
#include "MainWindow.h"
#include "song.h"
trackContainer::trackContainer() :
TrackContainer::TrackContainer() :
Model( NULL ),
JournallingObject(),
m_tracksMutex(),
@@ -46,7 +46,7 @@ trackContainer::trackContainer() :
trackContainer::~trackContainer()
TrackContainer::~TrackContainer()
{
clearAllTracks();
}
@@ -54,7 +54,7 @@ trackContainer::~trackContainer()
void trackContainer::saveSettings( QDomDocument & _doc, QDomElement & _this )
void TrackContainer::saveSettings( QDomDocument & _doc, QDomElement & _this )
{
_this.setTagName( classNodeName() );
_this.setAttribute( "type", nodeName() );
@@ -71,7 +71,7 @@ void trackContainer::saveSettings( QDomDocument & _doc, QDomElement & _this )
void trackContainer::loadSettings( const QDomElement & _this )
void TrackContainer::loadSettings( const QDomElement & _this )
{
static QProgressDialog * pd = NULL;
bool was_null = ( pd == NULL );
@@ -132,7 +132,7 @@ void trackContainer::loadSettings( const QDomElement & _this )
int trackContainer::countTracks( track::TrackTypes _tt ) const
int TrackContainer::countTracks( track::TrackTypes _tt ) const
{
int cnt = 0;
m_tracksMutex.lockForRead();
@@ -150,7 +150,7 @@ int trackContainer::countTracks( track::TrackTypes _tt ) const
void trackContainer::addTrack( track * _track )
void TrackContainer::addTrack( track * _track )
{
if( _track->type() != track::HiddenAutomationTrack )
{
@@ -164,7 +164,7 @@ void trackContainer::addTrack( track * _track )
void trackContainer::removeTrack( track * _track )
void TrackContainer::removeTrack( track * _track )
{
int index = m_tracks.indexOf( _track );
if( index != -1 )
@@ -183,14 +183,14 @@ void trackContainer::removeTrack( track * _track )
void trackContainer::updateAfterTrackAdd()
void TrackContainer::updateAfterTrackAdd()
{
}
void trackContainer::clearAllTracks()
void TrackContainer::clearAllTracks()
{
//m_tracksMutex.lockForWrite();
while( !m_tracks.isEmpty() )
@@ -203,9 +203,9 @@ void trackContainer::clearAllTracks()
bool trackContainer::isEmpty() const
bool TrackContainer::isEmpty() const
{
for( trackList::const_iterator it = m_tracks.begin();
for( TrackList::const_iterator it = m_tracks.begin();
it != m_tracks.end(); ++it )
{
if( !( *it )->getTCOs().isEmpty() )
@@ -222,7 +222,7 @@ bool trackContainer::isEmpty() const
DummyTrackContainer::DummyTrackContainer() :
trackContainer(),
TrackContainer(),
m_dummyInstrumentTrack( NULL )
{
setJournalling( false );
@@ -235,5 +235,5 @@ DummyTrackContainer::DummyTrackContainer() :
#include "moc_track_container.cxx"
#include "moc_TrackContainer.cxx"

View File

@@ -2,7 +2,7 @@
* AudioSampleRecorder.cpp - device-class that implements recording
* audio-buffers into RAM
*
* Copyright (c) 2004-2009 Tobias Doerffel <tobydox/at/users.sourceforge.net>
* Copyright (c) 2004-2014 Tobias Doerffel <tobydox/at/users.sourceforge.net>
*
* This file is part of Linux MultiMedia Studio - http://lmms.sourceforge.net
*
@@ -25,7 +25,7 @@
#include "AudioSampleRecorder.h"
#include "sample_buffer.h"
#include "SampleBuffer.h"
#include "debug.h"
@@ -68,7 +68,7 @@ f_cnt_t AudioSampleRecorder::framesRecorded() const
void AudioSampleRecorder::createSampleBuffer( sampleBuffer * * _sample_buf )
void AudioSampleRecorder::createSampleBuffer( SampleBuffer** sampleBuf )
{
const f_cnt_t frames = framesRecorded();
// create buffer to store all recorded buffers in
@@ -88,8 +88,8 @@ void AudioSampleRecorder::createSampleBuffer( sampleBuffer * * _sample_buf )
data_ptr += ( *it ).second;
}
// create according sample-buffer out of big buffer
*_sample_buf = new sampleBuffer( data, frames );
( *_sample_buf )->setSampleRate( sampleRate() );
*sampleBuf = new SampleBuffer( data, frames );
( *sampleBuf )->setSampleRate( sampleRate() );
delete[] data;
}

View File

@@ -1,7 +1,7 @@
/*
* bb_track_container.cpp - model-component of BB-Editor
*
* Copyright (c) 2004-2009 Tobias Doerffel <tobydox/at/users.sourceforge.net>
* Copyright (c) 2004-2014 Tobias Doerffel <tobydox/at/users.sourceforge.net>
*
* This file is part of Linux MultiMedia Studio - http://lmms.sourceforge.net
*
@@ -33,7 +33,7 @@
bbTrackContainer::bbTrackContainer() :
trackContainer(),
TrackContainer(),
m_bbComboBoxModel( this )
{
connect( &m_bbComboBoxModel, SIGNAL( dataChanged() ),
@@ -66,8 +66,8 @@ bool bbTrackContainer::play( midiTime _start, fpp_t _frames,
_start = _start % ( lengthOfBB( _tco_num ) * midiTime::ticksPerTact() );
trackList tl = tracks();
for( trackList::iterator it = tl.begin(); it != tl.end(); ++it )
TrackList tl = tracks();
for( TrackList::iterator it = tl.begin(); it != tl.end(); ++it )
{
if( ( *it )->play( _start, _frames, _offset, _tco_num ) )
{
@@ -102,8 +102,8 @@ tact_t bbTrackContainer::lengthOfBB( int _bb )
{
midiTime max_length = midiTime::ticksPerTact();
const trackList & tl = tracks();
for( trackList::const_iterator it = tl.begin(); it != tl.end(); ++it )
const TrackList & tl = tracks();
for( TrackList::const_iterator it = tl.begin(); it != tl.end(); ++it )
{
max_length = qMax( max_length,
( *it )->getTCO( _bb )->length() );
@@ -125,8 +125,8 @@ int bbTrackContainer::numOfBBs() const
void bbTrackContainer::removeBB( int _bb )
{
trackList tl = tracks();
for( trackList::iterator it = tl.begin(); it != tl.end(); ++it )
TrackList tl = tracks();
for( TrackList::iterator it = tl.begin(); it != tl.end(); ++it )
{
delete ( *it )->getTCO( _bb );
( *it )->removeTact( _bb * DefaultTicksPerTact );
@@ -142,8 +142,8 @@ void bbTrackContainer::removeBB( int _bb )
void bbTrackContainer::swapBB( int _bb1, int _bb2 )
{
trackList tl = tracks();
for( trackList::iterator it = tl.begin(); it != tl.end(); ++it )
TrackList tl = tracks();
for( TrackList::iterator it = tl.begin(); it != tl.end(); ++it )
{
( *it )->swapPositionOfTCOs( _bb1, _bb2 );
}
@@ -168,8 +168,8 @@ void bbTrackContainer::updateBBTrack( trackContentObject * _tco )
void bbTrackContainer::fixIncorrectPositions()
{
trackList tl = tracks();
for( trackList::iterator it = tl.begin(); it != tl.end(); ++it )
TrackList tl = tracks();
for( TrackList::iterator it = tl.begin(); it != tl.end(); ++it )
{
for( int i = 0; i < numOfBBs(); ++i )
{
@@ -228,8 +228,8 @@ void bbTrackContainer::currentBBChanged()
// now update all track-labels (the current one has to become white,
// the others gray)
trackList tl = engine::getSong()->tracks();
for( trackList::iterator it = tl.begin(); it != tl.end(); ++it )
TrackList tl = engine::getSong()->tracks();
for( TrackList::iterator it = tl.begin(); it != tl.end(); ++it )
{
if( ( *it )->type() == track::BBTrack )
{
@@ -248,7 +248,7 @@ void bbTrackContainer::createTCOsForBB( int _bb )
return;
}
trackList tl = tracks();
TrackList tl = tracks();
for( int i = 0; i < tl.size(); ++i )
{
while( tl[i]->numOfTCOs() < _bb + 1 )

View File

@@ -35,12 +35,12 @@
#include "mmp.h"
#include "note_play_handle.h"
#include "ProjectJournal.h"
#include "track_container.h"
#include "TrackContainer.h"
// invisible track-container which is needed as parent for preview-channels
class previewTrackContainer : public trackContainer
class previewTrackContainer : public TrackContainer
{
public:
previewTrackContainer() :

View File

@@ -81,7 +81,7 @@ tick_t midiTime::s_ticksPerTact = DefaultTicksPerTact;
song::song() :
trackContainer(),
TrackContainer(),
m_globalAutomationTrack( dynamic_cast<AutomationTrack *>(
track::create( track::HiddenAutomationTrack,
this ) ) ),
@@ -399,7 +399,7 @@ void song::processNextBuffer()
return;
}
trackList track_list;
TrackList track_list;
int tco_num = -1;
switch( m_playMode )
@@ -742,7 +742,7 @@ void song::updateLength()
{
m_length = 0;
m_tracksMutex.lockForRead();
for( trackList::const_iterator it = tracks().begin();
for( TrackList::const_iterator it = tracks().begin();
it != tracks().end(); ++it )
{
const tact_t cur = ( *it )->length();
@@ -867,7 +867,7 @@ void song::stopExport()
void song::insertBar()
{
m_tracksMutex.lockForRead();
for( trackList::const_iterator it = tracks().begin();
for( TrackList::const_iterator it = tracks().begin();
it != tracks().end(); ++it )
{
( *it )->insertTact( m_playPos[Mode_PlaySong] );
@@ -881,7 +881,7 @@ void song::insertBar()
void song::removeBar()
{
m_tracksMutex.lockForRead();
for( trackList::const_iterator it = tracks().begin();
for( TrackList::const_iterator it = tracks().begin();
it != tracks().end(); ++it )
{
( *it )->removeTact( m_playPos[Mode_PlaySong] );
@@ -1049,7 +1049,7 @@ void song::createNewProject()
t = track::create( track::InstrumentTrack,
engine::getBBTrackContainer() );
dynamic_cast<InstrumentTrack * >( t )->loadInstrument(
"tripleoscillator" );
"kicker" );
track::create( track::SampleTrack, this );
track::create( track::BBTrack, this );
track::create( track::AutomationTrack, this );

View File

@@ -2,7 +2,7 @@
* track.cpp - implementation of classes concerning tracks -> necessary for
* all track-like objects (beat/bassline, sample-track...)
*
* Copyright (c) 2004-2012 Tobias Doerffel <tobydox/at/users.sourceforge.net>
* Copyright (c) 2004-2014 Tobias Doerffel <tobydox/at/users.sourceforge.net>
*
* This file is part of Linux MultiMedia Studio - http://lmms.sourceforge.net
*
@@ -62,13 +62,13 @@
#include "mmp.h"
#include "pixmap_button.h"
#include "ProjectJournal.h"
#include "sample_track.h"
#include "SampleTrack.h"
#include "song.h"
#include "string_pair_drag.h"
#include "templates.h"
#include "text_float.h"
#include "tooltip.h"
#include "track_container.h"
#include "TrackContainer.h"
/*! The width of the resize grip in pixels
@@ -336,7 +336,7 @@ trackContentObjectView::~trackContentObjectView()
// op-buttons of our track-widgets could become focus and when the user
// presses space for playing song, just one of these buttons is pressed
// which results in unwanted effects
m_trackView->getTrackContainerView()->setFocus();
m_trackView->trackContainerView()->setFocus();
}
@@ -352,7 +352,7 @@ trackContentObjectView::~trackContentObjectView()
*/
bool trackContentObjectView::fixedTCOs()
{
return m_trackView->getTrackContainerView()->fixedTCOs();
return m_trackView->trackContainerView()->fixedTCOs();
}
@@ -425,7 +425,7 @@ void trackContentObjectView::updateLength()
midiTime::ticksPerTact() ) +
TCO_BORDER_WIDTH * 2-1 );
}
m_trackView->getTrackContainerView()->update();
m_trackView->trackContainerView()->update();
}
@@ -443,7 +443,7 @@ void trackContentObjectView::updatePosition()
m_trackView->getTrackContentWidget()->changePosition();
// moving a TCO can result in change of song-length etc.,
// therefore we update the track-container
m_trackView->getTrackContainerView()->update();
m_trackView->trackContainerView()->update();
}
@@ -532,11 +532,11 @@ void trackContentObjectView::leaveEvent( QEvent * _e )
*/
void trackContentObjectView::mousePressEvent( QMouseEvent * _me )
{
if( m_trackView->getTrackContainerView()->allowRubberband() == true &&
if( m_trackView->trackContainerView()->allowRubberband() == true &&
_me->button() == Qt::LeftButton )
{
// if rubberband is active, we can be selected
if( !m_trackView->getTrackContainerView()->rubberBandActive() )
if( !m_trackView->trackContainerView()->rubberBandActive() )
{
if( _me->modifiers() & Qt::ControlModifier )
{
@@ -650,12 +650,12 @@ void trackContentObjectView::mouseMoveEvent( QMouseEvent * _me )
m_hint = NULL;
}
const float ppt = m_trackView->getTrackContainerView()->pixelsPerTact();
const float ppt = m_trackView->trackContainerView()->pixelsPerTact();
if( m_action == Move )
{
const int x = mapToParent( _me->pos() ).x() - m_initialMouseX;
midiTime t = qMax( 0, (int)
m_trackView->getTrackContainerView()->currentPosition()+
m_trackView->trackContainerView()->currentPosition()+
static_cast<int>( x * midiTime::ticksPerTact() /
ppt ) );
if( ! ( _me->modifiers() & Qt::ControlModifier )
@@ -676,7 +676,7 @@ void trackContentObjectView::mouseMoveEvent( QMouseEvent * _me )
{
const int dx = _me->x() - m_initialMouseX;
QVector<selectableObject *> so =
m_trackView->getTrackContainerView()->selectedObjects();
m_trackView->trackContainerView()->selectedObjects();
QVector<trackContentObject *> tcos;
midiTime smallest_pos, t;
// find out smallest position of all selected objects for not
@@ -830,7 +830,7 @@ void trackContentObjectView::contextMenuEvent( QContextMenuEvent * _cme )
*/
float trackContentObjectView::pixelsPerTact()
{
return m_trackView->getTrackContainerView()->pixelsPerTact();
return m_trackView->trackContainerView()->pixelsPerTact();
}
@@ -866,7 +866,7 @@ trackContentWidget::trackContentWidget( trackView * _parent ) :
{
setAcceptDrops( true );
connect( _parent->getTrackContainerView(),
connect( _parent->trackContainerView(),
SIGNAL( positionChanged( const midiTime & ) ),
this, SLOT( changePosition( const midiTime & ) ) );
@@ -890,7 +890,7 @@ trackContentWidget::~trackContentWidget()
void trackContentWidget::updateBackground()
{
const int tactsPerBar = 4;
const trackContainerView * tcv = m_trackView->getTrackContainerView();
const TrackContainerView * tcv = m_trackView->trackContainerView();
// Assume even-pixels-per-tact. Makes sense, should be like this anyways
int ppt = static_cast<int>( tcv->pixelsPerTact() );
@@ -1019,7 +1019,7 @@ void trackContentWidget::update()
*/
void trackContentWidget::changePosition( const midiTime & _new_pos )
{
if( m_trackView->getTrackContainerView() == engine::getBBEditor() )
if( m_trackView->trackContainerView() == engine::getBBEditor() )
{
const int cur_bb = engine::getBBTrackContainer()->currentBB();
setUpdatesEnabled( false );
@@ -1057,12 +1057,12 @@ void trackContentWidget::changePosition( const midiTime & _new_pos )
midiTime pos = _new_pos;
if( pos < 0 )
{
pos = m_trackView->getTrackContainerView()->currentPosition();
pos = m_trackView->trackContainerView()->currentPosition();
}
const int begin = pos;
const int end = endPosition( pos );
const float ppt = m_trackView->getTrackContainerView()->pixelsPerTact();
const float ppt = m_trackView->trackContainerView()->pixelsPerTact();
setUpdatesEnabled( false );
for( tcoViewVector::iterator it = m_tcoViews.begin();
@@ -1123,7 +1123,7 @@ void trackContentWidget::dropEvent( QDropEvent * _de )
QString type = stringPairDrag::decodeKey( _de );
QString value = stringPairDrag::decodeValue( _de );
if( type == ( "tco_" + QString::number( getTrack()->type() ) ) &&
m_trackView->getTrackContainerView()->fixedTCOs() == false )
m_trackView->trackContainerView()->fixedTCOs() == false )
{
const midiTime pos = getPosition( _de->pos().x()
).toNearestTact();
@@ -1154,7 +1154,7 @@ void trackContentWidget::dropEvent( QDropEvent * _de )
*/
void trackContentWidget::mousePressEvent( QMouseEvent * _me )
{
if( m_trackView->getTrackContainerView()->allowRubberband() == true )
if( m_trackView->trackContainerView()->allowRubberband() == true )
{
QWidget::mousePressEvent( _me );
}
@@ -1163,7 +1163,7 @@ void trackContentWidget::mousePressEvent( QMouseEvent * _me )
QWidget::mousePressEvent( _me );
}
else if( _me->button() == Qt::LeftButton &&
!m_trackView->getTrackContainerView()->fixedTCOs() )
!m_trackView->trackContainerView()->fixedTCOs() )
{
const midiTime pos = getPosition( _me->x() ).getTact() *
midiTime::ticksPerTact();
@@ -1186,11 +1186,11 @@ void trackContentWidget::mousePressEvent( QMouseEvent * _me )
void trackContentWidget::paintEvent( QPaintEvent * _pe )
{
// Assume even-pixels-per-tact. Makes sense, should be like this anyways
const trackContainerView * tcv = m_trackView->getTrackContainerView();
const TrackContainerView * tcv = m_trackView->trackContainerView();
int ppt = static_cast<int>( tcv->pixelsPerTact() );
QPainter p( this );
// Don't draw background on BB-Editor
if( m_trackView->getTrackContainerView() != engine::getBBEditor() )
if( m_trackView->trackContainerView() != engine::getBBEditor() )
{
p.drawTiledPixmap( rect(), m_background, QPoint(
tcv->currentPosition().getTact() * ppt, 0 ) );
@@ -1297,11 +1297,11 @@ track * trackContentWidget::getTrack()
*/
midiTime trackContentWidget::getPosition( int _mouse_x )
{
return midiTime( m_trackView->getTrackContainerView()->
return midiTime( m_trackView->trackContainerView()->
currentPosition() + _mouse_x *
midiTime::ticksPerTact() /
static_cast<int>( m_trackView->
getTrackContainerView()->pixelsPerTact() ) );
trackContainerView()->pixelsPerTact() ) );
}
@@ -1312,7 +1312,7 @@ midiTime trackContentWidget::getPosition( int _mouse_x )
*/
midiTime trackContentWidget::endPosition( const midiTime & _pos_start )
{
const float ppt = m_trackView->getTrackContainerView()->pixelsPerTact();
const float ppt = m_trackView->trackContainerView()->pixelsPerTact();
const int w = width();
return _pos_start + static_cast<int>( w * midiTime::ticksPerTact() / ppt );
}
@@ -1393,7 +1393,7 @@ trackOperationsWidget::trackOperationsWidget( trackView * _parent ) :
toolTip::add( m_soloBtn, tr( "Solo" ) );
connect( this, SIGNAL( trackRemovalScheduled( trackView * ) ),
m_trackView->getTrackContainerView(),
m_trackView->trackContainerView(),
SLOT( deleteTrackView( trackView * ) ),
Qt::QueuedConnection );
}
@@ -1545,7 +1545,7 @@ void trackOperationsWidget::updateMenu()
*
* \todo check the definitions of all the properties - are they OK?
*/
track::track( TrackTypes _type, trackContainer * _tc ) :
track::track( TrackTypes _type, TrackContainer * _tc ) :
Model( _tc ), /*!< The track Model */
m_trackContainer( _tc ), /*!< The track container object */
m_type( _type ), /*!< The track type */
@@ -1594,7 +1594,7 @@ track::~track()
* \param _tt The type of track to create
* \param _tc The track container to attach to
*/
track * track::create( TrackTypes _tt, trackContainer * _tc )
track * track::create( TrackTypes _tt, TrackContainer * _tc )
{
track * t = NULL;
@@ -1602,7 +1602,7 @@ track * track::create( TrackTypes _tt, trackContainer * _tc )
{
case InstrumentTrack: t = new ::InstrumentTrack( _tc ); break;
case BBTrack: t = new bbTrack( _tc ); break;
case SampleTrack: t = new sampleTrack( _tc ); break;
case SampleTrack: t = new ::SampleTrack( _tc ); break;
// case EVENT_TRACK:
// case VIDEO_TRACK:
case AutomationTrack: t = new ::AutomationTrack( _tc ); break;
@@ -1619,12 +1619,12 @@ track * track::create( TrackTypes _tt, trackContainer * _tc )
/*! \brief Create a track inside trackContainer from track type in a QDomElement and restore state from XML
/*! \brief Create a track inside TrackContainer from track type in a QDomElement and restore state from XML
*
* \param _this The QDomElement containing the type of track to create
* \param _tc The track container to attach to
*/
track * track::create( const QDomElement & _this, trackContainer * _tc )
track * track::create( const QDomElement & _this, TrackContainer * _tc )
{
track * t = create(
static_cast<TrackTypes>( _this.attribute( "type" ).toInt() ),
@@ -2039,10 +2039,10 @@ tact_t track::length() const
*/
void track::toggleSolo()
{
const trackContainer::trackList & tl = m_trackContainer->tracks();
const TrackContainer::TrackList & tl = m_trackContainer->tracks();
bool solo_before = false;
for( trackContainer::trackList::const_iterator it = tl.begin();
for( TrackContainer::TrackList::const_iterator it = tl.begin();
it != tl.end(); ++it )
{
if( *it != this )
@@ -2056,7 +2056,7 @@ void track::toggleSolo()
}
const bool solo = m_soloModel.value();
for( trackContainer::trackList::const_iterator it = tl.begin();
for( TrackContainer::TrackList::const_iterator it = tl.begin();
it != tl.end(); ++it )
{
if( solo )
@@ -2097,7 +2097,7 @@ void track::toggleSolo()
* \param _tcv The track Container View for us to be displayed in.
* \todo Is my description of these properties correct?
*/
trackView::trackView( track * _track, trackContainerView * _tcv ) :
trackView::trackView( track * _track, TrackContainerView * _tcv ) :
QWidget( _tcv->contentWidget() ), /*!< The Track Container View's content widget. */
ModelView( NULL, this ), /*!< The model view of this track */
m_track( _track ), /*!< The track we're displaying */

View File

@@ -2,7 +2,7 @@
* AutomationEditor.cpp - implementation of AutomationEditor which is used for
* actual setting of dynamic values
*
* Copyright (c) 2008-2013 Tobias Doerffel <tobydox/at/users.sourceforge.net>
* Copyright (c) 2008-2014 Tobias Doerffel <tobydox/at/users.sourceforge.net>
* Copyright (c) 2008-2013 Paul Giblock <pgib/at/users.sourceforge.net>
* Copyright (c) 2006-2008 Javier Serrano Polo <jasp00/at/users.sourceforge.net>
*
@@ -1848,8 +1848,7 @@ inline bool AutomationEditor::inBBEditor()
{
QMutexLocker m( &m_patternMutex );
return( validPattern() &&
m_pattern->getTrack()->getTrackContainer()
== engine::getBBTrackContainer() );
m_pattern->getTrack()->trackContainer() == engine::getBBTrackContainer() );
}

View File

@@ -1,7 +1,7 @@
/*
* track_container_view.cpp - view-component for trackContainer
* TrackContainerView.cpp - view-component for TrackContainer
*
* Copyright (c) 2004-2009 Tobias Doerffel <tobydox/at/users.sourceforge.net>
* Copyright (c) 2004-2014 Tobias Doerffel <tobydox/at/users.sourceforge.net>
*
* This file is part of Linux MultiMedia Studio - http://lmms.sourceforge.net
*
@@ -31,8 +31,8 @@
#include <QtGui/QWheelEvent>
#include "track_container_view.h"
#include "track_container.h"
#include "TrackContainerView.h"
#include "TrackContainer.h"
#include "bb_track.h"
#include "MainWindow.h"
#include "debug.h"
@@ -47,7 +47,7 @@
#include "track.h"
trackContainerView::trackContainerView( trackContainer * _tc ) :
TrackContainerView::TrackContainerView( TrackContainer * _tc ) :
QWidget(),
ModelView( NULL, this ),
JournallingObject(),
@@ -90,7 +90,7 @@ trackContainerView::trackContainerView( trackContainer * _tc ) :
trackContainerView::~trackContainerView()
TrackContainerView::~TrackContainerView()
{
while( !m_trackViews.empty() )
{
@@ -102,7 +102,7 @@ trackContainerView::~trackContainerView()
void trackContainerView::saveSettings( QDomDocument & _doc,
void TrackContainerView::saveSettings( QDomDocument & _doc,
QDomElement & _this )
{
MainWindow::saveWidgetState( this, _this );
@@ -111,7 +111,7 @@ void trackContainerView::saveSettings( QDomDocument & _doc,
void trackContainerView::loadSettings( const QDomElement & _this )
void TrackContainerView::loadSettings( const QDomElement & _this )
{
MainWindow::restoreWidgetState( this, _this );
}
@@ -119,7 +119,7 @@ void trackContainerView::loadSettings( const QDomElement & _this )
trackView * trackContainerView::addTrackView( trackView * _tv )
trackView * TrackContainerView::addTrackView( trackView * _tv )
{
/* QMap<QString, QVariant> map;
map["id"] = _tv->getTrack()->id();
@@ -137,7 +137,7 @@ trackView * trackContainerView::addTrackView( trackView * _tv )
void trackContainerView::removeTrackView( trackView * _tv )
void TrackContainerView::removeTrackView( trackView * _tv )
{
int index = m_trackViews.indexOf( _tv );
if( index != -1 )
@@ -165,7 +165,7 @@ void trackContainerView::removeTrackView( trackView * _tv )
void trackContainerView::moveTrackViewUp( trackView * _tv )
void TrackContainerView::moveTrackViewUp( trackView * _tv )
{
for( int i = 1; i < m_trackViews.size(); ++i )
{
@@ -187,7 +187,7 @@ void trackContainerView::moveTrackViewUp( trackView * _tv )
void trackContainerView::moveTrackViewDown( trackView * _tv )
void TrackContainerView::moveTrackViewDown( trackView * _tv )
{
for( int i = 0; i < m_trackViews.size()-1; ++i )
{
@@ -210,7 +210,7 @@ void trackContainerView::moveTrackViewDown( trackView * _tv )
void trackContainerView::realignTracks()
void TrackContainerView::realignTracks()
{
QWidget * content = m_scrollArea->widget();
content->setFixedWidth( width()
@@ -228,7 +228,7 @@ void trackContainerView::realignTracks()
void trackContainerView::createTrackView( track * _t )
void TrackContainerView::createTrackView( track * _t )
{
_t->createView( this );
}
@@ -236,7 +236,7 @@ void trackContainerView::createTrackView( track * _t )
void trackContainerView::deleteTrackView( trackView * _tv )
void TrackContainerView::deleteTrackView( trackView * _tv )
{
track * t = _tv->getTrack();
removeTrackView( _tv );
@@ -250,7 +250,7 @@ void trackContainerView::deleteTrackView( trackView * _tv )
const trackView * trackContainerView::trackViewAt( const int _y ) const
const trackView * TrackContainerView::trackViewAt( const int _y ) const
{
const int abs_y = _y + m_scrollArea->viewport()->y();
int y_cnt = 0;
@@ -270,7 +270,7 @@ const trackView * trackContainerView::trackViewAt( const int _y ) const
bool trackContainerView::allowRubberband() const
bool TrackContainerView::allowRubberband() const
{
return( false );
}
@@ -278,7 +278,7 @@ bool trackContainerView::allowRubberband() const
void trackContainerView::setPixelsPerTact( int _ppt )
void TrackContainerView::setPixelsPerTact( int _ppt )
{
m_ppt = _ppt;
@@ -293,7 +293,7 @@ void trackContainerView::setPixelsPerTact( int _ppt )
void trackContainerView::clearAllTracks()
void TrackContainerView::clearAllTracks()
{
while( !m_trackViews.empty() )
{
@@ -307,7 +307,7 @@ void trackContainerView::clearAllTracks()
void trackContainerView::undoStep( JournalEntry & _je )
void TrackContainerView::undoStep( JournalEntry & _je )
{
#if 0
saveJournallingState( false );
@@ -345,7 +345,7 @@ void trackContainerView::undoStep( JournalEntry & _je )
void trackContainerView::redoStep( JournalEntry & _je )
void TrackContainerView::redoStep( JournalEntry & _je )
{
#if 0
switch( _je.actionID() )
@@ -365,7 +365,7 @@ void trackContainerView::redoStep( JournalEntry & _je )
void trackContainerView::dragEnterEvent( QDragEnterEvent * _dee )
void TrackContainerView::dragEnterEvent( QDragEnterEvent * _dee )
{
stringPairDrag::processDragEnterEvent( _dee,
QString( "presetfile,pluginpresetfile,samplefile,instrument,"
@@ -377,7 +377,7 @@ void trackContainerView::dragEnterEvent( QDragEnterEvent * _dee )
void trackContainerView::dropEvent( QDropEvent * _de )
void TrackContainerView::dropEvent( QDropEvent * _de )
{
QString type = stringPairDrag::decodeKey( _de );
QString value = stringPairDrag::decodeValue( _de );
@@ -431,7 +431,7 @@ void trackContainerView::dropEvent( QDropEvent * _de )
void trackContainerView::mousePressEvent( QMouseEvent * _me )
void TrackContainerView::mousePressEvent( QMouseEvent * _me )
{
if( allowRubberband() == true )
{
@@ -445,7 +445,7 @@ void trackContainerView::mousePressEvent( QMouseEvent * _me )
void trackContainerView::mouseMoveEvent( QMouseEvent * _me )
void TrackContainerView::mouseMoveEvent( QMouseEvent * _me )
{
if( rubberBandActive() == true )
{
@@ -459,7 +459,7 @@ void trackContainerView::mouseMoveEvent( QMouseEvent * _me )
void trackContainerView::mouseReleaseEvent( QMouseEvent * _me )
void TrackContainerView::mouseReleaseEvent( QMouseEvent * _me )
{
m_rubberBand->hide();
QWidget::mouseReleaseEvent( _me );
@@ -469,7 +469,7 @@ void trackContainerView::mouseReleaseEvent( QMouseEvent * _me )
void trackContainerView::resizeEvent( QResizeEvent * _re )
void TrackContainerView::resizeEvent( QResizeEvent * _re )
{
realignTracks();
QWidget::resizeEvent( _re );
@@ -478,7 +478,7 @@ void trackContainerView::resizeEvent( QResizeEvent * _re )
trackContainerView::scrollArea::scrollArea( trackContainerView * _parent ) :
TrackContainerView::scrollArea::scrollArea( TrackContainerView * _parent ) :
QScrollArea( _parent ),
m_trackContainerView( _parent )
{
@@ -490,14 +490,14 @@ trackContainerView::scrollArea::scrollArea( trackContainerView * _parent ) :
trackContainerView::scrollArea::~scrollArea()
TrackContainerView::scrollArea::~scrollArea()
{
}
void trackContainerView::scrollArea::wheelEvent( QWheelEvent * _we )
void TrackContainerView::scrollArea::wheelEvent( QWheelEvent * _we )
{
// always pass wheel-event to parent-widget (song-editor
// bb-editor etc.) because they might want to use it for zooming
@@ -514,5 +514,5 @@ void trackContainerView::scrollArea::wheelEvent( QWheelEvent * _we )
#include "moc_track_container_view.cxx"
#include "moc_TrackContainerView.cxx"

View File

@@ -38,9 +38,9 @@
bbEditor::bbEditor( bbTrackContainer * _tc ) :
trackContainerView( _tc ),
m_bbtc( _tc )
bbEditor::bbEditor( bbTrackContainer* tc ) :
TrackContainerView( tc ),
m_bbtc( tc )
{
// create toolbar
m_toolBar = new QWidget;
@@ -108,7 +108,7 @@ bbEditor::bbEditor( bbTrackContainer * _tc ) :
m_bbComboBox = new comboBox( m_toolBar );
m_bbComboBox->setFixedSize( 200, 22 );
m_bbComboBox->setModel( &_tc->m_bbComboBoxModel );
m_bbComboBox->setModel( &tc->m_bbComboBoxModel );
tb_layout->addSpacing( 5 );
tb_layout->addWidget( m_playButton );
@@ -130,8 +130,8 @@ bbEditor::bbEditor( bbTrackContainer * _tc ) :
parentWidget()->show();
setModel( _tc );
connect( &_tc->m_bbComboBoxModel, SIGNAL( dataChanged() ),
setModel( tc );
connect( &tc->m_bbComboBoxModel, SIGNAL( dataChanged() ),
this, SLOT( updatePosition() ) );
}

View File

@@ -186,10 +186,10 @@ void exportProjectDialog::multiRender()
int x = 1;
const trackContainer::trackList & tl = engine::getSong()->tracks();
const TrackContainer::TrackList & tl = engine::getSong()->tracks();
// Check for all unmuted tracks. Remember list.
for( trackContainer::trackList::ConstIterator it = tl.begin();
for( TrackContainer::TrackList::ConstIterator it = tl.begin();
it != tl.end(); ++it )
{
track* tk = (*it);
@@ -213,8 +213,8 @@ void exportProjectDialog::multiRender()
}
const trackContainer::trackList t2 = engine::getBBTrackContainer()->tracks();
for( trackContainer::trackList::ConstIterator it = t2.begin(); it != t2.end(); ++it )
const TrackContainer::TrackList t2 = engine::getBBTrackContainer()->tracks();
for( TrackContainer::TrackList::ConstIterator it = t2.begin(); it != t2.end(); ++it )
{
track* tk = (*it);
if ( tk->isMuted() == false )

View File

@@ -2,7 +2,7 @@
* file_browser.cpp - implementation of the project-, preset- and
* sample-file-browser
*
* Copyright (c) 2004-2009 Tobias Doerffel <tobydox/at/users.sourceforge.net>
* Copyright (c) 2004-2014 Tobias Doerffel <tobydox/at/users.sourceforge.net>
*
* This file is part of Linux MultiMedia Studio - http://lmms.sourceforge.net
*
@@ -45,7 +45,7 @@
#include "MainWindow.h"
#include "mmp.h"
#include "preset_preview_play_handle.h"
#include "sample_play_handle.h"
#include "SamplePlayHandle.h"
#include "song.h"
#include "string_pair_drag.h"
#include "text_float.h"
@@ -418,7 +418,7 @@ void fileBrowserTreeWidget::mousePressEvent( QMouseEvent * _me )
}
// in special case of sample-files we do not care about
// handling() rather than directly creating a samplePlayHandle
// handling() rather than directly creating a SamplePlayHandle
if( f->type() == fileItem::SampleFile )
{
textFloat * tf = textFloat::displayMessage(
@@ -429,7 +429,7 @@ void fileBrowserTreeWidget::mousePressEvent( QMouseEvent * _me )
24, 24 ), 0 );
qApp->processEvents(
QEventLoop::ExcludeUserInputEvents );
samplePlayHandle * s = new samplePlayHandle(
SamplePlayHandle * s = new SamplePlayHandle(
f->fullName() );
s->setDoneMayReturnTrue( false );
m_previewPlayHandle = s;
@@ -520,7 +520,7 @@ void fileBrowserTreeWidget::mouseReleaseEvent( QMouseEvent * _me )
if( m_previewPlayHandle->type() ==
playHandle::SamplePlayHandle )
{
samplePlayHandle * s = dynamic_cast<samplePlayHandle *>(
SamplePlayHandle * s = dynamic_cast<SamplePlayHandle *>(
m_previewPlayHandle );
if( s && s->totalFrames() - s->framesDone() <=
static_cast<f_cnt_t>( engine::mixer()->
@@ -626,14 +626,14 @@ void fileBrowserTreeWidget::activateListItem( QTreeWidgetItem * _item,
void fileBrowserTreeWidget::openInNewInstrumentTrack( trackContainer * _tc )
void fileBrowserTreeWidget::openInNewInstrumentTrack( TrackContainer* tc )
{
if( m_contextMenuItem->handling() == fileItem::LoadAsPreset ||
m_contextMenuItem->handling() == fileItem::LoadByPlugin )
{
engine::mixer()->lock();
InstrumentTrack * it = dynamic_cast<InstrumentTrack *>(
track::create( track::InstrumentTrack, _tc ) );
track::create( track::InstrumentTrack, tc ) );
handleFile( m_contextMenuItem, it );
engine::mixer()->unlock();
}

View File

@@ -45,6 +45,7 @@
#include <math.h>
#include <algorithm>
#include "config_mgr.h"
#include "piano_roll.h"
#include "bb_track_container.h"
#include "Clipboard.h"
@@ -2651,7 +2652,66 @@ void pianoRoll::dragNotes( int x, int y, bool alt, bool shift )
engine::getSong()->setModified();
}
static QString calculateNoteLabel(QString note, int octave)
{
if(note.isEmpty())
return "";
return note + QString::number(octave);
}
static void printNoteHeights(QPainter& p, int bottom, int width, int startKey)
{
assert(Key_C == 0);
assert(Key_H == 11);
struct KeyLabel
{
QString key, minor, major;
};
const KeyLabel labels[12] = {
{QObject::tr("C", "Note name")},
{"", QObject::tr("Db", "Note name"), QObject::tr("C#", "Note name")},
{QObject::tr("D", "Note name")},
{"", QObject::tr("Eb", "Note name"), QObject::tr("D#", "Note name")},
{QObject::tr("E", "Note name"), QObject::tr("Fb", "Note name")},
{"F"},
{"", QObject::tr("Gb", "Note name"), QObject::tr("F#", "Note name")},
{QObject::tr("G", "Note name")},
{"", QObject::tr("Ab", "Note name"),QObject::tr( "G#", "Note name")},
{QObject::tr("A", "Note name")},
{"", QObject::tr("Bb", "Note name"),QObject::tr( "A#", "Note name")},
{QObject::tr("B", "Note name")}
};
p.setFont( pointSize<KEY_LINE_HEIGHT-4>( p.font() ) );
p.setPen( QColor( 255, 255, 0 ) );
for( int y = bottom, key = startKey; y > PR_TOP_MARGIN;
y -= KEY_LINE_HEIGHT, key++)
{
const unsigned note = key % KeysPerOctave;
assert( note < ( sizeof( labels ) / sizeof( *labels) ));
const KeyLabel& noteLabel( labels[note] );
const int octave = key / KeysPerOctave;
const KeyLabel notes = {
calculateNoteLabel(noteLabel.key, octave),
calculateNoteLabel(noteLabel.minor, octave),
calculateNoteLabel(noteLabel.major, octave),
};
const int drawWidth( width - WHITE_KEY_WIDTH );
const int hspace = 300;
const int columnCount = drawWidth/hspace + 1;
for(int col = 0; col < columnCount; col++)
{
const int subOffset = 42;
const int x = subOffset + hspace/2 + hspace * col;
p.drawText( WHITE_KEY_WIDTH + x, y, notes.key);
p.drawText( WHITE_KEY_WIDTH + x - subOffset, y, notes.minor);
p.drawText( WHITE_KEY_WIDTH + x + subOffset, y, notes.major);
}
}
}
void pianoRoll::paintEvent( QPaintEvent * _pe )
{
@@ -3125,6 +3185,11 @@ void pianoRoll::paintEvent( QPaintEvent * _pe )
p.drawPixmap( mapFromGlobal( QCursor::pos() ) + QPoint( 8, 8 ),
*cursor );
}
if( configManager::inst()->value( "ui", "printnotelabels").toInt() )
{
printNoteHeights(p, keyAreaBottom(), width(), m_startKey);
}
}
@@ -3229,7 +3294,7 @@ int pianoRoll::getKey( int _y ) const
song::PlayModes pianoRoll::desiredPlayModeForAccompany() const
{
if( m_pattern->getTrack()->getTrackContainer() ==
if( m_pattern->getTrack()->trackContainer() ==
engine::getBBTrackContainer() )
{
return song::Mode_PlayBB;
@@ -3292,7 +3357,7 @@ void pianoRoll::recordAccompany()
m_recording = true;
if( m_pattern->getTrack()->getTrackContainer() == engine::getSong() )
if( m_pattern->getTrack()->trackContainer() == engine::getSong() )
{
engine::getSong()->playSong();
}

View File

@@ -121,7 +121,9 @@ setupDialog::setupDialog( ConfigTabs _tab_to_open ) :
m_syncVSTPlugins( configManager::inst()->value( "ui",
"syncvstplugins" ).toInt() ),
m_animateAFP(configManager::inst()->value( "ui",
"animateafp").toInt() )
"animateafp").toInt() ),
m_printNoteLabels(configManager::inst()->value( "ui",
"printnotelabels").toInt() )
{
setWindowIcon( embed::getIconPixmap( "setup_general" ) );
setWindowTitle( tr( "Setup LMMS" ) );
@@ -190,12 +192,17 @@ setupDialog::setupDialog( ConfigTabs _tab_to_open ) :
tabWidget * misc_tw = new tabWidget( tr( "MISC" ), general );
misc_tw->setFixedHeight( 174 );
const int XDelta = 10;
const int YDelta = 18;
const int HeaderSize = 30;
int labelNumber = 0;
ledCheckBox * enable_tooltips = new ledCheckBox(
tr( "Enable tooltips" ),
misc_tw );
enable_tooltips->move( 10, 18 );
labelNumber++;
enable_tooltips->move( XDelta, YDelta*labelNumber );
enable_tooltips->setChecked( m_toolTips );
connect( enable_tooltips, SIGNAL( toggled( bool ) ),
this, SLOT( toggleToolTips( bool ) ) );
@@ -204,7 +211,8 @@ setupDialog::setupDialog( ConfigTabs _tab_to_open ) :
ledCheckBox * restart_msg = new ledCheckBox(
tr( "Show restart warning after changing settings" ),
misc_tw );
restart_msg->move( 10, 36 );
labelNumber++;
restart_msg->move( XDelta, YDelta*labelNumber );
restart_msg->setChecked( m_warnAfterSetup );
connect( restart_msg, SIGNAL( toggled( bool ) ),
this, SLOT( toggleWarnAfterSetup( bool ) ) );
@@ -212,7 +220,8 @@ setupDialog::setupDialog( ConfigTabs _tab_to_open ) :
ledCheckBox * dbv = new ledCheckBox( tr( "Display volume as dBV " ),
misc_tw );
dbv->move( 10, 54 );
labelNumber++;
dbv->move( XDelta, YDelta*labelNumber );
dbv->setChecked( m_displaydBV );
connect( dbv, SIGNAL( toggled( bool ) ),
this, SLOT( toggleDisplaydBV( bool ) ) );
@@ -221,7 +230,8 @@ setupDialog::setupDialog( ConfigTabs _tab_to_open ) :
ledCheckBox * mmpz = new ledCheckBox(
tr( "Compress project files per default" ),
misc_tw );
mmpz->move( 10, 72 );
labelNumber++;
mmpz->move( XDelta, YDelta*labelNumber );
mmpz->setChecked( m_MMPZ );
connect( mmpz, SIGNAL( toggled( bool ) ),
this, SLOT( toggleMMPZ( bool ) ) );
@@ -229,7 +239,8 @@ setupDialog::setupDialog( ConfigTabs _tab_to_open ) :
ledCheckBox * oneitw = new ledCheckBox(
tr( "One instrument track window mode" ),
misc_tw );
oneitw->move( 10, 90 );
labelNumber++;
oneitw->move( XDelta, YDelta*labelNumber );
oneitw->setChecked( m_oneInstrumentTrackWindow );
connect( oneitw, SIGNAL( toggled( bool ) ),
this, SLOT( toggleOneInstrumentTrackWindow( bool ) ) );
@@ -237,7 +248,8 @@ setupDialog::setupDialog( ConfigTabs _tab_to_open ) :
ledCheckBox * hqaudio = new ledCheckBox(
tr( "HQ-mode for output audio-device" ),
misc_tw );
hqaudio->move( 10, 108 );
labelNumber++;
hqaudio->move( XDelta, YDelta*labelNumber );
hqaudio->setChecked( m_hqAudioDev );
connect( hqaudio, SIGNAL( toggled( bool ) ),
this, SLOT( toggleHQAudioDev( bool ) ) );
@@ -245,7 +257,8 @@ setupDialog::setupDialog( ConfigTabs _tab_to_open ) :
ledCheckBox * compacttracks = new ledCheckBox(
tr( "Compact track buttons" ),
misc_tw );
compacttracks->move( 10, 126 );
labelNumber++;
compacttracks->move( XDelta, YDelta*labelNumber );
compacttracks->setChecked( m_compactTrackButtons );
connect( compacttracks, SIGNAL( toggled( bool ) ),
this, SLOT( toggleCompactTrackButtons( bool ) ) );
@@ -254,11 +267,22 @@ setupDialog::setupDialog( ConfigTabs _tab_to_open ) :
ledCheckBox * syncVST = new ledCheckBox(
tr( "Sync VST plugins to host playback" ),
misc_tw );
syncVST->move( 10, 144 );
labelNumber++;
syncVST->move( XDelta, YDelta*labelNumber );
syncVST->setChecked( m_syncVSTPlugins );
connect( syncVST, SIGNAL( toggled( bool ) ),
this, SLOT( toggleSyncVSTPlugins( bool ) ) );
ledCheckBox * noteLabels = new ledCheckBox(
tr( "Enable note labels in piano roll" ),
misc_tw );
labelNumber++;
noteLabels->move( XDelta, YDelta*labelNumber );
noteLabels->setChecked( m_printNoteLabels );
connect( noteLabels, SIGNAL( toggled( bool ) ),
this, SLOT( toggleNoteLabels( bool ) ) );
misc_tw->setFixedHeight( YDelta*labelNumber + HeaderSize );
gen_layout->addWidget( bufsize_tw );
@@ -800,6 +824,8 @@ void setupDialog::accept()
QString::number( m_syncVSTPlugins ) );
configManager::inst()->setValue( "ui", "animateafp",
QString::number( m_animateAFP ) );
configManager::inst()->setValue( "ui", "printnotelabels",
QString::number( m_printNoteLabels ) );
configManager::inst()->setWorkingDir( m_workingDir );
@@ -994,7 +1020,10 @@ void setupDialog::toggleAnimateAFP( bool _enabled )
}
void setupDialog::toggleNoteLabels( bool en )
{
m_printNoteLabels = en;
}
void setupDialog::toggleOneInstrumentTrackWindow( bool _enabled )

View File

@@ -77,7 +77,7 @@ void positionLine::paintEvent( QPaintEvent * _pe )
songEditor::songEditor( song * _song, songEditor * & _engine_ptr ) :
trackContainerView( _song ),
TrackContainerView( _song ),
m_s( _song ),
m_scrollBack( false ),
m_smoothScroll( configManager::inst()->value( "ui", "smoothscroll" ).toInt() )

View File

@@ -29,7 +29,7 @@
#include "graph.h"
#include "string_pair_drag.h"
#include "sample_buffer.h"
#include "SampleBuffer.h"
#include "Oscillator.h"
#include "engine.h"

View File

@@ -2,7 +2,7 @@
* AutomationTrack.cpp - AutomationTrack handles automation of objects without
* a track
*
* Copyright (c) 2008-2010 Tobias Doerffel <tobydox/at/users.sourceforge.net>
* Copyright (c) 2008-2014 Tobias Doerffel <tobydox/at/users.sourceforge.net>
* Copyright (c) 2006-2008 Javier Serrano Polo <jasp00/at/users.sourceforge.net>
*
* This file is part of Linux MultiMedia Studio - http://lmms.sourceforge.net
@@ -30,12 +30,12 @@
#include "embed.h"
#include "ProjectJournal.h"
#include "string_pair_drag.h"
#include "track_container_view.h"
#include "TrackContainerView.h"
#include "track_label_button.h"
AutomationTrack::AutomationTrack( trackContainer * _tc, bool _hidden ) :
track( _hidden ? HiddenAutomationTrack : track::AutomationTrack, _tc )
AutomationTrack::AutomationTrack( TrackContainer* tc, bool _hidden ) :
track( _hidden ? HiddenAutomationTrack : track::AutomationTrack, tc )
{
setName( tr( "Automation track" ) );
}
@@ -90,9 +90,9 @@ bool AutomationTrack::play( const midiTime & _start, const fpp_t _frames,
trackView * AutomationTrack::createView( trackContainerView * _tcv )
trackView * AutomationTrack::createView( TrackContainerView* tcv )
{
return new AutomationTrackView( this, _tcv );
return new AutomationTrackView( this, tcv );
}
@@ -127,9 +127,8 @@ void AutomationTrack::loadTrackSpecificSettings( const QDomElement & _this )
AutomationTrackView::AutomationTrackView( AutomationTrack * _at,
trackContainerView * _tcv ) :
trackView( _at, _tcv )
AutomationTrackView::AutomationTrackView( AutomationTrack * _at, TrackContainerView* tcv ) :
trackView( _at, tcv )
{
setFixedHeight( 32 );
trackLabelButton * tlb = new trackLabelButton( this,
@@ -169,12 +168,12 @@ void AutomationTrackView::dropEvent( QDropEvent * _de )
journallingObject( val.toInt() ) );
if( mod != NULL )
{
midiTime pos = midiTime( getTrackContainerView()->
midiTime pos = midiTime( trackContainerView()->
currentPosition() +
( _de->pos().x() -
getTrackContentWidget()->x() ) *
midiTime::ticksPerTact() /
static_cast<int>( getTrackContainerView()->pixelsPerTact() ) )
static_cast<int>( trackContainerView()->pixelsPerTact() ) )
.toNearestTact();
if( pos.getTicks() < 0 )

View File

@@ -69,7 +69,7 @@
#include "note_play_handle.h"
#include "pattern.h"
#include "PluginView.h"
#include "sample_play_handle.h"
#include "SamplePlayHandle.h"
#include "song.h"
#include "string_pair_drag.h"
#include "surround_area.h"
@@ -91,8 +91,8 @@ const int INSTRUMENT_WINDOW_CACHE_SIZE = 8;
// #### IT:
InstrumentTrack::InstrumentTrack( trackContainer * _tc ) :
track( track::InstrumentTrack, _tc ),
InstrumentTrack::InstrumentTrack( TrackContainer* tc ) :
track( track::InstrumentTrack, tc ),
MidiEventProcessor(),
m_audioPort( tr( "unnamed_track" ) ),
m_midiPort( tr( "unnamed_track" ), engine::mixer()->midiClient(),
@@ -659,7 +659,7 @@ bool InstrumentTrack::play( const midiTime & _start,
continue;
}
samplePlayHandle * handle = new samplePlayHandle( p );
SamplePlayHandle* handle = new SamplePlayHandle( p );
handle->setBBTrack( bb_track );
handle->setOffset( _offset );
// send it to the mixer
@@ -745,9 +745,9 @@ trackContentObject * InstrumentTrack::createTCO( const midiTime & )
trackView * InstrumentTrack::createView( trackContainerView * _tcv )
trackView * InstrumentTrack::createView( TrackContainerView* tcv )
{
return new InstrumentTrackView( this, _tcv );
return new InstrumentTrackView( this, tcv );
}
@@ -910,9 +910,8 @@ QQueue<InstrumentTrackWindow *> InstrumentTrackView::s_windowCache;
InstrumentTrackView::InstrumentTrackView( InstrumentTrack * _it,
trackContainerView * _tcv ) :
trackView( _it, _tcv ),
InstrumentTrackView::InstrumentTrackView( InstrumentTrack * _it, TrackContainerView* tcv ) :
trackView( _it, tcv ),
m_window( NULL ),
m_lastPos( -1, -1 )
{

View File

@@ -1,8 +1,8 @@
/*
* sample_track.cpp - implementation of class sampleTrack, a track which
* provides arrangement of samples
* SampleTrack.cpp - implementation of class SampleTrack, a track which
* provides arrangement of samples
*
* Copyright (c) 2005-2010 Tobias Doerffel <tobydox/at/users.sourceforge.net>
* Copyright (c) 2005-2014 Tobias Doerffel <tobydox/at/users.sourceforge.net>
*
* This file is part of Linux MultiMedia Studio - http://lmms.sourceforge.net
*
@@ -33,14 +33,14 @@
#include <QtGui/QPushButton>
#include "gui_templates.h"
#include "sample_track.h"
#include "SampleTrack.h"
#include "song.h"
#include "embed.h"
#include "engine.h"
#include "tooltip.h"
#include "AudioPort.h"
#include "sample_play_handle.h"
#include "sample_record_handle.h"
#include "SamplePlayHandle.h"
#include "SampleRecordHandle.h"
#include "string_pair_drag.h"
#include "knob.h"
#include "MainWindow.h"
@@ -49,9 +49,9 @@
#include "config_mgr.h"
sampleTCO::sampleTCO( track * _track ) :
SampleTCO::SampleTCO( track * _track ) :
trackContentObject( _track ),
m_sampleBuffer( new sampleBuffer )
m_sampleBuffer( new SampleBuffer )
{
saveJournallingState( false );
setSampleFile( "" );
@@ -66,7 +66,7 @@ sampleTCO::sampleTCO( track * _track ) :
sampleTCO::~sampleTCO()
SampleTCO::~SampleTCO()
{
sharedObject::unref( m_sampleBuffer );
}
@@ -74,7 +74,7 @@ sampleTCO::~sampleTCO()
void sampleTCO::changeLength( const midiTime & _length )
void SampleTCO::changeLength( const midiTime & _length )
{
trackContentObject::changeLength( qMax( static_cast<Sint32>( _length ),
DefaultTicksPerTact ) );
@@ -83,17 +83,17 @@ void sampleTCO::changeLength( const midiTime & _length )
const QString & sampleTCO::sampleFile() const
const QString & SampleTCO::sampleFile() const
{
return m_sampleBuffer->audioFile();
}
void sampleTCO::setSampleBuffer( sampleBuffer * _sb )
void SampleTCO::setSampleBuffer( SampleBuffer* sb )
{
sharedObject::unref( m_sampleBuffer );
m_sampleBuffer = _sb;
m_sampleBuffer = sb;
updateLength();
emit sampleChanged();
@@ -101,7 +101,7 @@ void sampleTCO::setSampleBuffer( sampleBuffer * _sb )
void sampleTCO::setSampleFile( const QString & _sf )
void SampleTCO::setSampleFile( const QString & _sf )
{
m_sampleBuffer->setAudioFile( _sf );
updateLength();
@@ -112,7 +112,7 @@ void sampleTCO::setSampleFile( const QString & _sf )
void sampleTCO::toggleRecord()
void SampleTCO::toggleRecord()
{
m_recordModel.setValue( !m_recordModel.value() );
emit dataChanged();
@@ -121,7 +121,7 @@ void sampleTCO::toggleRecord()
void sampleTCO::updateLength( bpm_t )
void SampleTCO::updateLength( bpm_t )
{
changeLength( sampleLength() );
}
@@ -129,7 +129,7 @@ void sampleTCO::updateLength( bpm_t )
midiTime sampleTCO::sampleLength() const
midiTime SampleTCO::sampleLength() const
{
return (int)( m_sampleBuffer->frames() / engine::framesPerTick() );
}
@@ -137,7 +137,7 @@ midiTime sampleTCO::sampleLength() const
void sampleTCO::saveSettings( QDomDocument & _doc, QDomElement & _this )
void SampleTCO::saveSettings( QDomDocument & _doc, QDomElement & _this )
{
if( _this.parentNode().nodeName() == "clipboard" )
{
@@ -161,7 +161,7 @@ void sampleTCO::saveSettings( QDomDocument & _doc, QDomElement & _this )
void sampleTCO::loadSettings( const QDomElement & _this )
void SampleTCO::loadSettings( const QDomElement & _this )
{
if( _this.attribute( "pos" ).toInt() >= 0 )
{
@@ -179,9 +179,9 @@ void sampleTCO::loadSettings( const QDomElement & _this )
trackContentObjectView * sampleTCO::createView( trackView * _tv )
trackContentObjectView * SampleTCO::createView( trackView * _tv )
{
return new sampleTCOView( this, _tv );
return new SampleTCOView( this, _tv );
}
@@ -193,14 +193,14 @@ trackContentObjectView * sampleTCO::createView( trackView * _tv )
sampleTCOView::sampleTCOView( sampleTCO * _tco, trackView * _tv ) :
SampleTCOView::SampleTCOView( SampleTCO * _tco, trackView * _tv ) :
trackContentObjectView( _tco, _tv ),
m_tco( _tco )
{
// update UI and tooltip
updateSample();
// track future changes of sampleTCO
// track future changes of SampleTCO
connect( m_tco, SIGNAL( sampleChanged() ),
this, SLOT( updateSample() ) );
}
@@ -208,14 +208,14 @@ sampleTCOView::sampleTCOView( sampleTCO * _tco, trackView * _tv ) :
sampleTCOView::~sampleTCOView()
SampleTCOView::~SampleTCOView()
{
}
void sampleTCOView::updateSample()
void SampleTCOView::updateSample()
{
update();
// set tooltip to filename so that user can see what sample this
@@ -228,7 +228,7 @@ void sampleTCOView::updateSample()
void sampleTCOView::contextMenuEvent( QContextMenuEvent * _cme )
void SampleTCOView::contextMenuEvent( QContextMenuEvent * _cme )
{
QMenu contextMenu( this );
if( fixedTCOs() == false )
@@ -259,7 +259,7 @@ void sampleTCOView::contextMenuEvent( QContextMenuEvent * _cme )
void sampleTCOView::dragEnterEvent( QDragEnterEvent * _dee )
void SampleTCOView::dragEnterEvent( QDragEnterEvent * _dee )
{
if( stringPairDrag::processDragEnterEvent( _dee,
"samplefile,sampledata" ) == false )
@@ -271,7 +271,7 @@ void sampleTCOView::dragEnterEvent( QDragEnterEvent * _dee )
void sampleTCOView::dropEvent( QDropEvent * _de )
void SampleTCOView::dropEvent( QDropEvent * _de )
{
if( stringPairDrag::decodeKey( _de ) == "samplefile" )
{
@@ -296,7 +296,7 @@ void sampleTCOView::dropEvent( QDropEvent * _de )
void sampleTCOView::mousePressEvent( QMouseEvent * _me )
void SampleTCOView::mousePressEvent( QMouseEvent * _me )
{
if( _me->button() == Qt::LeftButton &&
_me->modifiers() & Qt::ControlModifier &&
@@ -313,7 +313,7 @@ void sampleTCOView::mousePressEvent( QMouseEvent * _me )
void sampleTCOView::mouseDoubleClickEvent( QMouseEvent * )
void SampleTCOView::mouseDoubleClickEvent( QMouseEvent * )
{
QString af = m_tco->m_sampleBuffer->openAudioFile();
if( af != "" && af != m_tco->m_sampleBuffer->audioFile() )
@@ -326,7 +326,7 @@ void sampleTCOView::mouseDoubleClickEvent( QMouseEvent * )
void sampleTCOView::paintEvent( QPaintEvent * _pe )
void SampleTCOView::paintEvent( QPaintEvent * _pe )
{
QPainter p( this );
@@ -385,8 +385,8 @@ void sampleTCOView::paintEvent( QPaintEvent * _pe )
sampleTrack::sampleTrack( trackContainer * _tc ) :
track( SampleTrack, _tc ),
SampleTrack::SampleTrack( TrackContainer* tc ) :
track( track::SampleTrack, tc ),
m_audioPort( tr( "Sample track" ) ),
m_volumeModel( DefaultVolume, MinVolume, MaxVolume, 1.0, this,
tr( "Volume" ) )
@@ -397,7 +397,7 @@ sampleTrack::sampleTrack( trackContainer * _tc ) :
sampleTrack::~sampleTrack()
SampleTrack::~SampleTrack()
{
engine::mixer()->removePlayHandles( this );
}
@@ -405,7 +405,7 @@ sampleTrack::~sampleTrack()
bool sampleTrack::play( const midiTime & _start, const fpp_t _frames,
bool SampleTrack::play( const midiTime & _start, const fpp_t _frames,
const f_cnt_t _offset,
Sint16 /*_tco_num*/ )
{
@@ -419,7 +419,7 @@ bool sampleTrack::play( const midiTime & _start, const fpp_t _frames,
{
continue;
}
sampleTCO * st = dynamic_cast<sampleTCO *>( tco );
SampleTCO * st = dynamic_cast<SampleTCO *>( tco );
if( !st->isMuted() )
{
playHandle * handle;
@@ -429,12 +429,12 @@ bool sampleTrack::play( const midiTime & _start, const fpp_t _frames,
{
return played_a_note;
}
sampleRecordHandle * smpHandle = new sampleRecordHandle( st );
SampleRecordHandle* smpHandle = new SampleRecordHandle( st );
handle = smpHandle;
}
else
{
samplePlayHandle * smpHandle = new samplePlayHandle( st );
SamplePlayHandle* smpHandle = new SamplePlayHandle( st );
smpHandle->setVolumeModel( &m_volumeModel );
handle = smpHandle;
}
@@ -453,23 +453,23 @@ bool sampleTrack::play( const midiTime & _start, const fpp_t _frames,
trackView * sampleTrack::createView( trackContainerView * _tcv )
trackView * SampleTrack::createView( TrackContainerView* tcv )
{
return new sampleTrackView( this, _tcv );
return new SampleTrackView( this, tcv );
}
trackContentObject * sampleTrack::createTCO( const midiTime & )
trackContentObject * SampleTrack::createTCO( const midiTime & )
{
return new sampleTCO( this );
return new SampleTCO( this );
}
void sampleTrack::saveTrackSpecificSettings( QDomDocument & _doc,
void SampleTrack::saveTrackSpecificSettings( QDomDocument & _doc,
QDomElement & _this )
{
m_audioPort.effects()->saveState( _doc, _this );
@@ -482,7 +482,7 @@ void sampleTrack::saveTrackSpecificSettings( QDomDocument & _doc,
void sampleTrack::loadTrackSpecificSettings( const QDomElement & _this )
void SampleTrack::loadTrackSpecificSettings( const QDomElement & _this )
{
QDomNode node = _this.firstChild();
m_audioPort.effects()->clear();
@@ -505,8 +505,8 @@ void sampleTrack::loadTrackSpecificSettings( const QDomElement & _this )
sampleTrackView::sampleTrackView( sampleTrack * _t, trackContainerView * _tcv ) :
trackView( _t, _tcv )
SampleTrackView::SampleTrackView( SampleTrack * _t, TrackContainerView* tcv ) :
trackView( _t, tcv )
{
setFixedHeight( 32 );
@@ -550,7 +550,7 @@ sampleTrackView::sampleTrackView( sampleTrack * _t, trackContainerView * _tcv )
sampleTrackView::~sampleTrackView()
SampleTrackView::~SampleTrackView()
{
m_effWindow->deleteLater();
}
@@ -558,7 +558,7 @@ sampleTrackView::~sampleTrackView()
void sampleTrackView::showEffects()
void SampleTrackView::showEffects()
{
if( m_effWindow->isHidden() )
{
@@ -574,9 +574,9 @@ void sampleTrackView::showEffects()
void sampleTrackView::modelChanged()
void SampleTrackView::modelChanged()
{
sampleTrack * st = castModel<sampleTrack>();
SampleTrack * st = castModel<SampleTrack>();
m_volumeKnob->setModel( &st->m_volumeModel );
trackView::modelChanged();
@@ -584,5 +584,5 @@ void sampleTrackView::modelChanged()
#include "moc_sample_track.cxx"
#include "moc_SampleTrack.cxx"

View File

@@ -298,8 +298,8 @@ void bbTCOView::setColor( QColor _new_color )
bbTrack::bbTrack( trackContainer * _tc ) :
track( BBTrack, _tc )
bbTrack::bbTrack( TrackContainer* tc ) :
track( BBTrack, tc )
{
int bbNum = s_infoMap.size();
s_infoMap[this] = bbNum;
@@ -333,7 +333,7 @@ bbTrack::~bbTrack()
// remove us from TC so bbTrackContainer::numOfBBs() returns a smaller
// value and thus combobox-updating in bbTrackContainer works well
getTrackContainer()->removeTrack( this );
trackContainer()->removeTrack( this );
engine::getBBTrackContainer()->updateComboBox();
}
@@ -391,9 +391,9 @@ bool bbTrack::play( const midiTime & _start, const fpp_t _frames,
trackView * bbTrack::createView( trackContainerView * _tcv )
trackView * bbTrack::createView( TrackContainerView* tcv )
{
return( new bbTrackView( this, _tcv ) );
return new bbTrackView( this, tcv );
}
@@ -454,11 +454,11 @@ void bbTrack::loadTrackSpecificSettings( const QDomElement & _this )
const int src = _this.attribute( "clonebbt" ).toInt();
const int dst = s_infoMap[this];
engine::getBBTrackContainer()->createTCOsForBB( dst );
trackContainer::trackList tl =
TrackContainer::TrackList tl =
engine::getBBTrackContainer()->tracks();
// copy TCOs of all tracks from source BB (at bar "src") to destination
// TCOs (which are created if they do not exist yet)
for( trackContainer::trackList::iterator it = tl.begin();
for( TrackContainer::TrackList::iterator it = tl.begin();
it != tl.end(); ++it )
{
( *it )->getTCO( src )->copy();
@@ -470,7 +470,7 @@ void bbTrack::loadTrackSpecificSettings( const QDomElement & _this )
else
{
QDomNode node = _this.namedItem(
trackContainer::classNodeName() );
TrackContainer::classNodeName() );
if( node.isElement() )
{
( (JournallingObject *)engine::getBBTrackContainer() )->
@@ -539,8 +539,8 @@ void bbTrack::swapBBTracks( track * _track1, track * _track2 )
bbTrackView::bbTrackView( bbTrack * _bbt, trackContainerView * _tcv ) :
trackView( _bbt, _tcv ),
bbTrackView::bbTrackView( bbTrack * _bbt, TrackContainerView* tcv ) :
trackView( _bbt, tcv ),
m_bbTrack( _bbt )
{
setFixedHeight( 32 );
@@ -583,7 +583,7 @@ void bbTrackView::clickedTrackLabel()
bbTrack::numOfBBTrack( m_bbTrack ) );
engine::getBBEditor()->show();
/* foreach( bbTrackView * tv,
getTrackContainerView()->findChildren<bbTrackView *>() )
trackContainerView()->findChildren<bbTrackView *>() )
{
tv->m_trackLabel->update();
}*/

View File

@@ -1,7 +1,7 @@
/*
* pattern.cpp - implementation of class pattern which holds notes
*
* Copyright (c) 2004-2012 Tobias Doerffel <tobydox/at/users.sourceforge.net>
* Copyright (c) 2004-2014 Tobias Doerffel <tobydox/at/users.sourceforge.net>
* Copyright (c) 2005-2007 Danny McRae <khjklujn/at/yahoo.com>
*
* This file is part of Linux MultiMedia Studio - http://lmms.sourceforge.net
@@ -40,9 +40,9 @@
#include "embed.h"
#include "engine.h"
#include "piano_roll.h"
#include "track_container.h"
#include "TrackContainer.h"
#include "rename_dialog.h"
#include "sample_buffer.h"
#include "SampleBuffer.h"
#include "AudioSampleRecorder.h"
#include "song.h"
#include "tooltip.h"
@@ -563,7 +563,7 @@ void pattern::ensureBeatNotes()
void pattern::updateBBTrack()
{
if( getTrack()->getTrackContainer() == engine::getBBTrackContainer() )
if( getTrack()->trackContainer() == engine::getBBTrackContainer() )
{
engine::getBBTrackContainer()->updateBBTrack( this );
}