Skip to content

Commit

Permalink
Merge pull request #1593 from curlymorphic/i1345
Browse files Browse the repository at this point in the history
Proposed fix for 1345 Exclude tracks from master pitch
  • Loading branch information
tresf committed Jan 11, 2015
2 parents 384a48f + 83baea6 commit d0c8e7b
Show file tree
Hide file tree
Showing 5 changed files with 65 additions and 3 deletions.
14 changes: 14 additions & 0 deletions include/InstrumentMidiIOView.h
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,8 @@
class GroupBox;
class LcdSpinBox;
class QToolButton;
class LedCheckBox;
class InstrumentTrack;


class InstrumentMidiIOView : public QWidget, public ModelView
Expand Down Expand Up @@ -63,4 +65,16 @@ class InstrumentMidiIOView : public QWidget, public ModelView

} ;

class InstrumentMiscView : public QWidget
{
Q_OBJECT
public:
InstrumentMiscView( InstrumentTrack *it, QWidget* parent );
~InstrumentMiscView();

private:
LedCheckBox * m_useMasterPitchBox;

};

#endif
7 changes: 7 additions & 0 deletions include/InstrumentTrack.h
Original file line number Diff line number Diff line change
Expand Up @@ -49,13 +49,15 @@ class FadeButton;
class Instrument;
class InstrumentTrackWindow;
class InstrumentMidiIOView;
class InstrumentMiscView;
class Knob;
class LcdSpinBox;
class midiPortMenu;
class DataFile;
class PluginView;
class TabWidget;
class TrackLabelButton;
class LedCheckBox;


class EXPORT InstrumentTrack : public Track, public MidiEventProcessor
Expand Down Expand Up @@ -250,6 +252,7 @@ protected slots:
FloatModel m_pitchModel;
IntModel m_pitchRangeModel;
IntModel m_effectChannelModel;
BoolModel m_useMasterPitchModel;

FadeButton *m_fb;

Expand All @@ -266,6 +269,7 @@ protected slots:
friend class InstrumentTrackWindow;
friend class NotePlayHandle;
friend class FlpImport;
friend class InstrumentMiscView;

} ;

Expand Down Expand Up @@ -416,6 +420,7 @@ protected slots:
LcdSpinBox * m_effectChannelNumber;



// tab-widget with all children
TabWidget * m_tabWidget;
PluginView * m_instrumentView;
Expand All @@ -424,6 +429,8 @@ protected slots:
InstrumentFunctionArpeggioView* m_arpeggioView;
InstrumentMidiIOView * m_midiView;
EffectRackView * m_effectView;
InstrumentMiscView *m_miscView;


// test-piano at the bottom of every instrument-settings-window
PianoView * m_pianoView;
Expand Down
3 changes: 2 additions & 1 deletion src/core/NotePlayHandle.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -509,10 +509,11 @@ bool NotePlayHandle::operator==( const NotePlayHandle & _nph ) const

void NotePlayHandle::updateFrequency()
{
int mp = m_instrumentTrack->m_useMasterPitchModel.value() ? Engine::getSong()->masterPitch() : 0;
const float pitch =
( key() -
m_instrumentTrack->baseNoteModel()->value() +
Engine::getSong()->masterPitch() +
mp +
m_baseDetuning->value() )
/ 12.0f;
m_frequency = BaseFreq * powf( 2.0f, pitch + m_instrumentTrack->pitchModel()->value() / ( 100 * 12.0f ) );
Expand Down
30 changes: 29 additions & 1 deletion src/gui/widgets/InstrumentMidiIOView.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,9 @@
#include "MidiClient.h"
#include "Mixer.h"
#include "ToolTip.h"

#include "InstrumentTrack.h"
#include "LedCheckbox.h"
#include "QLabel"


InstrumentMidiIOView::InstrumentMidiIOView( QWidget* parent ) :
Expand Down Expand Up @@ -201,3 +203,29 @@ void InstrumentMidiIOView::modelChanged()
}
}



