Merge branch 'stable-0.4' into stable-0.4-new-fx-mixer
This commit is contained in:
@@ -39,11 +39,7 @@ ENDIF(IS_X86)
|
||||
IF(CMAKE_INSTALL_LIBDIR)
|
||||
SET(LIB_DIR "${CMAKE_INSTALL_LIBDIR}")
|
||||
ELSE(CMAKE_INSTALL_LIBDIR)
|
||||
IF(LMMS_HOST_X86_64)
|
||||
SET(LIB_DIR lib64)
|
||||
ELSE(LMMS_HOST_X86_64)
|
||||
SET(LIB_DIR lib)
|
||||
ENDIF(LMMS_HOST_X86_64)
|
||||
SET(LIB_DIR lib)
|
||||
ENDIF(CMAKE_INSTALL_LIBDIR)
|
||||
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
* AudioSampleRecorder.h - 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
|
||||
*
|
||||
@@ -31,7 +31,7 @@
|
||||
|
||||
#include "AudioDevice.h"
|
||||
|
||||
class sampleBuffer;
|
||||
class SampleBuffer;
|
||||
|
||||
|
||||
class AudioSampleRecorder : public AudioDevice
|
||||
@@ -42,7 +42,7 @@ public:
|
||||
virtual ~AudioSampleRecorder();
|
||||
|
||||
f_cnt_t framesRecorded() const;
|
||||
void createSampleBuffer( sampleBuffer * * _sample_buf );
|
||||
void createSampleBuffer( SampleBuffer** sampleBuffer );
|
||||
|
||||
|
||||
private:
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
* AutomationTrack.h - declaration of class AutomationTrack, which 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
|
||||
@@ -33,7 +33,7 @@
|
||||
class AutomationTrack : public track
|
||||
{
|
||||
public:
|
||||
AutomationTrack( trackContainer * _tc, bool _hidden = false );
|
||||
AutomationTrack( TrackContainer* tc, bool _hidden = false );
|
||||
virtual ~AutomationTrack();
|
||||
|
||||
virtual bool play( const midiTime & _start, const fpp_t _frames,
|
||||
@@ -45,7 +45,7 @@ public:
|
||||
return "automationtrack";
|
||||
}
|
||||
|
||||
virtual trackView * createView( trackContainerView * );
|
||||
virtual trackView * createView( TrackContainerView* );
|
||||
virtual trackContentObject * createTCO( const midiTime & _pos );
|
||||
|
||||
virtual void saveTrackSpecificSettings( QDomDocument & _doc,
|
||||
@@ -62,7 +62,7 @@ private:
|
||||
class AutomationTrackView : public trackView
|
||||
{
|
||||
public:
|
||||
AutomationTrackView( AutomationTrack * _at, trackContainerView * _tcv );
|
||||
AutomationTrackView( AutomationTrack* at, TrackContainerView* tcv );
|
||||
virtual ~AutomationTrackView();
|
||||
|
||||
virtual void dragEnterEvent( QDragEnterEvent * _dee );
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
* EnvelopeAndLfoParameters.h - class EnvelopeAndLfoParameters
|
||||
*
|
||||
* Copyright (c) 2004-2010 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
|
||||
*
|
||||
@@ -29,7 +29,7 @@
|
||||
|
||||
#include "JournallingObject.h"
|
||||
#include "AutomatableModel.h"
|
||||
#include "sample_buffer.h"
|
||||
#include "SampleBuffer.h"
|
||||
#include "TempoSyncKnobModel.h"
|
||||
#include "lmms_basics.h"
|
||||
|
||||
@@ -158,7 +158,7 @@ private:
|
||||
bool m_lfoAmountIsZero;
|
||||
sample_t * m_lfoShapeData;
|
||||
bool m_bad_lfoShapeData;
|
||||
sampleBuffer m_userWave;
|
||||
SampleBuffer m_userWave;
|
||||
|
||||
enum LfoShapes
|
||||
{
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
* ImportFilter.h - declaration of class ImportFilter, the base-class for all
|
||||
* file import filters
|
||||
*
|
||||
* 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
|
||||
*
|
||||
@@ -31,7 +31,7 @@
|
||||
#include "Plugin.h"
|
||||
|
||||
|
||||
class trackContainer;
|
||||
class TrackContainer;
|
||||
|
||||
|
||||
class EXPORT ImportFilter : public Plugin
|
||||
@@ -45,11 +45,11 @@ public:
|
||||
// tries to import given file to given track-container by having all
|
||||
// available import-filters to try to import the file
|
||||
static void import( const QString & _file_to_import,
|
||||
trackContainer * _tc );
|
||||
TrackContainer* tc );
|
||||
|
||||
|
||||
protected:
|
||||
virtual bool tryImport( trackContainer * _tc ) = 0;
|
||||
virtual bool tryImport( TrackContainer* tc ) = 0;
|
||||
|
||||
const QFile & file() const
|
||||
{
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
* InstrumentTrack.h - declaration of class InstrumentTrack, a track + window
|
||||
* which holds an instrument-plugin
|
||||
*
|
||||
* 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
|
||||
*
|
||||
@@ -64,7 +64,7 @@ class EXPORT InstrumentTrack : public track, public MidiEventProcessor
|
||||
Q_OBJECT
|
||||
mapPropertyFromModel(int,getVolume,setVolume,m_volumeModel);
|
||||
public:
|
||||
InstrumentTrack( trackContainer * _tc );
|
||||
InstrumentTrack( TrackContainer* tc );
|
||||
virtual ~InstrumentTrack();
|
||||
|
||||
// used by instrument
|
||||
@@ -123,7 +123,7 @@ public:
|
||||
const f_cnt_t _frame_base,
|
||||
Sint16 _tco_num = -1 );
|
||||
// create new view for me
|
||||
virtual trackView * createView( trackContainerView * _tcv );
|
||||
virtual trackView * createView( TrackContainerView* tcv );
|
||||
|
||||
// create new track-content-object = pattern
|
||||
virtual trackContentObject * createTCO( const midiTime & _pos );
|
||||
@@ -254,7 +254,7 @@ class InstrumentTrackView : public trackView
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
InstrumentTrackView( InstrumentTrack * _it, trackContainerView * _tc );
|
||||
InstrumentTrackView( InstrumentTrack * _it, TrackContainerView* tc );
|
||||
virtual ~InstrumentTrackView();
|
||||
|
||||
InstrumentTrackWindow * getInstrumentTrackWindow();
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
* Oscillator.h - declaration of class Oscillator
|
||||
*
|
||||
* 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,11 +33,11 @@
|
||||
#include <stdlib.h>
|
||||
#endif
|
||||
|
||||
#include "sample_buffer.h"
|
||||
#include "SampleBuffer.h"
|
||||
#include "lmms_constants.h"
|
||||
|
||||
|
||||
class sampleBuffer;
|
||||
class SampleBuffer;
|
||||
class IntModel;
|
||||
|
||||
|
||||
@@ -81,7 +81,7 @@ public:
|
||||
}
|
||||
|
||||
|
||||
inline void setUserWave( const sampleBuffer * _wave )
|
||||
inline void setUserWave( const SampleBuffer * _wave )
|
||||
{
|
||||
m_userWave = _wave;
|
||||
}
|
||||
@@ -165,7 +165,7 @@ private:
|
||||
Oscillator * m_subOsc;
|
||||
float m_phaseOffset;
|
||||
float m_phase;
|
||||
const sampleBuffer * m_userWave;
|
||||
const SampleBuffer * m_userWave;
|
||||
|
||||
|
||||
void updateNoSub( sampleFrame * _ab, const fpp_t _frames,
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
* sample_buffer.h - container-class sampleBuffer
|
||||
* SampleBuffer.h - container-class SampleBuffer
|
||||
*
|
||||
* 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
|
||||
*
|
||||
@@ -42,7 +42,7 @@
|
||||
class QPainter;
|
||||
|
||||
|
||||
class EXPORT sampleBuffer : public QObject, public sharedObject
|
||||
class EXPORT SampleBuffer : public QObject, public sharedObject
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
@@ -58,19 +58,19 @@ public:
|
||||
const bool m_varyingPitch;
|
||||
SRC_STATE * m_resamplingData;
|
||||
|
||||
friend class sampleBuffer;
|
||||
friend class SampleBuffer;
|
||||
|
||||
} ;
|
||||
|
||||
|
||||
// constructor which either loads sample _audio_file or decodes
|
||||
// base64-data out of string
|
||||
sampleBuffer( const QString & _audio_file = QString(),
|
||||
SampleBuffer( const QString & _audio_file = QString(),
|
||||
bool _is_base64_data = false );
|
||||
sampleBuffer( const sampleFrame * _data, const f_cnt_t _frames );
|
||||
sampleBuffer( const f_cnt_t _frames );
|
||||
SampleBuffer( const sampleFrame * _data, const f_cnt_t _frames );
|
||||
SampleBuffer( const f_cnt_t _frames );
|
||||
|
||||
virtual ~sampleBuffer();
|
||||
virtual ~SampleBuffer();
|
||||
|
||||
bool play( sampleFrame * _ab, handleState * _state,
|
||||
const fpp_t _frames,
|
||||
@@ -166,12 +166,12 @@ public:
|
||||
QString & toBase64( QString & _dst ) const;
|
||||
|
||||
|
||||
static sampleBuffer * resample( sampleFrame * _data,
|
||||
static SampleBuffer * resample( sampleFrame * _data,
|
||||
const f_cnt_t _frames,
|
||||
const sample_rate_t _src_sr,
|
||||
const sample_rate_t _dst_sr );
|
||||
|
||||
static inline sampleBuffer * resample( sampleBuffer * _buf,
|
||||
static inline SampleBuffer * resample( SampleBuffer * _buf,
|
||||
const sample_rate_t _src_sr,
|
||||
const sample_rate_t _dst_sr )
|
||||
{
|
||||
@@ -219,6 +219,8 @@ public slots:
|
||||
private:
|
||||
void update( bool _keep_settings = false );
|
||||
|
||||
void convertIntToFloat ( int_sample_t * & _ibuf, f_cnt_t _frames, int _channels);
|
||||
void directFloatWrite ( sample_t * & _fbuf, f_cnt_t _frames, int _channels);
|
||||
|
||||
f_cnt_t decodeSampleSF( const char * _f, int_sample_t * & _buf,
|
||||
ch_cnt_t & _channels,
|
||||
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
* sample_play_handle.h - play-handle for playing a sample
|
||||
* SamplePlayHandle.h - play-handle for playing a sample
|
||||
*
|
||||
* Copyright (c) 2005-2008 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,29 +22,28 @@
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
#ifndef _SAMPLE_PLAY_HANDLE_H
|
||||
#define _SAMPLE_PLAY_HANDLE_H
|
||||
|
||||
#include "Mixer.h"
|
||||
#include "sample_buffer.h"
|
||||
#include "SampleBuffer.h"
|
||||
#include "AutomatableModel.h"
|
||||
|
||||
class bbTrack;
|
||||
class pattern;
|
||||
class sampleTCO;
|
||||
class SampleTCO;
|
||||
class track;
|
||||
class AudioPort;
|
||||
|
||||
|
||||
class samplePlayHandle : public playHandle
|
||||
class SamplePlayHandle : public playHandle
|
||||
{
|
||||
public:
|
||||
samplePlayHandle( const QString & _sample_file );
|
||||
samplePlayHandle( sampleBuffer * _sample_buffer );
|
||||
samplePlayHandle( sampleTCO * _tco );
|
||||
samplePlayHandle( pattern * _pattern );
|
||||
virtual ~samplePlayHandle();
|
||||
SamplePlayHandle( const QString& sampleFile );
|
||||
SamplePlayHandle( SampleBuffer* sampleBuffer );
|
||||
SamplePlayHandle( SampleTCO* tco );
|
||||
SamplePlayHandle( pattern * _pattern );
|
||||
virtual ~SamplePlayHandle();
|
||||
|
||||
virtual inline bool affinityMatters() const
|
||||
{
|
||||
@@ -79,11 +78,11 @@ public:
|
||||
|
||||
|
||||
private:
|
||||
sampleBuffer * m_sampleBuffer;
|
||||
SampleBuffer * m_sampleBuffer;
|
||||
bool m_doneMayReturnTrue;
|
||||
|
||||
f_cnt_t m_frame;
|
||||
sampleBuffer::handleState m_state;
|
||||
SampleBuffer::handleState m_state;
|
||||
|
||||
AudioPort * m_audioPort;
|
||||
const bool m_ownAudioPort;
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* sample_record_handle.h - play-handle for recording a sample
|
||||
* SampleRecordHandle.h - play-handle for recording a sample
|
||||
*
|
||||
* Copyright (c) 2008 Csaba Hruska <csaba.hruska/at/gmail.com>
|
||||
*
|
||||
@@ -31,19 +31,19 @@
|
||||
#include <qobject.h>
|
||||
|
||||
#include "Mixer.h"
|
||||
#include "sample_buffer.h"
|
||||
#include "SampleBuffer.h"
|
||||
|
||||
class bbTrack;
|
||||
class pattern;
|
||||
class sampleTCO;
|
||||
class SampleTCO;
|
||||
class track;
|
||||
|
||||
|
||||
class sampleRecordHandle : public playHandle
|
||||
class SampleRecordHandle : public playHandle
|
||||
{
|
||||
public:
|
||||
sampleRecordHandle( sampleTCO * _tco );
|
||||
virtual ~sampleRecordHandle();
|
||||
SampleRecordHandle( SampleTCO* tco );
|
||||
virtual ~SampleRecordHandle();
|
||||
|
||||
virtual void play( sampleFrame * _working_buffer );
|
||||
virtual bool done() const;
|
||||
@@ -51,7 +51,7 @@ public:
|
||||
virtual bool isFromTrack( const track * _track ) const;
|
||||
|
||||
f_cnt_t framesRecorded() const;
|
||||
void createSampleBuffer( sampleBuffer * * _sample_buf );
|
||||
void createSampleBuffer( SampleBuffer * * _sample_buf );
|
||||
|
||||
|
||||
private:
|
||||
@@ -65,7 +65,7 @@ private:
|
||||
|
||||
track * m_track;
|
||||
bbTrack * m_bbTrack;
|
||||
sampleTCO * m_tco;
|
||||
SampleTCO * m_tco;
|
||||
|
||||
} ;
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
/*
|
||||
* sample_track.h - class sampleTrack, a track which provides arrangement of
|
||||
* samples
|
||||
* SampleTrack.h - 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,16 +32,16 @@
|
||||
|
||||
class EffectRackView;
|
||||
class knob;
|
||||
class sampleBuffer;
|
||||
class SampleBuffer;
|
||||
|
||||
|
||||
class sampleTCO : public trackContentObject
|
||||
class SampleTCO : public trackContentObject
|
||||
{
|
||||
Q_OBJECT
|
||||
mapPropertyFromModel(bool,isRecord,setRecord,m_recordModel);
|
||||
public:
|
||||
sampleTCO( track * _track );
|
||||
virtual ~sampleTCO();
|
||||
SampleTCO( track * _track );
|
||||
virtual ~SampleTCO();
|
||||
|
||||
virtual void changeLength( const midiTime & _length );
|
||||
const QString & sampleFile() const;
|
||||
@@ -54,7 +53,7 @@ public:
|
||||
return "sampletco";
|
||||
}
|
||||
|
||||
sampleBuffer * getSampleBuffer()
|
||||
SampleBuffer* sampleBuffer()
|
||||
{
|
||||
return m_sampleBuffer;
|
||||
}
|
||||
@@ -65,18 +64,18 @@ public:
|
||||
|
||||
|
||||
public slots:
|
||||
void setSampleBuffer( sampleBuffer * _sb );
|
||||
void setSampleBuffer( SampleBuffer* sb );
|
||||
void setSampleFile( const QString & _sf );
|
||||
void updateLength( bpm_t = 0 );
|
||||
void toggleRecord();
|
||||
|
||||
|
||||
private:
|
||||
sampleBuffer * m_sampleBuffer;
|
||||
SampleBuffer* m_sampleBuffer;
|
||||
BoolModel m_recordModel;
|
||||
|
||||
|
||||
friend class sampleTCOView;
|
||||
friend class SampleTCOView;
|
||||
|
||||
|
||||
signals:
|
||||
@@ -86,12 +85,12 @@ signals:
|
||||
|
||||
|
||||
|
||||
class sampleTCOView : public trackContentObjectView
|
||||
class SampleTCOView : public trackContentObjectView
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
sampleTCOView( sampleTCO * _tco, trackView * _tv );
|
||||
virtual ~sampleTCOView();
|
||||
SampleTCOView( SampleTCO * _tco, trackView * _tv );
|
||||
virtual ~SampleTCOView();
|
||||
|
||||
|
||||
public slots:
|
||||
@@ -108,24 +107,24 @@ protected:
|
||||
|
||||
|
||||
private:
|
||||
sampleTCO * m_tco;
|
||||
SampleTCO * m_tco;
|
||||
|
||||
} ;
|
||||
|
||||
|
||||
|
||||
|
||||
class sampleTrack : public track
|
||||
class SampleTrack : public track
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
sampleTrack( trackContainer * _tc );
|
||||
virtual ~sampleTrack();
|
||||
SampleTrack( TrackContainer* tc );
|
||||
virtual ~SampleTrack();
|
||||
|
||||
virtual bool play( const midiTime & _start, const fpp_t _frames,
|
||||
const f_cnt_t _frame_base,
|
||||
Sint16 _tco_num = -1 );
|
||||
virtual trackView * createView( trackContainerView * _tcv );
|
||||
virtual trackView * createView( TrackContainerView* tcv );
|
||||
virtual trackContentObject * createTCO( const midiTime & _pos );
|
||||
|
||||
|
||||
@@ -149,18 +148,18 @@ private:
|
||||
FloatModel m_volumeModel;
|
||||
|
||||
|
||||
friend class sampleTrackView;
|
||||
friend class SampleTrackView;
|
||||
|
||||
} ;
|
||||
|
||||
|
||||
|
||||
class sampleTrackView : public trackView
|
||||
class SampleTrackView : public trackView
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
sampleTrackView( sampleTrack * _track, trackContainerView * _tcv );
|
||||
virtual ~sampleTrackView();
|
||||
SampleTrackView( SampleTrack* track, TrackContainerView* tcv );
|
||||
virtual ~SampleTrackView();
|
||||
|
||||
|
||||
public slots:
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* track_container.h - base-class for all track-containers like Song-Editor,
|
||||
* BB-Editor...
|
||||
* TrackContainer.h - base-class for all track-containers like Song-Editor,
|
||||
* BB-Editor...
|
||||
*
|
||||
* Copyright (c) 2004-2009 Tobias Doerffel <tobydox/at/users.sourceforge.net>
|
||||
*
|
||||
@@ -34,17 +34,17 @@
|
||||
|
||||
class AutomationPattern;
|
||||
class InstrumentTrack;
|
||||
class trackContainerView;
|
||||
class TrackContainerView;
|
||||
|
||||
|
||||
class EXPORT trackContainer : public Model, public JournallingObject
|
||||
class EXPORT TrackContainer : public Model, public JournallingObject
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
typedef QVector<track *> trackList;
|
||||
typedef QVector<track *> TrackList;
|
||||
|
||||
trackContainer();
|
||||
virtual ~trackContainer();
|
||||
TrackContainer();
|
||||
virtual ~TrackContainer();
|
||||
|
||||
virtual void saveSettings( QDomDocument & _doc, QDomElement & _parent );
|
||||
|
||||
@@ -66,7 +66,7 @@ public:
|
||||
|
||||
void clearAllTracks();
|
||||
|
||||
const trackList & tracks() const
|
||||
const TrackList & tracks() const
|
||||
{
|
||||
return m_tracks;
|
||||
}
|
||||
@@ -86,16 +86,16 @@ protected:
|
||||
mutable QReadWriteLock m_tracksMutex;
|
||||
|
||||
private:
|
||||
trackList m_tracks;
|
||||
TrackList m_tracks;
|
||||
|
||||
|
||||
friend class trackContainerView;
|
||||
friend class TrackContainerView;
|
||||
friend class track;
|
||||
|
||||
} ;
|
||||
|
||||
|
||||
class DummyTrackContainer : public trackContainer
|
||||
class DummyTrackContainer : public TrackContainer
|
||||
{
|
||||
public:
|
||||
DummyTrackContainer();
|
||||
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
* track_container_view.h - view-component for trackContainer
|
||||
* TrackContainerView.h - 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
|
||||
*
|
||||
@@ -36,17 +36,17 @@
|
||||
|
||||
|
||||
class QVBoxLayout;
|
||||
class trackContainer;
|
||||
class TrackContainer;
|
||||
|
||||
|
||||
class trackContainerView : public QWidget, public ModelView,
|
||||
class TrackContainerView : public QWidget, public ModelView,
|
||||
public JournallingObject,
|
||||
public SerializingObjectHook
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
trackContainerView( trackContainer * _tc );
|
||||
virtual ~trackContainerView();
|
||||
TrackContainerView( TrackContainer* tc );
|
||||
virtual ~TrackContainerView();
|
||||
|
||||
virtual void saveSettings( QDomDocument & _doc, QDomElement & _this );
|
||||
virtual void loadSettings( const QDomElement & _this );
|
||||
@@ -92,14 +92,14 @@ public:
|
||||
}
|
||||
|
||||
|
||||
trackContainer * model()
|
||||
TrackContainer* model()
|
||||
{
|
||||
return( m_tc );
|
||||
return m_tc;
|
||||
}
|
||||
|
||||
const trackContainer * model() const
|
||||
const TrackContainer* model() const
|
||||
{
|
||||
return( m_tc );
|
||||
return m_tc;
|
||||
}
|
||||
|
||||
void moveTrackViewUp( trackView * _tv );
|
||||
@@ -155,18 +155,18 @@ private:
|
||||
class scrollArea : public QScrollArea
|
||||
{
|
||||
public:
|
||||
scrollArea( trackContainerView * _parent );
|
||||
scrollArea( TrackContainerView* parent );
|
||||
virtual ~scrollArea();
|
||||
|
||||
protected:
|
||||
virtual void wheelEvent( QWheelEvent * _we );
|
||||
|
||||
private:
|
||||
trackContainerView * m_trackContainerView;
|
||||
TrackContainerView* m_trackContainerView;
|
||||
|
||||
} ;
|
||||
|
||||
trackContainer * m_tc;
|
||||
TrackContainer* m_tc;
|
||||
typedef QList<trackView *> trackViewList;
|
||||
trackViewList m_trackViews;
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
* bb_editor.h - view-component of BB-Editor
|
||||
*
|
||||
* Copyright (c) 2004-2008 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
|
||||
*
|
||||
@@ -26,7 +26,7 @@
|
||||
#ifndef _BB_EDITOR_H
|
||||
#define _BB_EDITOR_H
|
||||
|
||||
#include "track_container_view.h"
|
||||
#include "TrackContainerView.h"
|
||||
|
||||
|
||||
class bbTrackContainer;
|
||||
@@ -34,7 +34,7 @@ class comboBox;
|
||||
class toolButton;
|
||||
|
||||
|
||||
class bbEditor : public trackContainerView
|
||||
class bbEditor : public TrackContainerView
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
* bb_track.h - class bbTrack, a wrapper for using bbEditor
|
||||
* (which is a singleton-class) as track
|
||||
*
|
||||
* Copyright (c) 2004-2008 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 @@
|
||||
#include "track.h"
|
||||
|
||||
class trackLabelButton;
|
||||
class trackContainer;
|
||||
class TrackContainer;
|
||||
|
||||
|
||||
class bbTCO : public trackContentObject
|
||||
@@ -106,14 +106,14 @@ class EXPORT bbTrack : public track
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
bbTrack( trackContainer * _tc );
|
||||
bbTrack( TrackContainer* tc );
|
||||
virtual ~bbTrack();
|
||||
|
||||
virtual bool play( const midiTime & _start,
|
||||
const fpp_t _frames,
|
||||
const f_cnt_t _frame_base,
|
||||
Sint16 _tco_num = -1 );
|
||||
virtual trackView * createView( trackContainerView * _tcv );
|
||||
virtual trackView * createView( TrackContainerView* tcv );
|
||||
virtual trackContentObject * createTCO( const midiTime & _pos );
|
||||
|
||||
virtual void saveTrackSpecificSettings( QDomDocument & _doc,
|
||||
@@ -162,7 +162,7 @@ class bbTrackView : public trackView
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
bbTrackView( bbTrack * _bbt, trackContainerView * _tcv );
|
||||
bbTrackView( bbTrack* bbt, TrackContainerView* tcv );
|
||||
virtual ~bbTrackView();
|
||||
|
||||
virtual bool close();
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
* bb_track_container.h - 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
|
||||
*
|
||||
@@ -26,11 +26,11 @@
|
||||
#ifndef _BB_TRACK_CONTAINER_H
|
||||
#define _BB_TRACK_CONTAINER_H
|
||||
|
||||
#include "track_container.h"
|
||||
#include "TrackContainer.h"
|
||||
#include "combobox.h"
|
||||
|
||||
|
||||
class EXPORT bbTrackContainer : public trackContainer
|
||||
class EXPORT bbTrackContainer : public TrackContainer
|
||||
{
|
||||
Q_OBJECT
|
||||
mapPropertyFromModel(int,currentBB,setCurrentBB,m_bbComboBoxModel);
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
* file_browser.h - include file for fileBrowser
|
||||
*
|
||||
* 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
|
||||
*
|
||||
@@ -40,7 +40,7 @@ class fileItem;
|
||||
class InstrumentTrack;
|
||||
class fileBrowserTreeWidget;
|
||||
class playHandle;
|
||||
class trackContainer;
|
||||
class TrackContainer;
|
||||
|
||||
|
||||
|
||||
@@ -96,7 +96,7 @@ protected:
|
||||
|
||||
private:
|
||||
void handleFile( fileItem * _fi, InstrumentTrack * _it );
|
||||
void openInNewInstrumentTrack( trackContainer * _tc );
|
||||
void openInNewInstrumentTrack( TrackContainer* tc );
|
||||
|
||||
|
||||
bool m_mousePressed;
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
* pattern.h - declaration of class pattern, which contains all informations
|
||||
* about a pattern
|
||||
*
|
||||
* Copyright (c) 2004-2011 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
|
||||
*
|
||||
@@ -43,7 +43,7 @@ class QPushButton;
|
||||
|
||||
class InstrumentTrack;
|
||||
class patternFreezeThread;
|
||||
class sampleBuffer;
|
||||
class SampleBuffer;
|
||||
|
||||
|
||||
|
||||
@@ -104,7 +104,7 @@ public:
|
||||
return m_frozenPattern != NULL;
|
||||
}
|
||||
|
||||
sampleBuffer *frozenPattern()
|
||||
SampleBuffer *frozenPattern()
|
||||
{
|
||||
return m_frozenPattern;
|
||||
}
|
||||
@@ -157,7 +157,7 @@ private:
|
||||
int m_steps;
|
||||
|
||||
// pattern freezing
|
||||
sampleBuffer * m_frozenPattern;
|
||||
SampleBuffer* m_frozenPattern;
|
||||
bool m_freezing;
|
||||
volatile bool m_freezeAborted;
|
||||
|
||||
|
||||
@@ -110,6 +110,7 @@ private slots:
|
||||
void toggleCompactTrackButtons( bool _enabled );
|
||||
void toggleSyncVSTPlugins( bool _enabled );
|
||||
void toggleAnimateAFP( bool _enabled );
|
||||
void toggleNoteLabels( bool en );
|
||||
|
||||
|
||||
private:
|
||||
@@ -160,6 +161,7 @@ private:
|
||||
bool m_compactTrackButtons;
|
||||
bool m_syncVSTPlugins;
|
||||
bool m_animateAFP;
|
||||
bool m_printNoteLabels;
|
||||
|
||||
typedef QMap<QString, AudioDevice::setupWidget *> AswMap;
|
||||
typedef QMap<QString, MidiClient::setupWidget *> MswMap;
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
#include <QtCore/QSharedMemory>
|
||||
#include <QtCore/QVector>
|
||||
|
||||
#include "track_container.h"
|
||||
#include "TrackContainer.h"
|
||||
#include "AutomatableModel.h"
|
||||
#include "Controller.h"
|
||||
#include "MeterModel.h"
|
||||
@@ -45,7 +45,7 @@ const bpm_t MaxTempo = 999;
|
||||
const tick_t MaxSongLength = 9999 * DefaultTicksPerTact;
|
||||
|
||||
|
||||
class EXPORT song : public trackContainer
|
||||
class EXPORT song : public TrackContainer
|
||||
{
|
||||
Q_OBJECT
|
||||
mapPropertyFromModel(int,getTempo,setTempo,m_tempoModel);
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
* song_editor.h - declaration of class songEditor, a window where you can
|
||||
* setup your songs
|
||||
*
|
||||
* Copyright (c) 2004-2011 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
|
||||
*
|
||||
@@ -27,7 +27,7 @@
|
||||
#ifndef _SONG_EDITOR_H
|
||||
#define _SONG_EDITOR_H
|
||||
|
||||
#include "track_container_view.h"
|
||||
#include "TrackContainerView.h"
|
||||
|
||||
class QLabel;
|
||||
class QScrollBar;
|
||||
@@ -52,7 +52,7 @@ private:
|
||||
} ;
|
||||
|
||||
|
||||
class songEditor : public trackContainerView
|
||||
class songEditor : public TrackContainerView
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
|
||||
@@ -45,8 +45,8 @@ class pixmapButton;
|
||||
class textFloat;
|
||||
class track;
|
||||
class trackContentObjectView;
|
||||
class trackContainer;
|
||||
class trackContainerView;
|
||||
class TrackContainer;
|
||||
class TrackContainerView;
|
||||
class trackContentWidget;
|
||||
class trackView;
|
||||
|
||||
@@ -364,12 +364,12 @@ public:
|
||||
NumTrackTypes
|
||||
} ;
|
||||
|
||||
track( TrackTypes _type, trackContainer * _tc );
|
||||
track( TrackTypes _type, TrackContainer * _tc );
|
||||
virtual ~track();
|
||||
|
||||
static track * create( TrackTypes _tt, trackContainer * _tc );
|
||||
static track * create( TrackTypes _tt, TrackContainer * _tc );
|
||||
static track * create( const QDomElement & _this,
|
||||
trackContainer * _tc );
|
||||
TrackContainer * _tc );
|
||||
void clone();
|
||||
|
||||
|
||||
@@ -384,7 +384,7 @@ public:
|
||||
Sint16 _tco_num = -1 ) = 0;
|
||||
|
||||
|
||||
virtual trackView * createView( trackContainerView * _view ) = 0;
|
||||
virtual trackView * createView( TrackContainerView * _view ) = 0;
|
||||
virtual trackContentObject * createTCO( const midiTime & _pos ) = 0;
|
||||
|
||||
virtual void saveTrackSpecificSettings( QDomDocument & _doc,
|
||||
@@ -424,9 +424,9 @@ public:
|
||||
tact_t length() const;
|
||||
|
||||
|
||||
inline trackContainer * getTrackContainer() const
|
||||
inline TrackContainer* trackContainer() const
|
||||
{
|
||||
return( m_trackContainer );
|
||||
return m_trackContainer;
|
||||
}
|
||||
|
||||
// name-stuff
|
||||
@@ -461,7 +461,7 @@ public slots:
|
||||
|
||||
|
||||
private:
|
||||
trackContainer * m_trackContainer;
|
||||
TrackContainer* m_trackContainer;
|
||||
TrackTypes m_type;
|
||||
QString m_name;
|
||||
int m_height;
|
||||
@@ -492,7 +492,7 @@ class trackView : public QWidget, public ModelView, public JournallingObject
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
trackView( track * _track, trackContainerView * _tcv );
|
||||
trackView( track * _track, TrackContainerView* tcv );
|
||||
virtual ~trackView();
|
||||
|
||||
inline const track * getTrack() const
|
||||
@@ -505,9 +505,9 @@ public:
|
||||
return( m_track );
|
||||
}
|
||||
|
||||
inline trackContainerView * getTrackContainerView()
|
||||
inline TrackContainerView* trackContainerView()
|
||||
{
|
||||
return( m_trackContainerView );
|
||||
return m_trackContainerView;
|
||||
}
|
||||
|
||||
inline trackOperationsWidget * getTrackOperationsWidget()
|
||||
@@ -566,7 +566,7 @@ private:
|
||||
} ;
|
||||
|
||||
track * m_track;
|
||||
trackContainerView * m_trackContainerView;
|
||||
TrackContainerView * m_trackContainerView;
|
||||
|
||||
trackOperationsWidget m_trackOperationsWidget;
|
||||
trackSettingsWidget m_trackSettingsWidget;
|
||||
|
||||
@@ -378,7 +378,7 @@ bool HydrogenImport::readSong()
|
||||
}
|
||||
return true;
|
||||
}
|
||||
bool HydrogenImport::tryImport( trackContainer * _tc )
|
||||
bool HydrogenImport::tryImport( TrackContainer* tc )
|
||||
{
|
||||
if( openFile() == false )
|
||||
{
|
||||
|
||||
@@ -21,7 +21,7 @@ public:
|
||||
return( NULL );
|
||||
}
|
||||
private:
|
||||
virtual bool tryImport( trackContainer * _tc );
|
||||
virtual bool tryImport( TrackContainer* tc );
|
||||
};
|
||||
#endif
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
* audio_file_processor.cpp - instrument for using audio-files
|
||||
*
|
||||
* 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
|
||||
*
|
||||
@@ -510,9 +510,9 @@ void AudioFileProcessorView::modelChanged( void )
|
||||
|
||||
|
||||
|
||||
AudioFileProcessorWaveView::AudioFileProcessorWaveView( QWidget * _parent, int _w, int _h, sampleBuffer & _buf ) :
|
||||
AudioFileProcessorWaveView::AudioFileProcessorWaveView( QWidget * _parent, int _w, int _h, SampleBuffer& buf ) :
|
||||
QWidget( _parent ),
|
||||
m_sampleBuffer( _buf ),
|
||||
m_sampleBuffer( buf ),
|
||||
m_graph( QPixmap( _w - 2 * s_padding, _h - 2 * s_padding ) ),
|
||||
m_from( 0 ),
|
||||
m_to( m_sampleBuffer.frames() ),
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
* audio_file_processor.h - declaration of class audioFileProcessor
|
||||
* (instrument-plugin for using audio-files)
|
||||
*
|
||||
* Copyright (c) 2004-2008 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,7 +31,7 @@
|
||||
|
||||
#include "Instrument.h"
|
||||
#include "InstrumentView.h"
|
||||
#include "sample_buffer.h"
|
||||
#include "SampleBuffer.h"
|
||||
#include "knob.h"
|
||||
#include "pixmap_button.h"
|
||||
|
||||
@@ -81,9 +81,9 @@ signals:
|
||||
|
||||
|
||||
private:
|
||||
typedef sampleBuffer::handleState handleState;
|
||||
typedef SampleBuffer::handleState handleState;
|
||||
|
||||
sampleBuffer m_sampleBuffer;
|
||||
SampleBuffer m_sampleBuffer;
|
||||
|
||||
FloatModel m_ampModel;
|
||||
FloatModel m_startPointModel;
|
||||
@@ -219,7 +219,7 @@ private:
|
||||
sample_end,
|
||||
} ;
|
||||
|
||||
sampleBuffer & m_sampleBuffer;
|
||||
SampleBuffer& m_sampleBuffer;
|
||||
QPixmap m_graph;
|
||||
f_cnt_t m_from;
|
||||
f_cnt_t m_to;
|
||||
@@ -237,7 +237,7 @@ private:
|
||||
bool m_animation;
|
||||
|
||||
public:
|
||||
AudioFileProcessorWaveView( QWidget * _parent, int _w, int _h, sampleBuffer & _buf );
|
||||
AudioFileProcessorWaveView( QWidget * _parent, int _w, int _h, SampleBuffer& buf );
|
||||
void setKnobs( knob * _start, knob * _end );
|
||||
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
* flp_import.cpp - support for importing FLP-files
|
||||
*
|
||||
* 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
|
||||
*
|
||||
@@ -53,7 +53,7 @@
|
||||
#include "ProjectJournal.h"
|
||||
#include "project_notes.h"
|
||||
#include "song.h"
|
||||
#include "track_container.h"
|
||||
#include "TrackContainer.h"
|
||||
#include "embed.h"
|
||||
#include "lmmsconfig.h"
|
||||
|
||||
@@ -588,7 +588,7 @@ FlpImport::~FlpImport()
|
||||
|
||||
|
||||
|
||||
bool FlpImport::tryImport( trackContainer * _tc )
|
||||
bool FlpImport::tryImport( TrackContainer* tc )
|
||||
{
|
||||
const int mappedFilter[] =
|
||||
{
|
||||
@@ -713,9 +713,9 @@ bool FlpImport::tryImport( trackContainer * _tc )
|
||||
}
|
||||
|
||||
QProgressDialog progressDialog(
|
||||
trackContainer::tr( "Importing FLP-file..." ),
|
||||
trackContainer::tr( "Cancel" ), 0, p.numChannels );
|
||||
progressDialog.setWindowTitle( trackContainer::tr( "Please wait..." ) );
|
||||
TrackContainer::tr( "Importing FLP-file..." ),
|
||||
TrackContainer::tr( "Cancel" ), 0, p.numChannels );
|
||||
progressDialog.setWindowTitle( TrackContainer::tr( "Please wait..." ) );
|
||||
progressDialog.show();
|
||||
|
||||
bool valid = false;
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
* FlpImport.h - support for importing FLP-files
|
||||
*
|
||||
* 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
|
||||
*
|
||||
@@ -50,7 +50,7 @@ public:
|
||||
|
||||
|
||||
private:
|
||||
virtual bool tryImport( trackContainer * _tc );
|
||||
virtual bool tryImport( TrackContainer* tc );
|
||||
|
||||
void processPluginParams( FL_Channel * _ch );
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
* MidiImport.cpp - support for importing MIDI files
|
||||
*
|
||||
* 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
|
||||
*
|
||||
@@ -30,7 +30,7 @@
|
||||
#include <QtGui/QProgressDialog>
|
||||
|
||||
#include "MidiImport.h"
|
||||
#include "track_container.h"
|
||||
#include "TrackContainer.h"
|
||||
#include "InstrumentTrack.h"
|
||||
#include "AutomationTrack.h"
|
||||
#include "AutomationPattern.h"
|
||||
@@ -87,7 +87,7 @@ MidiImport::~MidiImport()
|
||||
|
||||
|
||||
|
||||
bool MidiImport::tryImport( trackContainer * _tc )
|
||||
bool MidiImport::tryImport( TrackContainer* tc )
|
||||
{
|
||||
if( openFile() == false )
|
||||
{
|
||||
@@ -124,11 +124,11 @@ bool MidiImport::tryImport( trackContainer * _tc )
|
||||
{
|
||||
case makeID( 'M', 'T', 'h', 'd' ):
|
||||
printf( "MidiImport::tryImport(): found MThd\n");
|
||||
return readSMF( _tc );
|
||||
return readSMF( tc );
|
||||
|
||||
case makeID( 'R', 'I', 'F', 'F' ):
|
||||
printf( "MidiImport::tryImport(): found RIFF\n");
|
||||
return readRIFF( _tc );
|
||||
return readRIFF( tc );
|
||||
|
||||
default:
|
||||
printf( "MidiImport::tryImport(): not a Standard MIDI "
|
||||
@@ -154,12 +154,11 @@ public:
|
||||
AutomationPattern * ap;
|
||||
midiTime lastPos;
|
||||
|
||||
smfMidiCC & create( trackContainer * _tc )
|
||||
smfMidiCC & create( TrackContainer* tc )
|
||||
{
|
||||
if( !at )
|
||||
{
|
||||
at = dynamic_cast<AutomationTrack *>(
|
||||
track::create( track::AutomationTrack, _tc ) );
|
||||
at = dynamic_cast<AutomationTrack *>( track::create( track::AutomationTrack, tc ) );
|
||||
}
|
||||
return *this;
|
||||
}
|
||||
@@ -215,11 +214,10 @@ public:
|
||||
bool hasNotes;
|
||||
midiTime lastEnd;
|
||||
|
||||
smfMidiChannel * create( trackContainer * _tc )
|
||||
smfMidiChannel * create( TrackContainer* tc )
|
||||
{
|
||||
if( !it ) {
|
||||
it = dynamic_cast<InstrumentTrack *>(
|
||||
track::create( track::InstrumentTrack, _tc ) );
|
||||
it = dynamic_cast<InstrumentTrack *>( track::create( track::InstrumentTrack, tc ) );
|
||||
|
||||
#ifdef LMMS_HAVE_FLUIDSYNTH
|
||||
it_inst = it->loadInstrument( "sf2player" );
|
||||
@@ -262,15 +260,15 @@ public:
|
||||
};
|
||||
|
||||
|
||||
bool MidiImport::readSMF( trackContainer * _tc )
|
||||
bool MidiImport::readSMF( TrackContainer* tc )
|
||||
{
|
||||
QString filename = file().fileName();
|
||||
closeFile();
|
||||
|
||||
const int preTrackSteps = 2;
|
||||
QProgressDialog pd( trackContainer::tr( "Importing MIDI-file..." ),
|
||||
trackContainer::tr( "Cancel" ), 0, preTrackSteps, engine::mainWindow() );
|
||||
pd.setWindowTitle( trackContainer::tr( "Please wait..." ) );
|
||||
QProgressDialog pd( TrackContainer::tr( "Importing MIDI-file..." ),
|
||||
TrackContainer::tr( "Cancel" ), 0, preTrackSteps, engine::mainWindow() );
|
||||
pd.setWindowTitle( TrackContainer::tr( "Please wait..." ) );
|
||||
pd.setWindowModality(Qt::WindowModal);
|
||||
pd.setMinimumDuration( 0 );
|
||||
|
||||
@@ -318,7 +316,7 @@ bool MidiImport::readSMF( trackContainer * _tc )
|
||||
pd.setValue( 2 );
|
||||
|
||||
// Tempo stuff
|
||||
AutomationPattern * tap = _tc->tempoAutomationPattern();
|
||||
AutomationPattern * tap = tc->tempoAutomationPattern();
|
||||
if( tap )
|
||||
{
|
||||
tap->clear();
|
||||
@@ -376,7 +374,7 @@ bool MidiImport::readSMF( trackContainer * _tc )
|
||||
}
|
||||
else if( evt->is_note() && evt->chan < 256 )
|
||||
{
|
||||
smfMidiChannel * ch = chs[evt->chan].create( _tc );
|
||||
smfMidiChannel * ch = chs[evt->chan].create( tc );
|
||||
Alg_note_ptr noteEvt = dynamic_cast<Alg_note_ptr>( evt );
|
||||
|
||||
note n( noteEvt->get_duration() * ticksPerBeat,
|
||||
@@ -389,7 +387,7 @@ bool MidiImport::readSMF( trackContainer * _tc )
|
||||
|
||||
else if( evt->is_update() )
|
||||
{
|
||||
smfMidiChannel * ch = chs[evt->chan].create( _tc );
|
||||
smfMidiChannel * ch = chs[evt->chan].create( tc );
|
||||
|
||||
double time = evt->time*ticksPerBeat;
|
||||
QString update( evt->get_attribute() );
|
||||
@@ -469,7 +467,7 @@ bool MidiImport::readSMF( trackContainer * _tc )
|
||||
}
|
||||
else
|
||||
{
|
||||
ccs[ccid].create( _tc );
|
||||
ccs[ccid].create( tc );
|
||||
ccs[ccid].putValue( time, objModel, cc );
|
||||
}
|
||||
}
|
||||
@@ -492,7 +490,7 @@ bool MidiImport::readSMF( trackContainer * _tc )
|
||||
{
|
||||
printf(" Should remove empty track\n");
|
||||
// must delete trackView first - but where is it?
|
||||
//_tc->removeTrack( chs[c].it );
|
||||
//tc->removeTrack( chs[c].it );
|
||||
//it->deleteLater();
|
||||
}
|
||||
}
|
||||
@@ -503,7 +501,7 @@ bool MidiImport::readSMF( trackContainer * _tc )
|
||||
|
||||
|
||||
|
||||
bool MidiImport::readRIFF( trackContainer * _tc )
|
||||
bool MidiImport::readRIFF( TrackContainer* tc )
|
||||
{
|
||||
// skip file length
|
||||
skip( 4 );
|
||||
@@ -543,7 +541,7 @@ data_not_found:
|
||||
{
|
||||
goto invalid_format;
|
||||
}
|
||||
return readSMF( _tc );
|
||||
return readSMF( tc );
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
* MidiImport.h - support for importing MIDI-files
|
||||
*
|
||||
* 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
|
||||
*
|
||||
@@ -46,10 +46,10 @@ public:
|
||||
|
||||
|
||||
private:
|
||||
virtual bool tryImport( trackContainer * _tc );
|
||||
virtual bool tryImport( TrackContainer* tc );
|
||||
|
||||
bool readSMF( trackContainer * _tc );
|
||||
bool readRIFF( trackContainer * _tc );
|
||||
bool readSMF( TrackContainer* tc );
|
||||
bool readRIFF( TrackContainer* tc );
|
||||
bool readTrack( int _track_end, QString & _track_name );
|
||||
|
||||
void error( void );
|
||||
|
||||
@@ -192,9 +192,8 @@ void patmanInstrument::setFile( const QString & _patch_file, bool _rename )
|
||||
// else we don't touch the instrument-track-name, because the user
|
||||
// named it self
|
||||
|
||||
m_patchFile = sampleBuffer::tryToMakeRelative( _patch_file );
|
||||
LoadErrors error = loadPatch( sampleBuffer::tryToMakeAbsolute(
|
||||
_patch_file ) );
|
||||
m_patchFile = SampleBuffer::tryToMakeRelative( _patch_file );
|
||||
LoadErrors error = loadPatch( SampleBuffer::tryToMakeAbsolute( _patch_file ) );
|
||||
if( error )
|
||||
{
|
||||
printf("Load error\n");
|
||||
@@ -351,7 +350,7 @@ patmanInstrument::LoadErrors patmanInstrument::loadPatch(
|
||||
}
|
||||
}
|
||||
|
||||
sampleBuffer * psample = new sampleBuffer( data, frames );
|
||||
SampleBuffer* psample = new SampleBuffer( data, frames );
|
||||
psample->setFrequency( root_freq / 1000.0f );
|
||||
psample->setSampleRate( sample_rate );
|
||||
|
||||
@@ -390,10 +389,9 @@ void patmanInstrument::selectSample( notePlayHandle * _n )
|
||||
const float freq = _n->frequency();
|
||||
|
||||
float min_dist = HUGE_VALF;
|
||||
sampleBuffer * sample = NULL;
|
||||
SampleBuffer* sample = NULL;
|
||||
|
||||
for( QVector<sampleBuffer *>::iterator it = m_patchSamples.begin();
|
||||
it != m_patchSamples.end(); ++it )
|
||||
for( QVector<SampleBuffer *>::iterator it = m_patchSamples.begin(); it != m_patchSamples.end(); ++it )
|
||||
{
|
||||
float patch_freq = ( *it )->frequency();
|
||||
float dist = freq >= patch_freq ? freq / patch_freq :
|
||||
@@ -414,9 +412,9 @@ void patmanInstrument::selectSample( notePlayHandle * _n )
|
||||
}
|
||||
else
|
||||
{
|
||||
hdata->sample = new sampleBuffer( NULL, 0 );
|
||||
hdata->sample = new SampleBuffer( NULL, 0 );
|
||||
}
|
||||
hdata->state = new sampleBuffer::handleState( _n->hasDetuningInfo() );
|
||||
hdata->state = new SampleBuffer::handleState( _n->hasDetuningInfo() );
|
||||
|
||||
_n->m_pluginData = hdata;
|
||||
}
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
|
||||
#include "Instrument.h"
|
||||
#include "InstrumentView.h"
|
||||
#include "sample_buffer.h"
|
||||
#include "SampleBuffer.h"
|
||||
#include "AutomatableModel.h"
|
||||
|
||||
|
||||
@@ -79,13 +79,13 @@ public slots:
|
||||
private:
|
||||
typedef struct
|
||||
{
|
||||
sampleBuffer::handleState * state;
|
||||
SampleBuffer::handleState* state;
|
||||
bool tuned;
|
||||
sampleBuffer * sample;
|
||||
SampleBuffer* sample;
|
||||
} handle_data;
|
||||
|
||||
QString m_patchFile;
|
||||
QVector<sampleBuffer *> m_patchSamples;
|
||||
QVector<SampleBuffer *> m_patchSamples;
|
||||
BoolModel m_loopedModel;
|
||||
BoolModel m_tunedModel;
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
* sf2_player.cpp - a soundfont2 player using fluidSynth
|
||||
*
|
||||
* Copyright (c) 2008 Paul Giblock <drfaygo/at/gmail/dot/com>
|
||||
* Copyright (c) 2009-2013 Tobias Doerffel <tobydox/at/users.sourceforge.net>
|
||||
* Copyright (c) 2009-2014 Tobias Doerffel <tobydox/at/users.sourceforge.net>
|
||||
*
|
||||
* This file is part of Linux MultiMedia Studio - http://lmms.sourceforge.net
|
||||
*
|
||||
@@ -334,9 +334,8 @@ void sf2Instrument::openFile( const QString & _sf2File, bool updateTrackName )
|
||||
emit fileLoading();
|
||||
|
||||
// Used for loading file
|
||||
char * sf2Ascii = qstrdup( qPrintable(
|
||||
sampleBuffer::tryToMakeAbsolute( _sf2File ) ) );
|
||||
QString relativePath = sampleBuffer::tryToMakeRelative( _sf2File );
|
||||
char * sf2Ascii = qstrdup( qPrintable( SampleBuffer::tryToMakeAbsolute( _sf2File ) ) );
|
||||
QString relativePath = SampleBuffer::tryToMakeRelative( _sf2File );
|
||||
|
||||
// free reference to soundfont if one is selected
|
||||
freeFont();
|
||||
|
||||
@@ -36,7 +36,7 @@
|
||||
#include "lcd_spinbox.h"
|
||||
#include "led_checkbox.h"
|
||||
#include "fluidsynth.h"
|
||||
#include "sample_buffer.h"
|
||||
#include "SampleBuffer.h"
|
||||
|
||||
class sf2InstrumentView;
|
||||
class sf2Font;
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
* TripleOscillator.cpp - powerful instrument with three oscillators
|
||||
*
|
||||
* 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
|
||||
*
|
||||
@@ -35,7 +35,7 @@
|
||||
#include "knob.h"
|
||||
#include "note_play_handle.h"
|
||||
#include "pixmap_button.h"
|
||||
#include "sample_buffer.h"
|
||||
#include "SampleBuffer.h"
|
||||
#include "song_editor.h"
|
||||
#include "tooltip.h"
|
||||
|
||||
@@ -88,7 +88,7 @@ OscillatorObject::OscillatorObject( Model * _parent, int _idx ) :
|
||||
Oscillator::NumModulationAlgos-1, this,
|
||||
tr( "Modulation type %1" ).arg( _idx+1 ) ),
|
||||
|
||||
m_sampleBuffer( new sampleBuffer ),
|
||||
m_sampleBuffer( new SampleBuffer ),
|
||||
m_volumeLeft( 0.0f ),
|
||||
m_volumeRight( 0.0f ),
|
||||
m_detuningLeft( 0.0f ),
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
* TripleOscillator.h - declaration of class TripleOscillator a powerful
|
||||
* instrument-plugin with 3 oscillators
|
||||
*
|
||||
* 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
|
||||
*
|
||||
@@ -36,7 +36,7 @@ class automatableButtonGroup;
|
||||
class knob;
|
||||
class notePlayHandle;
|
||||
class pixmapButton;
|
||||
class sampleBuffer;
|
||||
class SampleBuffer;
|
||||
|
||||
const int NUM_OF_OSCILLATORS = 3;
|
||||
|
||||
@@ -59,7 +59,7 @@ private:
|
||||
FloatModel m_stereoPhaseDetuningModel;
|
||||
IntModel m_waveShapeModel;
|
||||
IntModel m_modulationAlgoModel;
|
||||
sampleBuffer * m_sampleBuffer;
|
||||
SampleBuffer* m_sampleBuffer;
|
||||
|
||||
float m_volumeLeft;
|
||||
float m_volumeRight;
|
||||
|
||||
@@ -26,7 +26,6 @@
|
||||
|
||||
#include "Instrument.h"
|
||||
#include "InstrumentView.h"
|
||||
#include "sample_buffer.h"
|
||||
#include "graph.h"
|
||||
#include "knob.h"
|
||||
#include "pixmap_button.h"
|
||||
|
||||
@@ -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 ||
|
||||
|
||||
@@ -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 "
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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: */
|
||||
@@ -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() /
|
||||
@@ -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];
|
||||
@@ -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"
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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 )
|
||||
|
||||
@@ -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() :
|
||||
|
||||
@@ -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 );
|
||||
|
||||
@@ -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 */
|
||||
|
||||
@@ -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() );
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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() ) );
|
||||
}
|
||||
|
||||
|
||||
@@ -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 )
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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 )
|
||||
|
||||
@@ -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() )
|
||||
|
||||
@@ -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"
|
||||
|
||||
|
||||
@@ -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 )
|
||||
|
||||
@@ -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 )
|
||||
{
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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();
|
||||
}*/
|
||||
|
||||
@@ -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 );
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user