Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Proposed fix for 1345 Exclude tracks from master pitch #1593

Merged
merged 2 commits into from
Jan 11, 2015
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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 @@ -109,6 +109,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 @@ -139,7 +140,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 @@ -550,6 +553,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 @@ -700,6 +704,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 @@ -731,6 +736,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 @@ -1211,6 +1217,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 @@ -1259,10 +1266,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