InstrumentMiscView::InstrumentMiscView(InstrumentTrack *it, QWidget *parent) :
QWidget( parent )
{
QVBoxLayout* layout = new QVBoxLayout( this );
layout->setMargin( 5 );

QHBoxLayout* masterPitchLayout = new QHBoxLayout( this );

//setup checkbox for use master pitch
m_useMasterPitchBox = new LedCheckBox( this, tr( "Use master pitch" ),LedCheckBox::Green );
m_useMasterPitchBox->setModel( &it->m_useMasterPitchModel );
m_useMasterPitchBox->setToolTip( "Master Pitch" );
masterPitchLayout->addWidget( m_useMasterPitchBox );

QLabel *label = new QLabel ( tr ("Use Master Pitch " ), this );
masterPitchLayout->addWidget( label );
layout->addLayout( masterPitchLayout );
layout->addStretch();
}

InstrumentMiscView::~InstrumentMiscView()
{

}
14 changes: 13 additions & 1 deletion src/tracks/InstrumentTrack.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -110,6 +110,7 @@ InstrumentTrack::InstrumentTrack( TrackContainer* tc ) :
m_pitchModel( 0, MinPitchDefault, MaxPitchDefault, 1, this, tr( "Pitch" ) ),
m_pitchRangeModel( 1, 1, 24, this, tr( "Pitch range" ) ),
m_effectChannelModel( 0, 0, 0, this, tr( "FX channel" ) ),
m_useMasterPitchModel( true, this, tr( "Master Pitch") ),
m_instrument( NULL ),
m_soundShaping( this ),
m_arpeggio( this ),
Expand Down Expand Up @@ -140,7 +141,9 @@ InstrumentTrack::InstrumentTrack( TrackContainer* tc ) :

int InstrumentTrack::baseNote() const
{
return m_baseNoteModel.value() - Engine::getSong()->masterPitch();
int mp = m_useMasterPitchModel.value() ? Engine::getSong()->masterPitch() : 0;

return m_baseNoteModel.value() - mp;
}


Expand Down Expand Up @@ -551,6 +554,7 @@ void InstrumentTrack::updatePitchRange()

int InstrumentTrack::masterKey( int _midi_key ) const
{

int key = baseNote();
return tLimit<int>( _midi_key - ( key - DefaultKey ), 0, NumKeys );
}
Expand Down Expand Up @@ -701,6 +705,7 @@ void InstrumentTrack::saveTrackSpecificSettings( QDomDocument& doc, QDomElement

m_effectChannelModel.saveSettings( doc, thisElement, "fxch" );
m_baseNoteModel.saveSettings( doc, thisElement, "basenote" );
m_useMasterPitchModel.saveSettings( doc, thisElement, "usemasterpitch");

if( m_instrument != NULL )
{
Expand Down Expand Up @@ -732,6 +737,7 @@ void InstrumentTrack::loadTrackSpecificSettings( const QDomElement & thisElement
m_effectChannelModel.setRange( 0, Engine::fxMixer()->numChannels()-1 );
m_effectChannelModel.loadSettings( thisElement, "fxch" );
m_baseNoteModel.loadSettings( thisElement, "basenote" );
m_useMasterPitchModel.loadSettings( thisElement, "usemasterpitch");

// clear effect-chain just in case we load an old preset without FX-data
m_audioPort.effects()->clear();
Expand Down Expand Up @@ -1212,6 +1218,7 @@ InstrumentTrackWindow::InstrumentTrackWindow( InstrumentTrackView * _itv ) :
basicControlsLayout->addWidget( m_pitchRangeSpinBox );
basicControlsLayout->addStretch();


// setup spinbox for selecting FX-channel
m_effectChannelNumber = new fxLineLcdSpinBox( 2, NULL, tr( "FX channel" ) );
m_effectChannelNumber->setLabel( tr( "FX" ) );
Expand Down Expand Up @@ -1260,10 +1267,15 @@ InstrumentTrackWindow::InstrumentTrackWindow( InstrumentTrackView * _itv ) :
// FX tab
m_effectView = new EffectRackView( m_track->m_audioPort.effects(), m_tabWidget );

// MISC tab
m_miscView = new InstrumentMiscView( m_track, m_tabWidget );


m_tabWidget->addTab( m_ssView, tr( "ENV/LFO" ), 1 );
m_tabWidget->addTab( instrumentFunctions, tr( "FUNC" ), 2 );
m_tabWidget->addTab( m_effectView, tr( "FX" ), 3 );
m_tabWidget->addTab( m_midiView, tr( "MIDI" ), 4 );
m_tabWidget->addTab( m_miscView, tr( "MISC" ), 5 );

// setup piano-widget
m_pianoView = new PianoView( this );
Expand Down

0 comments on commit d0c8e7b

Please sign in to comment.