Merge branch 'master' into groove

This commit is contained in:
Hyunjin Song
2018-06-15 10:55:51 +09:00
committed by GitHub
110 changed files with 705 additions and 1876 deletions

View File

@@ -38,9 +38,9 @@
#include "AudioDevice.h"
class AudioAlsa : public AudioDevice, public QThread
class AudioAlsa : public QThread, public AudioDevice
{
// Public classes and enums
Q_OBJECT
public:
/**
* @brief Contains the relevant information about available ALSA devices

View File

@@ -31,8 +31,9 @@
#include "Mixer.h"
class AudioDummy : public AudioDevice, public QThread
class AudioDummy : public QThread, public AudioDevice
{
Q_OBJECT
public:
AudioDummy( bool & _success_ful, Mixer* mixer ) :
AudioDevice( DEFAULT_CHANNELS, mixer )

View File

@@ -39,8 +39,9 @@ class LcdSpinBox;
class QLineEdit;
class AudioOss : public AudioDevice, public QThread
class AudioOss : public QThread, public AudioDevice
{
Q_OBJECT
public:
AudioOss( bool & _success_ful, Mixer* mixer );
virtual ~AudioOss();

View File

@@ -41,8 +41,9 @@ class LcdSpinBox;
class QLineEdit;
class AudioPulseAudio : public AudioDevice, public QThread
class AudioPulseAudio : public QThread, public AudioDevice
{
Q_OBJECT
public:
AudioPulseAudio( bool & _success_ful, Mixer* mixer );
virtual ~AudioPulseAudio();

View File

@@ -40,8 +40,9 @@ class LcdSpinBox;
class QLineEdit;
class AudioSndio : public AudioDevice, public QThread
class AudioSndio : public QThread, public AudioDevice
{
Q_OBJECT
public:
AudioSndio( bool & _success_ful, Mixer * _mixer );
virtual ~AudioSndio();

View File

@@ -39,13 +39,6 @@ class EXPORT CaptionMenu : public QMenu
public:
CaptionMenu( const QString & _title, QWidget * _parent = 0 );
virtual ~CaptionMenu();
///
/// \brief Adds a "Help" action displaying the Menu's parent's WhatsThis
/// text when selected.
///
void addHelpAction();
} ;

View File

@@ -60,7 +60,6 @@ public:
public slots:
void editControls();
void deleteController();
void displayHelp();
void closeControls();
void renameController();

View File

@@ -63,7 +63,6 @@ public slots:
void moveUp();
void moveDown();
void deletePlugin();
void displayHelp();
void closeEffects();

View File

@@ -107,7 +107,6 @@ private slots:
void removeUnusedChannels();
void moveChannelLeft();
void moveChannelRight();
void displayHelp();
};

View File

@@ -139,7 +139,6 @@ protected:
private slots:
virtual void enterValue();
void displayHelp();
void friendlyUpdate();
void toggleScale();

View File

@@ -29,7 +29,6 @@
#include <QtCore/QTimer>
#include <QtCore/QList>
#include <QMainWindow>
#include <QThread>
#include "ConfigManager.h"
#include "SubWindow.h"
@@ -148,7 +147,6 @@ public slots:
void resetWindowTitle();
void emptySlot();
void enterWhatsThisMode();
void createNewProject();
void createNewProjectFromTemplate( QAction * _idx );
void openProject();

View File

@@ -37,11 +37,11 @@
struct pollfd;
class QLineEdit;
class MidiAlsaRaw : public MidiClientRaw , public QThread
class MidiAlsaRaw : public QThread, public MidiClientRaw
{
Q_OBJECT
public:
MidiAlsaRaw();
virtual ~MidiAlsaRaw();

View File

@@ -39,7 +39,6 @@
struct pollfd;
class QLineEdit;
class MidiAlsaSeq : public QThread, public MidiClient

View File

@@ -35,11 +35,10 @@
#include "MidiClient.h"
class QLineEdit;
class MidiOss : public MidiClientRaw, public QThread
class MidiOss : public QThread, public MidiClientRaw
{
Q_OBJECT
public:
MidiOss();
virtual ~MidiOss();

View File

@@ -124,6 +124,8 @@ public:
return m_writablePorts;
}
void invalidateCilent();
MidiPortMenu* m_readablePortsMenu;
MidiPortMenu* m_writablePortsMenu;

View File

@@ -37,11 +37,10 @@
#include "MidiClient.h"
class QLineEdit;
class MidiSndio : public MidiClientRaw, public QThread
class MidiSndio : public QThread, public MidiClientRaw
{
Q_OBJECT
public:
MidiSndio( void );
virtual ~MidiSndio();

View File

@@ -35,6 +35,7 @@ class ThreadableJob;
class MixerWorkerThread : public QThread
{
Q_OBJECT
public:
// internal representation of the job queue - all functions are thread-safe
class JobQueue
@@ -46,10 +47,10 @@ public:
Dynamic // jobs can be added while processing queue
} ;
#define JOB_QUEUE_SIZE 1024
#define JOB_QUEUE_SIZE 8192
JobQueue() :
m_items(),
m_queueSize( 0 ),
m_writeIndex( 0 ),
m_itemsDone( 0 ),
m_opMode( Static )
{
@@ -65,7 +66,7 @@ public:
private:
std::atomic<ThreadableJob*> m_items[JOB_QUEUE_SIZE];
std::atomic_int m_queueSize;
std::atomic_int m_writeIndex;
std::atomic_int m_itemsDone;
OperationMode m_opMode;

View File

@@ -29,7 +29,6 @@
#include <QtCore/QVector>
#include <QWidget>
#include <QDialog>
#include <QtCore/QThread>
#include <QPixmap>
#include <QStaticText>

View File

@@ -749,12 +749,10 @@ class RemotePlugin;
class ProcessWatcher : public QThread
{
Q_OBJECT
public:
ProcessWatcher( RemotePlugin * );
virtual ~ProcessWatcher()
{
}
virtual ~ProcessWatcher() = default;
void quit()
{

View File

@@ -70,7 +70,6 @@ private slots:
// general settings widget
void setBufferSize( int _value );
void resetBufSize();
void displayBufSizeHelp();
// path settings widget
void setWorkingDir( const QString & _wd );
@@ -86,15 +85,12 @@ private slots:
// performance settings widget
void setAutoSaveInterval( int time );
void resetAutoSave();
void displaySaveIntervalHelp();
// audio settings widget
void audioInterfaceChanged( const QString & _driver );
void displayAudioHelp();
// MIDI settings widget
void midiInterfaceChanged( const QString & _driver );
void displayMIDIHelp();
void toggleToolTips( bool _enabled );

View File

@@ -55,13 +55,13 @@ BitcrushControlDialog::BitcrushControlDialog( BitcrushControls * controls ) :
inGain->move( 16, 32 );
inGain->setModel( & controls->m_inGain );
inGain->setLabel( tr( "GAIN" ) );
inGain->setHintText( tr( "Input Gain:" ) + " ", " dBFS" );
inGain->setHintText( tr( "Input gain:" ) , " dBFS" );
Knob * inNoise = new Knob( knobBright_26, this );
inNoise->move( 14, 76 );
inNoise->setModel( & controls->m_inNoise );
inNoise->setLabel( tr( "NOISE" ) );
inNoise->setHintText( tr( "Input Noise:" ) + " ", "%" );
inNoise->setHintText( tr( "Input noise:" ) , "%" );
// output knobs
@@ -69,25 +69,25 @@ BitcrushControlDialog::BitcrushControlDialog( BitcrushControls * controls ) :
outGain->move( 138, 32 );
outGain->setModel( & controls->m_outGain );
outGain->setLabel( tr( "GAIN" ) );
outGain->setHintText( tr( "Output Gain:" ) + " ", " dBFS" );
outGain->setHintText( tr( "Output gain:" ) , " dBFS" );
Knob * outClip = new Knob( knobBright_26, this );
outClip->move( 138, 76 );
outClip->setModel( & controls->m_outClip );
outClip->setLabel( tr( "CLIP" ) );
outClip->setHintText( tr( "Output Clip:" ) + " ", "%" );
outClip->setHintText( tr( "Output clip:" ) , "%" );
// leds
LedCheckBox * rateEnabled = new LedCheckBox( "", this, tr( "Rate Enabled" ), LedCheckBox::Green );
LedCheckBox * rateEnabled = new LedCheckBox( "", this, tr( "Rate enabled" ), LedCheckBox::Green );
rateEnabled->move( 64, 14 );
rateEnabled->setModel( & controls->m_rateEnabled );
ToolTip::add( rateEnabled, tr( "Enable samplerate-crushing" ) );
ToolTip::add( rateEnabled, tr( "Enable sample-rate crushing" ) );
LedCheckBox * depthEnabled = new LedCheckBox( "", this, tr( "Depth Enabled" ), LedCheckBox::Green );
LedCheckBox * depthEnabled = new LedCheckBox( "", this, tr( "Depth enabled" ), LedCheckBox::Green );
depthEnabled->move( 101, 14 );
depthEnabled->setModel( & controls->m_depthEnabled );
ToolTip::add( depthEnabled, tr( "Enable bitdepth-crushing" ) );
ToolTip::add( depthEnabled, tr( "Enable bit-depth crushing" ) );
// rate crushing knobs
@@ -95,13 +95,13 @@ BitcrushControlDialog::BitcrushControlDialog( BitcrushControls * controls ) :
rate->move( 59, 32 );
rate->setModel( & controls->m_rate );
rate->setLabel( tr( "FREQ" ) );
rate->setHintText( tr( "Sample rate:" ) + " ", " Hz" );
rate->setHintText( tr( "Sample rate:" ) , " Hz" );
Knob * stereoDiff = new Knob( knobBright_26, this );
stereoDiff->move( 72, 76 );
stereoDiff->setModel( & controls->m_stereoDiff );
stereoDiff->setLabel( tr( "STEREO" ) );
stereoDiff->setHintText( tr( "Stereo difference:" ) + " ", "%" );
stereoDiff->setHintText( tr( "Stereo difference:" ) , "%" );
// depth crushing knob
@@ -109,5 +109,5 @@ BitcrushControlDialog::BitcrushControlDialog( BitcrushControls * controls ) :
levels->move( 92, 32 );
levels->setModel( & controls->m_levels );
levels->setLabel( tr( "QUANT" ) );
levels->setHintText( tr( "Levels:" ) + " ", "" );
levels->setHintText( tr( "Levels:" ) , "" );
}

View File

@@ -34,15 +34,15 @@
BitcrushControls::BitcrushControls( BitcrushEffect * eff ) :
EffectControls( eff ),
m_effect( eff ),
m_inGain( 0.0f, -20.0f, 20.0f, 0.1f, this, "Input gain" ),
m_inNoise( 0.0f, 0.0f, 100.0f, 0.1f, this, "Input noise" ),
m_outGain( 0.0f, -20.0f, 20.0f, 0.1f, this, "Output gain" ),
m_outClip( 0.0f, -20.0f, 20.0f, 0.1f, this, "Output clip" ),
m_rate( 44100.f, 20.f, 44100.f, 1.0f, this, "Samplerate" ),
m_stereoDiff( 0.f, 0.f, 50.f, 0.1f, this, "Stereo difference" ),
m_levels( 256.f, 1.f, 256.f, 1.0f, this, "Levels" ),
m_rateEnabled( true, this, "Rate enabled" ),
m_depthEnabled( true, this, "Depth enabled" )
m_inGain( 0.0f, -20.0f, 20.0f, 0.1f, this, tr( "Input gain" ) ),
m_inNoise( 0.0f, 0.0f, 100.0f, 0.1f, this, tr( "Input noise" ) ),
m_outGain( 0.0f, -20.0f, 20.0f, 0.1f, this, tr( "Output gain" ) ),
m_outClip( 0.0f, -20.0f, 20.0f, 0.1f, this, tr( "Output clip" ) ),
m_rate( 44100.f, 20.f, 44100.f, 1.0f, this, tr( "Sample rate" ) ),
m_stereoDiff( 0.f, 0.f, 50.f, 0.1f, this, tr( "Stereo difference" ) ),
m_levels( 256.f, 1.f, 256.f, 1.0f, this, tr( "Levels" ) ),
m_rateEnabled( true, this, tr( "Rate enabled" ) ),
m_depthEnabled( true, this, tr( "Depth enabled" ) )
{
m_rate.setStrictStepSize( true );
m_levels.setStrictStepSize( true );

View File

@@ -49,67 +49,67 @@ CrossoverEQControlDialog::CrossoverEQControlDialog( CrossoverEQControls * contro
xover12->move( 29, 11 );
xover12->setModel( & controls->m_xover12 );
xover12->setLabel( "1/2" );
xover12->setHintText( tr( "Band 1/2 Crossover:" ), " Hz" );
xover12->setHintText( tr( "Band 1/2 crossover:" ), " Hz" );
Knob * xover23 = new Knob( knobBright_26, this );
xover23->move( 69, 11 );
xover23->setModel( & controls->m_xover23 );
xover23->setLabel( "2/3" );
xover23->setHintText( tr( "Band 2/3 Crossover:" ), " Hz" );
xover23->setHintText( tr( "Band 2/3 crossover:" ), " Hz" );
Knob * xover34 = new Knob( knobBright_26, this );
xover34->move( 109, 11 );
xover34->setModel( & controls->m_xover34 );
xover34->setLabel( "3/4" );
xover34->setHintText( tr( "Band 3/4 Crossover:" ), " Hz" );
xover34->setHintText( tr( "Band 3/4 crossover:" ), " Hz" );
m_fader_bg = QPixmap( PLUGIN_NAME::getIconPixmap( "fader_bg" ) );
m_fader_empty = QPixmap( PLUGIN_NAME::getIconPixmap( "fader_empty" ) );
m_fader_knob = QPixmap( PLUGIN_NAME::getIconPixmap( "fader_knob2" ) );
// faders
Fader * gain1 = new Fader( &controls->m_gain1, "Band 1 Gain", this,
Fader * gain1 = new Fader( &controls->m_gain1, tr( "Band 1 gain" ), this,
&m_fader_bg, &m_fader_empty, &m_fader_knob );
gain1->move( 7, 56 );
gain1->setDisplayConversion( false );
gain1->setHintText( tr( "Band 1 Gain:" ), " dBFS" );
gain1->setHintText( tr( "Band 1 gain:" ), " dBFS" );
Fader * gain2 = new Fader( &controls->m_gain2, "Band 2 Gain", this,
Fader * gain2 = new Fader( &controls->m_gain2, tr( "Band 2 gain" ), this,
&m_fader_bg, &m_fader_empty, &m_fader_knob );
gain2->move( 47, 56 );
gain2->setDisplayConversion( false );
gain2->setHintText( tr( "Band 2 Gain:" ), " dBFS" );
gain2->setHintText( tr( "Band 2 gain:" ), " dBFS" );
Fader * gain3 = new Fader( &controls->m_gain3, "Band 3 Gain", this,
Fader * gain3 = new Fader( &controls->m_gain3, tr( "Band 3 gain" ), this,
&m_fader_bg, &m_fader_empty, &m_fader_knob );
gain3->move( 87, 56 );
gain3->setDisplayConversion( false );
gain3->setHintText( tr( "Band 3 Gain:" ), " dBFS" );
gain3->setHintText( tr( "Band 3 gain:" ), " dBFS" );
Fader * gain4 = new Fader( &controls->m_gain4, "Band 4 Gain", this,
Fader * gain4 = new Fader( &controls->m_gain4, tr( "Band 4 gain" ), this,
&m_fader_bg, &m_fader_empty, &m_fader_knob );
gain4->move( 127, 56 );
gain4->setDisplayConversion( false );
gain4->setHintText( tr( "Band 4 Gain:" ), " dBFS" );
gain4->setHintText( tr( "Band 4 gain:" ), " dBFS" );
// leds
LedCheckBox * mute1 = new LedCheckBox( "", this, tr( "Band 1 Mute" ), LedCheckBox::Green );
LedCheckBox * mute1 = new LedCheckBox( "", this, tr( "Band 1 mute" ), LedCheckBox::Green );
mute1->move( 15, 154 );
mute1->setModel( & controls->m_mute1 );
ToolTip::add( mute1, tr( "Mute Band 1" ) );
ToolTip::add( mute1, tr( "Mute band 1" ) );
LedCheckBox * mute2 = new LedCheckBox( "", this, tr( "Band 2 Mute" ), LedCheckBox::Green );
LedCheckBox * mute2 = new LedCheckBox( "", this, tr( "Band 2 mute" ), LedCheckBox::Green );
mute2->move( 55, 154 );
mute2->setModel( & controls->m_mute2 );
ToolTip::add( mute2, tr( "Mute Band 2" ) );
ToolTip::add( mute2, tr( "Mute band 2" ) );
LedCheckBox * mute3 = new LedCheckBox( "", this, tr( "Band 3 Mute" ), LedCheckBox::Green );
LedCheckBox * mute3 = new LedCheckBox( "", this, tr( "Band 3 mute" ), LedCheckBox::Green );
mute3->move( 95, 154 );
mute3->setModel( & controls->m_mute3 );
ToolTip::add( mute3, tr( "Mute Band 3" ) );
ToolTip::add( mute3, tr( "Mute band 3" ) );
LedCheckBox * mute4 = new LedCheckBox( "", this, tr( "Band 4 Mute" ), LedCheckBox::Green );
LedCheckBox * mute4 = new LedCheckBox( "", this, tr( "Band 4 mute" ), LedCheckBox::Green );
mute4->move( 135, 154 );
mute4->setModel( & controls->m_mute4 );
ToolTip::add( mute4, tr( "Mute Band 4" ) );
ToolTip::add( mute4, tr( "Mute band 4" ) );
}

View File

@@ -32,10 +32,10 @@
DelayControls::DelayControls( DelayEffect* effect ):
EffectControls( effect ),
m_effect ( effect ),
m_delayTimeModel( 0.5, 0.01, 5.0, 0.0001, 5000.0, this, tr( "Delay Samples" )) ,
m_delayTimeModel( 0.5, 0.01, 5.0, 0.0001, 5000.0, this, tr( "Delay samples" )) ,
m_feedbackModel(0.0f,0.0f,1.0f,0.01f,this,tr( "Feedback" ) ),
m_lfoTimeModel(2.0, 0.01, 5.0, 0.0001, 20000.0, this, tr( "Lfo Frequency" ) ),
m_lfoAmountModel(0.0, 0.0, 0.5, 0.0001, 2000.0, this, tr ( "Lfo Amount" ) ),
m_lfoTimeModel(2.0, 0.01, 5.0, 0.0001, 20000.0, this, tr( "LFO frequency" ) ),
m_lfoAmountModel(0.0, 0.0, 0.5, 0.0001, 2000.0, this, tr ( "LFO amount" ) ),
m_outGainModel( 0.0, -60.0, 20.0, 0.01, this, tr( "Output gain" ) )
{
connect( Engine::mixer(), SIGNAL( sampleRateChanged() ), this, SLOT( changeSampleRate() ) );

View File

@@ -47,30 +47,30 @@ DelayControlsDialog::DelayControlsDialog( DelayControls *controls ) :
sampleDelayKnob->setVolumeKnob( false );
sampleDelayKnob->setModel( &controls->m_delayTimeModel );
sampleDelayKnob->setLabel( tr( "DELAY" ) );
sampleDelayKnob->setHintText( tr( "Delay Time" ) + " ", " s" );
sampleDelayKnob->setHintText( tr( "Delay time" ) + " ", " s" );
Knob * feedbackKnob = new Knob( knobBright_26, this );
feedbackKnob->move( 11, 58 );
feedbackKnob->setVolumeKnob( true) ;
feedbackKnob->setModel( &controls->m_feedbackModel);
feedbackKnob->setLabel( tr( "FDBK" ) );
feedbackKnob->setHintText( tr ( "Feedback Amount" ) + " " , "" );
feedbackKnob->setHintText( tr ( "Feedback amount" ) + " " , "" );
TempoSyncKnob * lfoFreqKnob = new TempoSyncKnob( knobBright_26, this );
lfoFreqKnob->move( 11, 119 );
lfoFreqKnob->setVolumeKnob( false );
lfoFreqKnob->setModel( &controls->m_lfoTimeModel );
lfoFreqKnob->setLabel( tr( "RATE" ) );
lfoFreqKnob->setHintText( tr ( "Lfo") + " ", " s" );
lfoFreqKnob->setHintText( tr ( "LFO frequency") + " ", " s" );
TempoSyncKnob * lfoAmtKnob = new TempoSyncKnob( knobBright_26, this );
lfoAmtKnob->move( 11, 159 );
lfoAmtKnob->setVolumeKnob( false );
lfoAmtKnob->setModel( &controls->m_lfoAmountModel );
lfoAmtKnob->setLabel( tr( "AMNT" ) );
lfoAmtKnob->setHintText( tr ( "Lfo Amt" ) + " " , " s" );
lfoAmtKnob->setHintText( tr ( "LFO amount" ) + " " , " s" );
EqFader * outFader = new EqFader( &controls->m_outGainModel,tr( "Out Gain" ),
EqFader * outFader = new EqFader( &controls->m_outGainModel,tr( "Out gain" ),
this, &controls->m_outPeakL, &controls->m_outPeakR );
outFader->setMaximumHeight( 196 );
outFader->move( 263, 45 );

View File

@@ -69,10 +69,10 @@ DualFilterControlDialog::DualFilterControlDialog( DualFilterControls* controls )
enabled1Toggle -> move( 12, 11 );
enabled1Toggle -> setModel( &controls -> m_enabled1Model );
ToolTip::add( enabled1Toggle, tr( "Click to enable/disable Filter 1" ) );
ToolTip::add( enabled1Toggle, tr( "Enable/disable filter 1" ) );
enabled2Toggle -> move( 210, 11 );
enabled2Toggle -> setModel( &controls -> m_enabled2Model );
ToolTip::add( enabled2Toggle, tr( "Click to enable/disable Filter 2" ) );
ToolTip::add( enabled2Toggle, tr( "Enable/disable filter 2" ) );
ComboBox * m_filter1ComboBox = new ComboBox( this );
m_filter1ComboBox->setGeometry( 19, 70, 137, 22 );

View File

@@ -40,7 +40,7 @@ DualFilterControls::DualFilterControls( DualFilterEffect* effect ) :
m_enabled1Model( true, this, tr( "Filter 1 enabled" ) ),
m_filter1Model( this, tr( "Filter 1 type" ) ),
m_cut1Model( 7000.0f, 1.0f, 20000.0f, 1.0f, this, tr( "Cutoff 1 frequency" ) ),
m_cut1Model( 7000.0f, 1.0f, 20000.0f, 1.0f, this, tr( "Cutoff frequency 1" ) ),
m_res1Model( 0.5, BasicFilters<>::minQ(), 10.0, 0.01, this, tr( "Q/Resonance 1" ) ),
m_gain1Model( 100.0f, 0.0f, 200.0f, 0.1f, this, tr( "Gain 1" ) ),
@@ -48,52 +48,52 @@ DualFilterControls::DualFilterControls( DualFilterEffect* effect ) :
m_enabled2Model( true, this, tr( "Filter 2 enabled" ) ),
m_filter2Model( this, tr( "Filter 2 type" ) ),
m_cut2Model( 7000.0f, 1.0f, 20000.0f, 1.0f, this, tr( "Cutoff 2 frequency" ) ),
m_cut2Model( 7000.0f, 1.0f, 20000.0f, 1.0f, this, tr( "Cutoff frequency 2" ) ),
m_res2Model( 0.5, BasicFilters<>::minQ(), 10.0, 0.01, this, tr( "Q/Resonance 2" ) ),
m_gain2Model( 100.0f, 0.0f, 200.0f, 0.1f, this, tr( "Gain 2" ) )
{
m_filter1Model.addItem( tr( "LowPass" ), make_unique<PixmapLoader>( "filter_lp" ) );
m_filter1Model.addItem( tr( "HiPass" ), make_unique<PixmapLoader>( "filter_hp" ) );
m_filter1Model.addItem( tr( "BandPass csg" ), make_unique<PixmapLoader>( "filter_bp" ) );
m_filter1Model.addItem( tr( "BandPass czpg" ), make_unique<PixmapLoader>( "filter_bp" ) );
m_filter1Model.addItem( tr( "Low-pass" ), make_unique<PixmapLoader>( "filter_lp" ) );
m_filter1Model.addItem( tr( "Hi-pass" ), make_unique<PixmapLoader>( "filter_hp" ) );
m_filter1Model.addItem( tr( "Band-pass csg" ), make_unique<PixmapLoader>( "filter_bp" ) );
m_filter1Model.addItem( tr( "Band-pass czpg" ), make_unique<PixmapLoader>( "filter_bp" ) );
m_filter1Model.addItem( tr( "Notch" ), make_unique<PixmapLoader>( "filter_notch" ) );
m_filter1Model.addItem( tr( "Allpass" ), make_unique<PixmapLoader>( "filter_ap" ) );
m_filter1Model.addItem( tr( "All-pass" ), make_unique<PixmapLoader>( "filter_ap" ) );
m_filter1Model.addItem( tr( "Moog" ), make_unique<PixmapLoader>( "filter_lp" ) );
m_filter1Model.addItem( tr( "2x LowPass" ), make_unique<PixmapLoader>( "filter_2lp" ) );
m_filter1Model.addItem( tr( "RC LowPass 12dB" ), make_unique<PixmapLoader>( "filter_lp" ) );
m_filter1Model.addItem( tr( "RC BandPass 12dB" ), make_unique<PixmapLoader>( "filter_bp" ) );
m_filter1Model.addItem( tr( "RC HighPass 12dB" ), make_unique<PixmapLoader>( "filter_hp" ) );
m_filter1Model.addItem( tr( "RC LowPass 24dB" ), make_unique<PixmapLoader>( "filter_lp" ) );
m_filter1Model.addItem( tr( "RC BandPass 24dB" ), make_unique<PixmapLoader>( "filter_bp" ) );
m_filter1Model.addItem( tr( "RC HighPass 24dB" ), make_unique<PixmapLoader>( "filter_hp" ) );
m_filter1Model.addItem( tr( "Vocal Formant Filter" ), make_unique<PixmapLoader>( "filter_hp" ) );
m_filter1Model.addItem( tr( "2x Low-pass" ), make_unique<PixmapLoader>( "filter_2lp" ) );
m_filter1Model.addItem( tr( "RC Low-pass 12 dB/oct" ), make_unique<PixmapLoader>( "filter_lp" ) );
m_filter1Model.addItem( tr( "RC Band-pass 12 dB/oct" ), make_unique<PixmapLoader>( "filter_bp" ) );
m_filter1Model.addItem( tr( "RC High-pass 12 dB/oct" ), make_unique<PixmapLoader>( "filter_hp" ) );
m_filter1Model.addItem( tr( "RC Low-pass 24 dB/oct" ), make_unique<PixmapLoader>( "filter_lp" ) );
m_filter1Model.addItem( tr( "RC Band-pass 24 dB/oct" ), make_unique<PixmapLoader>( "filter_bp" ) );
m_filter1Model.addItem( tr( "RC High-pass 24 dB/oct" ), make_unique<PixmapLoader>( "filter_hp" ) );
m_filter1Model.addItem( tr( "Vocal Formant" ), make_unique<PixmapLoader>( "filter_hp" ) );
m_filter1Model.addItem( tr( "2x Moog" ), make_unique<PixmapLoader>( "filter_2lp" ) );
m_filter1Model.addItem( tr( "SV LowPass" ), make_unique<PixmapLoader>( "filter_lp" ) );
m_filter1Model.addItem( tr( "SV BandPass" ), make_unique<PixmapLoader>( "filter_bp" ) );
m_filter1Model.addItem( tr( "SV HighPass" ), make_unique<PixmapLoader>( "filter_hp" ) );
m_filter1Model.addItem( tr( "SV Low-pass" ), make_unique<PixmapLoader>( "filter_lp" ) );
m_filter1Model.addItem( tr( "SV Band-pass" ), make_unique<PixmapLoader>( "filter_bp" ) );
m_filter1Model.addItem( tr( "SV High-pass" ), make_unique<PixmapLoader>( "filter_hp" ) );
m_filter1Model.addItem( tr( "SV Notch" ), make_unique<PixmapLoader>( "filter_notch" ) );
m_filter1Model.addItem( tr( "Fast Formant" ), make_unique<PixmapLoader>( "filter_hp" ) );
m_filter1Model.addItem( tr( "Tripole" ), make_unique<PixmapLoader>( "filter_lp" ) );
m_filter2Model.addItem( tr( "LowPass" ), make_unique<PixmapLoader>( "filter_lp" ) );
m_filter2Model.addItem( tr( "HiPass" ), make_unique<PixmapLoader>( "filter_hp" ) );
m_filter2Model.addItem( tr( "BandPass csg" ), make_unique<PixmapLoader>( "filter_bp" ) );
m_filter2Model.addItem( tr( "BandPass czpg" ), make_unique<PixmapLoader>( "filter_bp" ) );
m_filter2Model.addItem( tr( "Low-pass" ), make_unique<PixmapLoader>( "filter_lp" ) );
m_filter2Model.addItem( tr( "Hi-pass" ), make_unique<PixmapLoader>( "filter_hp" ) );
m_filter2Model.addItem( tr( "Band-pass csg" ), make_unique<PixmapLoader>( "filter_bp" ) );
m_filter2Model.addItem( tr( "Band-pass czpg" ), make_unique<PixmapLoader>( "filter_bp" ) );
m_filter2Model.addItem( tr( "Notch" ), make_unique<PixmapLoader>( "filter_notch" ) );
m_filter2Model.addItem( tr( "Allpass" ), make_unique<PixmapLoader>( "filter_ap" ) );
m_filter2Model.addItem( tr( "All-pass" ), make_unique<PixmapLoader>( "filter_ap" ) );
m_filter2Model.addItem( tr( "Moog" ), make_unique<PixmapLoader>( "filter_lp" ) );
m_filter2Model.addItem( tr( "2x LowPass" ), make_unique<PixmapLoader>( "filter_2lp" ) );
m_filter2Model.addItem( tr( "RC LowPass 12dB" ), make_unique<PixmapLoader>( "filter_lp" ) );
m_filter2Model.addItem( tr( "RC BandPass 12dB" ), make_unique<PixmapLoader>( "filter_bp" ) );
m_filter2Model.addItem( tr( "RC HighPass 12dB" ), make_unique<PixmapLoader>( "filter_hp" ) );
m_filter2Model.addItem( tr( "RC LowPass 24dB" ), make_unique<PixmapLoader>( "filter_lp" ) );
m_filter2Model.addItem( tr( "RC BandPass 24dB" ), make_unique<PixmapLoader>( "filter_bp" ) );
m_filter2Model.addItem( tr( "RC HighPass 24dB" ), make_unique<PixmapLoader>( "filter_hp" ) );
m_filter2Model.addItem( tr( "Vocal Formant Filter" ), make_unique<PixmapLoader>( "filter_hp" ) );
m_filter2Model.addItem( tr( "2x Low-pass" ), make_unique<PixmapLoader>( "filter_2lp" ) );
m_filter2Model.addItem( tr( "RC Low-pass 12 dB/oct" ), make_unique<PixmapLoader>( "filter_lp" ) );
m_filter2Model.addItem( tr( "RC Band-pass 12 dB/oct" ), make_unique<PixmapLoader>( "filter_bp" ) );
m_filter2Model.addItem( tr( "RC High-pass 12 dB/oct" ), make_unique<PixmapLoader>( "filter_hp" ) );
m_filter2Model.addItem( tr( "RC Low-pass 24 dB/oct" ), make_unique<PixmapLoader>( "filter_lp" ) );
m_filter2Model.addItem( tr( "RC Band-pass 24 dB/oct" ), make_unique<PixmapLoader>( "filter_bp" ) );
m_filter2Model.addItem( tr( "RC High-pass 24 dB/oct" ), make_unique<PixmapLoader>( "filter_hp" ) );
m_filter2Model.addItem( tr( "Vocal Formant" ), make_unique<PixmapLoader>( "filter_hp" ) );
m_filter2Model.addItem( tr( "2x Moog" ), make_unique<PixmapLoader>( "filter_2lp" ) );
m_filter2Model.addItem( tr( "SV LowPass" ), make_unique<PixmapLoader>( "filter_lp" ) );
m_filter2Model.addItem( tr( "SV BandPass" ), make_unique<PixmapLoader>( "filter_bp" ) );
m_filter2Model.addItem( tr( "SV HighPass" ), make_unique<PixmapLoader>( "filter_hp" ) );
m_filter2Model.addItem( tr( "SV Low-pass" ), make_unique<PixmapLoader>( "filter_lp" ) );
m_filter2Model.addItem( tr( "SV Band-pass" ), make_unique<PixmapLoader>( "filter_bp" ) );
m_filter2Model.addItem( tr( "SV High-pass" ), make_unique<PixmapLoader>( "filter_hp" ) );
m_filter2Model.addItem( tr( "SV Notch" ), make_unique<PixmapLoader>( "filter_notch" ) );
m_filter2Model.addItem( tr( "Fast Formant" ), make_unique<PixmapLoader>( "filter_hp" ) );
m_filter2Model.addItem( tr( "Tripole" ), make_unique<PixmapLoader>( "filter_lp" ) );

View File

@@ -36,35 +36,35 @@ EqControls::EqControls( EqEffect *effect ) :
m_effect( effect ),
m_inGainModel( 0.0, -60.0, 20.0, 0.01, this, tr( "Input gain") ),
m_outGainModel( -.0, -60.0, 20.0, 0.01, this, tr( "Output gain" ) ),
m_lowShelfGainModel( 0.0 , -18, 18, 0.001, this, tr( "Low shelf gain" ) ),
m_lowShelfGainModel( 0.0 , -18, 18, 0.001, this, tr( "Low-shelf gain" ) ),
m_para1GainModel( 0.0 , -18, 18, 0.001, this, tr( "Peak 1 gain" ) ),
m_para2GainModel( 0.0 , -18, 18, 0.001, this, tr( "Peak 2 gain" ) ),
m_para3GainModel( 0.0 , -18, 18, 0.001, this, tr( "Peak 3 gain" ) ),
m_para4GainModel( 0.0 , -18, 18, 0.001, this, tr( "Peak 4 gain" ) ),
m_highShelfGainModel( 0.0 , -18, 18, 0.001, this, tr( "High Shelf gain" ) ),
m_highShelfGainModel( 0.0 , -18, 18, 0.001, this, tr( "High-shelf gain" ) ),
m_hpResModel( 0.707,0.003, 10.0 , 0.001, this, tr( "HP res" ) ),
m_lowShelfResModel( 1.4,0.55, 10.0 , 0.001, this , tr( "Low Shelf res" ) ),
m_lowShelfResModel( 1.4,0.55, 10.0 , 0.001, this , tr( "Low-shelf res" ) ),
m_para1BwModel( 0.3, 0.1, 4 , 0.001, this , tr( "Peak 1 BW" ) ),
m_para2BwModel( 0.3, 0.1, 4 , 0.001, this , tr( "Peak 2 BW" ) ),
m_para3BwModel( 0.3, 0.1, 4 , 0.001, this , tr( "Peak 3 BW" ) ),
m_para4BwModel( 0.3, 0.1, 4 , 0.001, this , tr( "Peak 4 BW" ) ),
m_highShelfResModel( 1.4, 0.55, 10.0 , 0.001, this , tr( "High Shelf res" ) ),
m_highShelfResModel( 1.4, 0.55, 10.0 , 0.001, this , tr( "High-shelf res" ) ),
m_lpResModel( 0.707,0.003, 10.0 , 0.001, this , tr( "LP res" ) ),
m_hpFeqModel( 31.0, 20.0, 20000, 0.001, this , tr( "HP freq" ) ),
m_lowShelfFreqModel( 80.0, 20.0, 20000, 0.001, this , tr( "Low Shelf freq" ) ),
m_lowShelfFreqModel( 80.0, 20.0, 20000, 0.001, this , tr( "Low-shelf freq" ) ),
m_para1FreqModel( 120.0, 20.0, 20000, 0.001, this , tr( "Peak 1 freq" ) ),
m_para2FreqModel( 250.0, 20.0, 20000, 0.001, this, tr( "Peak 2 freq" ) ),
m_para3FreqModel( 2000.0, 20.0, 20000, 0.001, this , tr( "Peak 3 freq" ) ),
m_para4FreqModel( 4000.0, 20.0, 20000, 0.001, this , tr( "Peak 4 freq" ) ),
m_highShelfFreqModel( 12000.0, 20.0, 20000, 0.001, this , tr( "High shelf freq" ) ),
m_highShelfFreqModel( 12000.0, 20.0, 20000, 0.001, this , tr( "High-shelf freq" ) ),
m_lpFreqModel( 18000.0, 20.0, 20000, 0.001, this , tr( "LP freq" ) ),
m_hpActiveModel( false, this , tr( "HP active" ) ),
m_lowShelfActiveModel( false, this , tr( "Low shelf active" ) ),
m_lowShelfActiveModel( false, this , tr( "Low-shelf active" ) ),
m_para1ActiveModel( false, this , tr( "Peak 1 active" ) ),
m_para2ActiveModel( false, this , tr( "Peak 2 active" ) ),
m_para3ActiveModel( false, this , tr( "Peak 3 active" ) ),
m_para4ActiveModel( false, this , tr( "Peak 4 active" ) ),
m_highShelfActiveModel( false, this , tr( "High shelf active" ) ),
m_highShelfActiveModel( false, this , tr( "High-shelf active" ) ),
m_lpActiveModel( false, this , tr( "LP active" ) ),
m_lp12Model( false, this , tr( "LP 12" ) ),
m_lp24Model( false, this , tr( "LP 24" ) ),
@@ -72,8 +72,8 @@ EqControls::EqControls( EqEffect *effect ) :
m_hp12Model( false, this , tr( "HP 12" ) ),
m_hp24Model( false, this , tr( "HP 24" ) ),
m_hp48Model( false, this , tr( "HP 48" ) ),
m_lpTypeModel( 0,0,2, this, tr( "low pass type" ) ) ,
m_hpTypeModel( 0,0,2, this, tr( "high pass type" ) ),
m_lpTypeModel( 0,0,2, this, tr( "Low-pass type" ) ) ,
m_hpTypeModel( 0,0,2, this, tr( "High-pass type" ) ),
m_analyseInModel( true, this , tr( "Analyse IN" ) ),
m_analyseOutModel( true, this, tr( "Analyse OUT" ) )
{

View File

@@ -65,24 +65,24 @@ EqControlsDialog::EqControlsDialog( EqControls *controls ) :
m_parameterWidget->move( 26, 17 );
setBand( 0, &controls->m_hpActiveModel, &controls->m_hpFeqModel, &controls->m_hpResModel, 0, QColor(255 ,255, 255), tr( "HP" ) ,0,0, &controls->m_hp12Model, &controls->m_hp24Model, &controls->m_hp48Model,0,0,0);
setBand( 1, &controls->m_lowShelfActiveModel, &controls->m_lowShelfFreqModel, &controls->m_lowShelfResModel, &controls->m_lowShelfGainModel, QColor(255 ,255, 255), tr( "Low Shelf" ), &controls->m_lowShelfPeakL , &controls->m_lowShelfPeakR,0,0,0,0,0,0 );
setBand( 1, &controls->m_lowShelfActiveModel, &controls->m_lowShelfFreqModel, &controls->m_lowShelfResModel, &controls->m_lowShelfGainModel, QColor(255 ,255, 255), tr( "Low-shelf" ), &controls->m_lowShelfPeakL , &controls->m_lowShelfPeakR,0,0,0,0,0,0 );
setBand( 2, &controls->m_para1ActiveModel, &controls->m_para1FreqModel, &controls->m_para1BwModel, &controls->m_para1GainModel, QColor(255 ,255, 255), tr( "Peak 1" ), &controls->m_para1PeakL, &controls->m_para1PeakR,0,0,0,0,0,0 );
setBand( 3, &controls->m_para2ActiveModel, &controls->m_para2FreqModel, &controls->m_para2BwModel, &controls->m_para2GainModel, QColor(255 ,255, 255), tr( "Peak 2" ), &controls->m_para2PeakL, &controls->m_para2PeakR,0,0,0,0,0,0 );
setBand( 4, &controls->m_para3ActiveModel, &controls->m_para3FreqModel, &controls->m_para3BwModel, &controls->m_para3GainModel, QColor(255 ,255, 255), tr( "Peak 3" ), &controls->m_para3PeakL, &controls->m_para3PeakR,0,0,0,0,0,0 );
setBand( 5, &controls->m_para4ActiveModel, &controls->m_para4FreqModel, &controls->m_para4BwModel, &controls->m_para4GainModel, QColor(255 ,255, 255), tr( "Peak 4" ), &controls->m_para4PeakL, &controls->m_para4PeakR,0,0,0,0,0,0 );
setBand( 6, &controls->m_highShelfActiveModel, &controls->m_highShelfFreqModel, &controls->m_highShelfResModel, &controls->m_highShelfGainModel, QColor(255 ,255, 255), tr( "High Shelf" ), &controls->m_highShelfPeakL, &controls->m_highShelfPeakR,0,0,0,0,0,0 );
setBand( 6, &controls->m_highShelfActiveModel, &controls->m_highShelfFreqModel, &controls->m_highShelfResModel, &controls->m_highShelfGainModel, QColor(255 ,255, 255), tr( "High-shelf" ), &controls->m_highShelfPeakL, &controls->m_highShelfPeakR,0,0,0,0,0,0 );
setBand( 7, &controls->m_lpActiveModel, &controls->m_lpFreqModel, &controls->m_lpResModel, 0, QColor(255 ,255, 255), tr( "LP" ) ,0,0,0,0,0, &controls->m_lp12Model, &controls->m_lp24Model, &controls->m_lp48Model);
QPixmap * faderBg = new QPixmap( PLUGIN_NAME::getIconPixmap( "faderback" ) );
QPixmap * faderLeds = new QPixmap( PLUGIN_NAME::getIconPixmap( "faderleds" ) );
QPixmap * faderKnob = new QPixmap( PLUGIN_NAME::getIconPixmap( "faderknob" ) );
EqFader * GainFaderIn = new EqFader( &controls->m_inGainModel, tr( "In Gain" ), this, faderBg, faderLeds, faderKnob, &controls->m_inPeakL, &controls->m_inPeakR );
EqFader * GainFaderIn = new EqFader( &controls->m_inGainModel, tr( "Input gain" ), this, faderBg, faderLeds, faderKnob, &controls->m_inPeakL, &controls->m_inPeakR );
GainFaderIn->move( 23, 295 );
GainFaderIn->setDisplayConversion( false );
GainFaderIn->setHintText( tr( "Gain" ), "dBv");
EqFader * GainFaderOut = new EqFader( &controls->m_outGainModel, tr( "Out Gain" ), this, faderBg, faderLeds, faderKnob, &controls->m_outPeakL, &controls->m_outPeakR );
EqFader * GainFaderOut = new EqFader( &controls->m_outGainModel, tr( "Output gain" ), this, faderBg, faderLeds, faderKnob, &controls->m_outPeakL, &controls->m_outPeakR );
GainFaderOut->move( 453, 295);
GainFaderOut->setDisplayConversion( false );
GainFaderOut->setHintText( tr( "Gain" ), "dBv" );
@@ -197,13 +197,13 @@ EqControlsDialog::EqControlsDialog( EqControls *controls ) :
QObject::connect( m_parameterWidget->getBandModels( 7 )->lp24 , SIGNAL ( dataChanged() ), m_parameterWidget, SLOT( updateHandle()));
QObject::connect( m_parameterWidget->getBandModels( 7 )->lp48 , SIGNAL ( dataChanged() ), m_parameterWidget, SLOT( updateHandle()));
automatableButtonGroup *lpBtnGrp = new automatableButtonGroup(this,tr ( "lp grp" ) );
automatableButtonGroup *lpBtnGrp = new automatableButtonGroup( this, tr( "LP group" ) );
lpBtnGrp->addButton( lp12Button );
lpBtnGrp->addButton( lp24Button );
lpBtnGrp->addButton( lp48Button );
lpBtnGrp->setModel( &m_controls->m_lpTypeModel, false);
automatableButtonGroup *hpBtnGrp = new automatableButtonGroup( this, tr( "hp grp" ) );
automatableButtonGroup *hpBtnGrp = new automatableButtonGroup( this, tr( "HP group" ) );
hpBtnGrp->addButton( hp12Button );
hpBtnGrp->addButton( hp24Button );
hpBtnGrp->addButton( hp48Button );

View File

@@ -122,9 +122,7 @@ bool EqEffect::processAudioBuffer( sampleFrame *buf, const fpp_t frames )
m_hp12.setParameters( sampleRate, hpFreq, hpRes, 1 );
m_hp24.setParameters( sampleRate, hpFreq, hpRes, 1 );
m_hp480.setParameters( sampleRate, hpFreq, hpRes, 1 );
m_lp480.setParameters( sampleRate, lpFreq, lpRes, 1 );
m_hp481.setParameters( sampleRate, hpFreq, hpRes, 1 );
m_lp481.setParameters( sampleRate, hpFreq, hpRes, 1 );
m_lowShelf.setParameters( sampleRate, lowShelfFreq, lowShelfRes, lowShelfGain );
m_para1.setParameters( sampleRate, para1Freq, para1Bw, para1Gain );
m_para2.setParameters( sampleRate, para2Freq, para2Bw, para2Gain );
@@ -134,7 +132,7 @@ bool EqEffect::processAudioBuffer( sampleFrame *buf, const fpp_t frames )
m_lp12.setParameters( sampleRate, lpFreq, lpRes, 1 );
m_lp24.setParameters( sampleRate, lpFreq, lpRes, 1 );
m_lp480.setParameters( sampleRate, lpFreq, lpRes, 1 );
m_lp480.setParameters( sampleRate, lpFreq, lpRes, 1 );
m_lp481.setParameters( sampleRate, lpFreq, lpRes, 1 );
@@ -165,7 +163,7 @@ bool EqEffect::processAudioBuffer( sampleFrame *buf, const fpp_t frames )
const float outGain = m_outGain;
sampleFrame m_inPeak = { 0, 0 };
if(m_eqControls.m_analyseInModel.value( true ) && outSum > 0 )
if(m_eqControls.m_analyseInModel.value( true ) && outSum > 0 && m_eqControls.isViewVisible() )
{
m_eqControls.m_inFftBands.analyze( buf, frames );
}
@@ -276,7 +274,7 @@ bool EqEffect::processAudioBuffer( sampleFrame *buf, const fpp_t frames )
checkGate( outSum / frames );
if(m_eqControls.m_analyseOutModel.value( true ) && outSum > 0 )
if(m_eqControls.m_analyseOutModel.value( true ) && outSum > 0 && m_eqControls.isViewVisible() )
{
m_eqControls.m_outFftBands.analyze( buf, frames );
setBandPeaks( &m_eqControls.m_outFftBands , ( int )( sampleRate ) );

View File

@@ -196,8 +196,6 @@ EqSpectrumView::EqSpectrumView(EqAnalyser *b, QWidget *_parent) :
void EqSpectrumView::paintEvent(QPaintEvent *event)
{
//only analyse if the view is visible
m_analyser->setActive( isVisible() );
const float energy = m_analyser->getEnergy();
if( energy <= 0 && m_peakSum <= 0 )
{
@@ -209,6 +207,7 @@ void EqSpectrumView::paintEvent(QPaintEvent *event)
const int LOWER_Y = -36; // dB
QPainter painter( this );
painter.setPen( QPen( m_color, 1, Qt::SolidLine, Qt::RoundCap, Qt::BevelJoin ) );
painter.setRenderHint(QPainter::Antialiasing, true);
if( m_analyser->getInProgress() || m_periodicalUpdate == false )
{
@@ -291,5 +290,6 @@ float EqSpectrumView::bandToFreq( int index )
void EqSpectrumView::periodicalUpdate()
{
m_periodicalUpdate = true;
m_analyser->setActive( isVisible() );
update();
}

View File

@@ -34,8 +34,8 @@
FlangerControls::FlangerControls( FlangerEffect *effect ) :
EffectControls ( effect ),
m_effect ( effect ),
m_delayTimeModel(0.001, 0.0001, 0.050, 0.0001, this, tr( "Delay Samples" ) ) ,
m_lfoFrequencyModel( 0.25, 0.01, 60, 0.0001, 60000.0 ,this, tr( "Lfo Frequency" ) ),
m_delayTimeModel(0.001, 0.0001, 0.050, 0.0001, this, tr( "Delay samples" ) ) ,
m_lfoFrequencyModel( 0.25, 0.01, 60, 0.0001, 60000.0 ,this, tr( "LFO frequency" ) ),
m_lfoAmountModel( 0.0, 0.0, 0.0025 , 0.0001 , this , tr( "Seconds" ) ),
m_feedbackModel( 0.0 , 0.0 , 1.0 , 0.0001, this, tr( "Regen" ) ),
m_whiteNoiseAmountModel( 0.0 , 0.0 , 0.05 , 0.0001, this, tr( "Noise" ) ),
@@ -43,6 +43,7 @@ FlangerControls::FlangerControls( FlangerEffect *effect ) :
{
connect( Engine::mixer(), SIGNAL( sampleRateChanged() ), this, SLOT( changedSampleRate() ) );
connect( Engine::getSong(), SIGNAL( playbackStateChanged() ), this, SLOT( changedPlaybackState() ) );
}
@@ -81,3 +82,9 @@ void FlangerControls::changedSampleRate()
}
void FlangerControls::changedPlaybackState()
{
m_effect->restartLFO();
}

View File

@@ -57,6 +57,7 @@ public:
private slots:
void changedSampleRate();
void changedPlaybackState();
private:
FlangerEffect* m_effect;

View File

@@ -45,35 +45,35 @@ FlangerControlsDialog::FlangerControlsDialog( FlangerControls *controls ) :
delayKnob->setVolumeKnob( false );
delayKnob->setModel( &controls->m_delayTimeModel );
delayKnob->setLabel( tr( "DELAY" ) );
delayKnob->setHintText( tr( "Delay Time:" ) + " ", "s" );
delayKnob->setHintText( tr( "Delay time:" ) + " ", "s" );
TempoSyncKnob * lfoFreqKnob = new TempoSyncKnob( knobBright_26, this );
lfoFreqKnob->move( 48,10 );
lfoFreqKnob->setVolumeKnob( false );
lfoFreqKnob->setModel( &controls->m_lfoFrequencyModel );
lfoFreqKnob->setLabel( tr( "RATE" ) );
lfoFreqKnob->setHintText( tr ( "Period:" ) , " Sec" );
lfoFreqKnob->setHintText( tr( "Period:" ) , " Sec" );
Knob * lfoAmtKnob = new Knob( knobBright_26, this );
lfoAmtKnob->move( 85,10 );
lfoAmtKnob->setVolumeKnob( false );
lfoAmtKnob->setModel( &controls->m_lfoAmountModel );
lfoAmtKnob->setLabel( tr( "AMNT" ) );
lfoAmtKnob->setHintText( tr ( "Amount:" ) , "" );
lfoAmtKnob->setHintText( tr( "Amount:" ) , "" );
Knob * feedbackKnob = new Knob( knobBright_26, this );
feedbackKnob->move( 122,10 );
feedbackKnob->setVolumeKnob( true) ;
feedbackKnob->setModel( &controls->m_feedbackModel );
feedbackKnob->setLabel( tr( "FDBK" ) );
feedbackKnob->setHintText( tr ( "Feedback Amount:" ) , "" );
feedbackKnob->setHintText( tr( "Feedback amount:" ) , "" );
Knob * whiteNoiseKnob = new Knob( knobBright_26, this );
whiteNoiseKnob->move( 156,10 );
whiteNoiseKnob->setVolumeKnob( true) ;
whiteNoiseKnob->setModel( &controls->m_whiteNoiseAmountModel );
whiteNoiseKnob->setLabel( tr( "NOISE" ) );
whiteNoiseKnob->setHintText( tr ( "White Noise Amount:" ) , "" );
whiteNoiseKnob->setHintText( tr( "White noise amount:" ) , "" );
LedCheckBox * invertCb = new LedCheckBox( tr( "Invert" ), this );
invertCb->move( 10,53 );

View File

@@ -68,7 +68,7 @@ FlangerEffect::~FlangerEffect()
{
delete m_rDelay;
}
if(m_lfo )
if( m_lfo )
{
delete m_lfo;
}
@@ -139,6 +139,15 @@ void FlangerEffect::changeSampleRate()
void FlangerEffect::restartLFO()
{
m_lfo->restart();
}
extern "C"
{

View File

@@ -44,6 +44,7 @@ public:
return &m_flangerControls;
}
void changeSampleRate();
void restartLFO();
private:
FlangerControls m_flangerControls;

View File

@@ -53,6 +53,14 @@ public:
inline void restart()
{
m_phase = 0;
}
inline void setSampleRate ( int samplerate )
{
m_samplerate = samplerate;

View File

@@ -70,9 +70,9 @@ FreeBoyInstrument::FreeBoyInstrument( InstrumentTrack * _instrument_track ) :
m_ch1SweepTimeModel( 4.0f, 0.0f, 7.0f, 1.0f, this, tr( "Sweep time" ) ),
m_ch1SweepDirModel( false, this, tr( "Sweep direction" ) ),
m_ch1SweepRtShiftModel( 4.0f, 0.0f, 7.0f, 1.0f, this,
tr( "Sweep RtShift amount" ) ),
tr( "Sweep rate shift amount" ) ),
m_ch1WavePatternDutyModel( 2.0f, 0.0f, 3.0f, 1.0f, this,
tr( "Wave Pattern Duty" ) ),
tr( "Wave pattern duty cycle" ) ),
m_ch1VolumeModel( 15.0f, 0.0f, 15.0f, 1.0f, this,
tr( "Channel 1 volume" ) ),
m_ch1VolSweepDirModel( false, this,
@@ -81,7 +81,7 @@ FreeBoyInstrument::FreeBoyInstrument( InstrumentTrack * _instrument_track ) :
tr( "Length of each step in sweep" ) ),
m_ch2WavePatternDutyModel( 2.0f, 0.0f, 3.0f, 1.0f, this,
tr( "Wave Pattern Duty" ) ),
tr( "Wave pattern duty cycle" ) ),
m_ch2VolumeModel( 15.0f, 0.0f, 15.0f, 1.0f, this,
tr( "Channel 2 volume" ) ),
m_ch2VolSweepDirModel( false, this,
@@ -102,8 +102,8 @@ FreeBoyInstrument::FreeBoyInstrument( InstrumentTrack * _instrument_track ) :
m_ch4ShiftRegWidthModel( false, this,
tr( "Shift Register width" ) ),
m_so1VolumeModel( 7.0f, 0.0f, 7.0f, 1.0f, this, tr( "Right Output level") ),
m_so2VolumeModel( 7.0f, 0.0f, 7.0f, 1.0f, this, tr( "Left Output level" ) ),
m_so1VolumeModel( 7.0f, 0.0f, 7.0f, 1.0f, this, tr( "Right output level") ),
m_so2VolumeModel( 7.0f, 0.0f, 7.0f, 1.0f, this, tr( "Left output level" ) ),
m_ch1So1Model( true, this, tr( "Channel 1 to SO2 (Left)" ) ),
m_ch2So1Model( true, this, tr( "Channel 2 to SO2 (Left)" ) ),
m_ch3So1Model( true, this, tr( "Channel 3 to SO2 (Left)" ) ),
@@ -464,102 +464,85 @@ FreeBoyInstrumentView::FreeBoyInstrumentView( Instrument * _instrument,
setPalette( pal );
m_ch1SweepTimeKnob = new FreeBoyKnob( this );
m_ch1SweepTimeKnob->setHintText( tr( "Sweep Time:" ), "" );
m_ch1SweepTimeKnob->setHintText( tr( "Sweep time:" ), "" );
m_ch1SweepTimeKnob->move( 5 + 4*32, 106 );
ToolTip::add( m_ch1SweepTimeKnob, tr( "Sweep Time" ) );
m_ch1SweepTimeKnob->setWhatsThis( tr( "The amount of increase or"
" decrease in frequency" ) );
ToolTip::add( m_ch1SweepTimeKnob, tr( "Sweep time" ) );
m_ch1SweepRtShiftKnob = new FreeBoyKnob( this );
m_ch1SweepRtShiftKnob->setHintText( tr( "Sweep RtShift amount:" )
m_ch1SweepRtShiftKnob->setHintText( tr( "Sweep rate shift amount:" )
, "" );
m_ch1SweepRtShiftKnob->move( 5 + 3*32, 106 );
ToolTip::add( m_ch1SweepRtShiftKnob, tr( "Sweep RtShift amount" ) );
m_ch1SweepRtShiftKnob->setWhatsThis( tr( "The rate at which increase or"
" decrease in frequency occurs" ) );
ToolTip::add( m_ch1SweepRtShiftKnob, tr( "Sweep rate shift amount" ) );
m_ch1WavePatternDutyKnob = new FreeBoyKnob( this );
m_ch1WavePatternDutyKnob->setHintText( tr( "Wave pattern duty:" )
m_ch1WavePatternDutyKnob->setHintText( tr( "Wave pattern duty cycle:" )
, "" );
m_ch1WavePatternDutyKnob->move( 5 + 2*32, 106 );
ToolTip::add( m_ch1WavePatternDutyKnob, tr( "Wave Pattern Duty" ) );
m_ch1WavePatternDutyKnob->setWhatsThis( tr( "The duty cycle is the ratio of"
" the duration (time) that a signal is ON"
" versus the total period of the signal." ) );
ToolTip::add( m_ch1WavePatternDutyKnob, tr( "Wave pattern duty cycle" ) );
m_ch1VolumeKnob = new FreeBoyKnob( this );
m_ch1VolumeKnob->setHintText( tr( "Square Channel 1 Volume:" )
m_ch1VolumeKnob->setHintText( tr( "Square channel 1 volume:" )
, "" );
m_ch1VolumeKnob->move( 5, 106 );
ToolTip::add( m_ch1VolumeKnob, tr( "Square Channel 1 Volume:" ) );
m_ch1VolumeKnob->setWhatsThis( tr( "Square Channel 1 Volume" ) );
ToolTip::add( m_ch1VolumeKnob, tr( "Square channel 1 volume" ) );
m_ch1SweepStepLengthKnob = new FreeBoyKnob( this );
m_ch1SweepStepLengthKnob->setHintText( tr( "Length of each step in sweep:" )
, "" );
m_ch1SweepStepLengthKnob->move( 5 + 32, 106 );
ToolTip::add( m_ch1SweepStepLengthKnob, tr( "Length of each step in sweep" ) );
m_ch1SweepStepLengthKnob->setWhatsThis( tr( "The delay between step change" ) );
m_ch2WavePatternDutyKnob = new FreeBoyKnob( this );
m_ch2WavePatternDutyKnob->setHintText( tr( "Wave pattern duty:" )
m_ch2WavePatternDutyKnob->setHintText( tr( "Wave pattern duty cycle:" )
, "" );
m_ch2WavePatternDutyKnob->move( 5 + 2*32, 155 );
ToolTip::add( m_ch2WavePatternDutyKnob, tr( "Wave pattern duty" ) );
m_ch2WavePatternDutyKnob->setWhatsThis( tr( "The duty cycle is the ratio of"
" the duration (time) that a signal is ON"
" versus the total period of the signal." ) );
ToolTip::add( m_ch2WavePatternDutyKnob, tr( "Wave pattern duty cycle" ) );
m_ch2VolumeKnob = new FreeBoyKnob( this );
m_ch2VolumeKnob->setHintText( tr( "Square Channel 2 Volume:" )
m_ch2VolumeKnob->setHintText( tr( "Square channel 2 volume:" )
, "" );
m_ch2VolumeKnob->move( 5, 155 );
ToolTip::add( m_ch2VolumeKnob, tr( "Square Channel 2 Volume" ) );
m_ch2VolumeKnob->setWhatsThis( tr( "Square Channel 2 Volume" ) );
ToolTip::add( m_ch2VolumeKnob, tr( "Square channel 2 volume" ) );
m_ch2SweepStepLengthKnob = new FreeBoyKnob( this );
m_ch2SweepStepLengthKnob->setHintText( tr( "Length of each step in sweep:" )
, "" );
m_ch2SweepStepLengthKnob->move( 5 + 32, 155 );
ToolTip::add( m_ch2SweepStepLengthKnob, tr( "Length of each step in sweep" ) );
m_ch2SweepStepLengthKnob->setWhatsThis( tr( "The delay between step change" ) );
m_ch3VolumeKnob = new FreeBoyKnob( this );
m_ch3VolumeKnob->setHintText( tr( "Wave Channel Volume:" ), "" );
m_ch3VolumeKnob->setHintText( tr( "Wave pattern channel volume:" ), "" );
m_ch3VolumeKnob->move( 5, 204 );
ToolTip::add( m_ch3VolumeKnob, tr( "Wave Channel Volume" ) );
m_ch3VolumeKnob->setWhatsThis( tr( "Wave Channel Volume" ) );
ToolTip::add( m_ch3VolumeKnob, tr( "Wave pattern channel volume" ) );
m_ch4VolumeKnob = new FreeBoyKnob( this );
m_ch4VolumeKnob->setHintText( tr( "Noise Channel Volume:" ), "" );
m_ch4VolumeKnob->setHintText( tr( "Noise channel volume:" ), "" );
m_ch4VolumeKnob->move( 144, 155 );
ToolTip::add( m_ch4VolumeKnob, tr( "Noise Channel Volume" ) );
m_ch4VolumeKnob->setWhatsThis( tr( "Noise Channel Volume" ) );
ToolTip::add( m_ch4VolumeKnob, tr( "Noise channel volume" ) );
m_ch4SweepStepLengthKnob = new FreeBoyKnob( this );
m_ch4SweepStepLengthKnob->setHintText( tr( "Length of each step in sweep:" )
, "" );
m_ch4SweepStepLengthKnob->move( 144 + 32, 155 );
ToolTip::add( m_ch4SweepStepLengthKnob, tr( "Length of each step in sweep" ) );
m_ch4SweepStepLengthKnob->setWhatsThis( tr( "The delay between step change" ) );
m_so1VolumeKnob = new FreeBoyKnob( this );
m_so1VolumeKnob->setHintText( tr( "SO1 Volume (Right):" ), "" );
m_so1VolumeKnob->setHintText( tr( "SO1 volume (Right):" ), "" );
m_so1VolumeKnob->move( 5, 58 );
ToolTip::add( m_so1VolumeKnob, tr( "SO1 Volume (Right)" ) );
ToolTip::add( m_so1VolumeKnob, tr( "SO1 volume (Right)" ) );
m_so2VolumeKnob = new FreeBoyKnob( this );
m_so2VolumeKnob->setHintText( tr( "SO2 Volume (Left):" ), "" );
m_so2VolumeKnob->setHintText( tr( "SO2 volume (Left):" ), "" );
m_so2VolumeKnob->move( 5 + 32, 58 );
ToolTip::add( m_so2VolumeKnob, tr( "SO2 Volume (Left)" ) );
ToolTip::add( m_so2VolumeKnob, tr( "SO2 volume (Left)" ) );
m_trebleKnob = new FreeBoyKnob( this );
m_trebleKnob->setHintText( tr( "Treble:" ), "" );
@@ -578,7 +561,7 @@ FreeBoyInstrumentView::FreeBoyInstrumentView( Instrument * _instrument,
PLUGIN_NAME::getIconPixmap( "btn_down" ) );
m_ch1SweepDirButton->setInactiveGraphic(
PLUGIN_NAME::getIconPixmap( "btn_up" ) );
ToolTip::add( m_ch1SweepDirButton, tr( "Sweep Direction" ) );
ToolTip::add( m_ch1SweepDirButton, tr( "Sweep direction" ) );
m_ch1VolSweepDirButton = new PixmapButton( this, NULL );
m_ch1VolSweepDirButton->setCheckable( true );
@@ -587,32 +570,32 @@ FreeBoyInstrumentView::FreeBoyInstrumentView( Instrument * _instrument,
PLUGIN_NAME::getIconPixmap( "btn_up" ) );
m_ch1VolSweepDirButton->setInactiveGraphic(
PLUGIN_NAME::getIconPixmap( "btn_down" ) );
ToolTip::add( m_ch1VolSweepDirButton, tr( "Volume Sweep Direction" ) );
ToolTip::add( m_ch1VolSweepDirButton, tr( "Volume sweep direction" ) );
m_ch2VolSweepDirButton = new PixmapButton( this,
tr( "Volume Sweep Direction" ) );
tr( "Volume sweep direction" ) );
m_ch2VolSweepDirButton->setCheckable( true );
m_ch2VolSweepDirButton->move( 102, 156 );
m_ch2VolSweepDirButton->setActiveGraphic(
PLUGIN_NAME::getIconPixmap( "btn_up" ) );
m_ch2VolSweepDirButton->setInactiveGraphic(
PLUGIN_NAME::getIconPixmap( "btn_down" ) );
ToolTip::add( m_ch2VolSweepDirButton, tr( "Volume Sweep Direction" ) );
ToolTip::add( m_ch2VolSweepDirButton, tr( "Volume sweep direction" ) );
//m_ch3OnButton = new PixmapButton( this, NULL );
//m_ch3OnButton->move( 176, 53 );
m_ch4VolSweepDirButton = new PixmapButton( this,
tr( "Volume Sweep Direction" ) );
tr( "Volume sweep direction" ) );
m_ch4VolSweepDirButton->setCheckable( true );
m_ch4VolSweepDirButton->move( 207, 157 );
m_ch4VolSweepDirButton->setActiveGraphic(
PLUGIN_NAME::getIconPixmap( "btn_up" ) );
m_ch4VolSweepDirButton->setInactiveGraphic(
PLUGIN_NAME::getIconPixmap( "btn_down" ) );
ToolTip::add( m_ch4VolSweepDirButton, tr( "Volume Sweep Direction" ) );
ToolTip::add( m_ch4VolSweepDirButton, tr( "Volume sweep direction" ) );
m_ch4ShiftRegWidthButton = new PixmapButton( this, NULL );
m_ch4ShiftRegWidthButton->setCheckable( true );
@@ -621,7 +604,7 @@ FreeBoyInstrumentView::FreeBoyInstrumentView( Instrument * _instrument,
PLUGIN_NAME::getIconPixmap( "btn_7" ) );
m_ch4ShiftRegWidthButton->setInactiveGraphic(
PLUGIN_NAME::getIconPixmap( "btn_15" ) );
ToolTip::add( m_ch4ShiftRegWidthButton, tr( "Shift Register Width" ) );
ToolTip::add( m_ch4ShiftRegWidthButton, tr( "Shift register width" ) );
@@ -631,21 +614,21 @@ FreeBoyInstrumentView::FreeBoyInstrumentView( Instrument * _instrument,
m_ch1So1Button->move( 208, 51 );
m_ch1So1Button->setActiveGraphic( PLUGIN_NAME::getIconPixmap( "btn_on" ) );
m_ch1So1Button->setInactiveGraphic( PLUGIN_NAME::getIconPixmap("btn_off") );
ToolTip::add( m_ch1So1Button, tr( "Channel1 to SO1 (Right)" ) );
ToolTip::add( m_ch1So1Button, tr( "Channel 1 to SO1 (Right)" ) );
m_ch2So1Button = new PixmapButton( this, NULL );
m_ch2So1Button->setCheckable( true );
m_ch2So1Button->move( 208, 51 + 12 );
m_ch2So1Button->setActiveGraphic( PLUGIN_NAME::getIconPixmap( "btn_on" ) );
m_ch2So1Button->setInactiveGraphic( PLUGIN_NAME::getIconPixmap("btn_off") );
ToolTip::add( m_ch2So1Button, tr( "Channel2 to SO1 (Right)" ) );
ToolTip::add( m_ch2So1Button, tr( "Channel 2 to SO1 (Right)" ) );
m_ch3So1Button = new PixmapButton( this, NULL );
m_ch3So1Button->setCheckable( true );
m_ch3So1Button->move( 208, 51 + 2*12 );
m_ch3So1Button->setActiveGraphic( PLUGIN_NAME::getIconPixmap( "btn_on" ) );
m_ch3So1Button->setInactiveGraphic( PLUGIN_NAME::getIconPixmap("btn_off") );
ToolTip::add( m_ch3So1Button, tr( "Channel3 to SO1 (Right)" ) );
ToolTip::add( m_ch3So1Button, tr( "Channel 3 to SO1 (Right)" ) );
m_ch4So1Button = new PixmapButton( this, NULL );
m_ch4So1Button->setCheckable( true );
@@ -653,28 +636,28 @@ FreeBoyInstrumentView::FreeBoyInstrumentView( Instrument * _instrument,
m_ch4So1Button->move( 208, 51 + 3*12 );
m_ch4So1Button->setActiveGraphic( PLUGIN_NAME::getIconPixmap( "btn_on" ) );
m_ch4So1Button->setInactiveGraphic( PLUGIN_NAME::getIconPixmap("btn_off") );
ToolTip::add( m_ch4So1Button, tr( "Channel4 to SO1 (Right)" ) );
ToolTip::add( m_ch4So1Button, tr( "Channel 4 to SO1 (Right)" ) );
m_ch1So2Button = new PixmapButton( this, NULL );
m_ch1So2Button->setCheckable( true );
m_ch1So2Button->move( 148, 51 );
m_ch1So2Button->setActiveGraphic( PLUGIN_NAME::getIconPixmap( "btn_on" ) );
m_ch1So2Button->setInactiveGraphic( PLUGIN_NAME::getIconPixmap("btn_off") );
ToolTip::add( m_ch1So2Button, tr( "Channel1 to SO2 (Left)" ) );
ToolTip::add( m_ch1So2Button, tr( "Channel 1 to SO2 (Left)" ) );
m_ch2So2Button = new PixmapButton( this, NULL );
m_ch2So2Button->setCheckable( true );
m_ch2So2Button->move( 148, 51 + 12 );
m_ch2So2Button->setActiveGraphic( PLUGIN_NAME::getIconPixmap( "btn_on" ) );
m_ch2So2Button->setInactiveGraphic( PLUGIN_NAME::getIconPixmap("btn_off") );
ToolTip::add( m_ch2So2Button, tr( "Channel2 to SO2 (Left)" ) );
ToolTip::add( m_ch2So2Button, tr( "Channel 2 to SO2 (Left)" ) );
m_ch3So2Button = new PixmapButton( this, NULL );
m_ch3So2Button->setCheckable( true );
m_ch3So2Button->move( 148, 51 + 2*12 );
m_ch3So2Button->setActiveGraphic( PLUGIN_NAME::getIconPixmap( "btn_on" ) );
m_ch3So2Button->setInactiveGraphic( PLUGIN_NAME::getIconPixmap("btn_off") );
ToolTip::add( m_ch3So2Button, tr( "Channel3 to SO2 (Left)" ) );
ToolTip::add( m_ch3So2Button, tr( "Channel 3 to SO2 (Left)" ) );
m_ch4So2Button = new PixmapButton( this, NULL );
m_ch4So2Button->setCheckable( true );
@@ -682,7 +665,7 @@ FreeBoyInstrumentView::FreeBoyInstrumentView( Instrument * _instrument,
m_ch4So2Button->move( 148, 51 + 3*12 );
m_ch4So2Button->setActiveGraphic( PLUGIN_NAME::getIconPixmap( "btn_on" ) );
m_ch4So2Button->setInactiveGraphic( PLUGIN_NAME::getIconPixmap("btn_off") );
ToolTip::add( m_ch4So2Button, tr( "Channel4 to SO2 (Left)" ) );
ToolTip::add( m_ch4So2Button, tr( "Channel 4 to SO2 (Left)" ) );
m_graph = new Graph( this );
@@ -690,8 +673,7 @@ FreeBoyInstrumentView::FreeBoyInstrumentView( Instrument * _instrument,
m_graph->setGraphColor( QColor(0x4E, 0x83, 0x2B) );
m_graph->move( 37, 199 );
m_graph->resize(208, 47);
ToolTip::add( m_graph, tr( "Wave Pattern" ) );
m_graph->setWhatsThis( tr( "Draw the wave here" ) );
ToolTip::add( m_graph, tr( "Wave pattern graph" ) );
}

View File

@@ -938,9 +938,7 @@ GigInstrumentView::GigInstrumentView( Instrument * _instrument, QWidget * _paren
connect( m_fileDialogButton, SIGNAL( clicked() ), this, SLOT( showFileDialog() ) );
ToolTip::add( m_fileDialogButton, tr( "Open other GIG file" ) );
m_fileDialogButton->setWhatsThis( tr( "Click here to open another GIG file" ) );
ToolTip::add( m_fileDialogButton, tr( "Open GIG file" ) );
// Patch Button
m_patchDialogButton = new PixmapButton( this );
@@ -952,9 +950,7 @@ GigInstrumentView::GigInstrumentView( Instrument * _instrument, QWidget * _paren
connect( m_patchDialogButton, SIGNAL( clicked() ), this, SLOT( showPatchDialog() ) );
ToolTip::add( m_patchDialogButton, tr( "Choose the patch" ) );
m_patchDialogButton->setWhatsThis( tr( "Click here to change which patch of the GIG file to use" ) );
ToolTip::add( m_patchDialogButton, tr( "Choose patch" ) );
// LCDs
m_bankNumLcd = new LcdSpinBox( 3, "21pink", this );
@@ -963,23 +959,16 @@ GigInstrumentView::GigInstrumentView( Instrument * _instrument, QWidget * _paren
m_patchNumLcd = new LcdSpinBox( 3, "21pink", this );
m_patchNumLcd->move( 161, 150 );
m_bankNumLcd->setWhatsThis( tr( "Change which instrument of the GIG file is being played" ) );
m_patchNumLcd->setWhatsThis( tr( "Change which instrument of the GIG file is being played" ) );
// Next row
m_filenameLabel = new QLabel( this );
m_filenameLabel->setGeometry( 61, 70, 156, 14 );
m_patchLabel = new QLabel( this );
m_patchLabel->setGeometry( 61, 94, 156, 14 );
m_filenameLabel->setWhatsThis( tr( "Which GIG file is currently being used" ) );
m_patchLabel->setWhatsThis( tr( "Which patch of the GIG file is currently being used" ) );
// Gain
m_gainKnob = new gigKnob( this );
m_gainKnob->setHintText( tr( "Gain" ) + " ", "" );
m_gainKnob->setHintText( tr( "Gain:" ) + " ", "" );
m_gainKnob->move( 32, 140 );
m_gainKnob->setWhatsThis( tr( "Factor to multiply samples by" ) );
setAutoFillBackground( true );
QPalette pal;

View File

@@ -88,17 +88,17 @@ MultitapEchoControlDialog::MultitapEchoControlDialog( MultitapEchoControls * con
dryGain->move( 150, 245 );
dryGain->setModel( & controls->m_dryGain );
dryGain->setLabel( tr( "Dry" ) );
dryGain->setHintText( tr( "Dry Gain:" ) , " dBFS" );
dryGain->setHintText( tr( "Dry gain:" ) , " dBFS" );
Knob * stages = new Knob( knobBright_26, this );
stages->move( 200, 245 );
stages->setModel( & controls->m_stages );
stages->setLabel( tr( "Stages" ) );
stages->setHintText( tr( "Lowpass stages:" ) , "x" );
stages->setHintText( tr( "Low-pass stages:" ) , "x" );
// switch led
LedCheckBox * swapInputs = new LedCheckBox( "Swap inputs", this, tr( "Swap inputs" ), LedCheckBox::Green );
swapInputs->move( 20, 275 );
swapInputs->setModel( & controls->m_swapInputs );
ToolTip::add( swapInputs, tr( "Swap left and right input channel for reflections" ) );
ToolTip::add( swapInputs, tr( "Swap left and right input channels for reflections" ) );
}

View File

@@ -94,45 +94,45 @@ const unsigned int adlib_opadd[OPL2_VOICES] = {0x00, 0x01, 0x02, 0x08, 0x09, 0x0
OpulenzInstrument::OpulenzInstrument( InstrumentTrack * _instrument_track ) :
Instrument( _instrument_track, &opulenz_plugin_descriptor ),
m_patchModel( 0, 0, 127, this, tr( "Patch" ) ),
op1_a_mdl(14.0, 0.0, 15.0, 1.0, this, tr( "Op 1 Attack" ) ),
op1_d_mdl(14.0, 0.0, 15.0, 1.0, this, tr( "Op 1 Decay" ) ),
op1_s_mdl(3.0, 0.0, 15.0, 1.0, this, tr( "Op 1 Sustain" ) ),
op1_r_mdl(10.0, 0.0, 15.0, 1.0, this, tr( "Op 1 Release" ) ),
op1_lvl_mdl(62.0, 0.0, 63.0, 1.0, this, tr( "Op 1 Level" ) ),
op1_scale_mdl(0.0, 0.0, 3.0, 1.0, this, tr( "Op 1 Level Scaling" ) ),
op1_mul_mdl(0.0, 0.0, 15.0, 1.0, this, tr( "Op 1 Frequency Multiple" ) ),
feedback_mdl(0.0, 0.0, 7.0, 1.0, this, tr( "Op 1 Feedback" ) ),
op1_ksr_mdl(false, this, tr( "Op 1 Key Scaling Rate" ) ),
op1_perc_mdl(false, this, tr( "Op 1 Percussive Envelope" ) ),
op1_trem_mdl(true, this, tr( "Op 1 Tremolo" ) ),
op1_vib_mdl(false, this, tr( "Op 1 Vibrato" ) ),
op1_a_mdl(14.0, 0.0, 15.0, 1.0, this, tr( "Op 1 attack" ) ),
op1_d_mdl(14.0, 0.0, 15.0, 1.0, this, tr( "Op 1 decay" ) ),
op1_s_mdl(3.0, 0.0, 15.0, 1.0, this, tr( "Op 1 sustain" ) ),
op1_r_mdl(10.0, 0.0, 15.0, 1.0, this, tr( "Op 1 release" ) ),
op1_lvl_mdl(62.0, 0.0, 63.0, 1.0, this, tr( "Op 1 level" ) ),
op1_scale_mdl(0.0, 0.0, 3.0, 1.0, this, tr( "Op 1 level scaling" ) ),
op1_mul_mdl(0.0, 0.0, 15.0, 1.0, this, tr( "Op 1 frequency multiplier" ) ),
feedback_mdl(0.0, 0.0, 7.0, 1.0, this, tr( "Op 1 feedback" ) ),
op1_ksr_mdl(false, this, tr( "Op 1 key scaling rate" ) ),
op1_perc_mdl(false, this, tr( "Op 1 percussive envelope" ) ),
op1_trem_mdl(true, this, tr( "Op 1 tremolo" ) ),
op1_vib_mdl(false, this, tr( "Op 1 vibrato" ) ),
op1_w0_mdl( ),
op1_w1_mdl( ),
op1_w2_mdl( ),
op1_w3_mdl( ),
op1_waveform_mdl(0,0,3,this, tr( "Op 1 Waveform" ) ),
op1_waveform_mdl(0,0,3,this, tr( "Op 1 waveform" ) ),
op2_a_mdl(1.0, 0.0, 15.0, 1.0, this, tr( "Op 2 Attack" ) ),
op2_d_mdl(3.0, 0.0, 15.0, 1.0, this, tr( "Op 2 Decay" ) ),
op2_s_mdl(14.0, 0.0, 15.0, 1.0, this, tr( "Op 2 Sustain" ) ),
op2_r_mdl(12.0, 0.0, 15.0, 1.0, this, tr( "Op 2 Release" ) ),
op2_lvl_mdl(63.0, 0.0, 63.0, 1.0, this, tr( "Op 2 Level" ) ),
op2_scale_mdl(0.0, 0.0, 3.0, 1.0, this, tr( "Op 2 Level Scaling" ) ),
op2_mul_mdl(1.0, 0.0, 15.0, 1.0, this, tr( "Op 2 Frequency Multiple" ) ),
op2_ksr_mdl(false, this, tr( "Op 2 Key Scaling Rate" ) ),
op2_perc_mdl(false, this, tr( "Op 2 Percussive Envelope" ) ),
op2_trem_mdl(false, this, tr( "Op 2 Tremolo" ) ),
op2_vib_mdl(true, this, tr( "Op 2 Vibrato" ) ),
op2_a_mdl(1.0, 0.0, 15.0, 1.0, this, tr( "Op 2 attack" ) ),
op2_d_mdl(3.0, 0.0, 15.0, 1.0, this, tr( "Op 2 decay" ) ),
op2_s_mdl(14.0, 0.0, 15.0, 1.0, this, tr( "Op 2 sustain" ) ),
op2_r_mdl(12.0, 0.0, 15.0, 1.0, this, tr( "Op 2 release" ) ),
op2_lvl_mdl(63.0, 0.0, 63.0, 1.0, this, tr( "Op 2 level" ) ),
op2_scale_mdl(0.0, 0.0, 3.0, 1.0, this, tr( "Op 2 level scaling" ) ),
op2_mul_mdl(1.0, 0.0, 15.0, 1.0, this, tr( "Op 2 frequency multiplier" ) ),
op2_ksr_mdl(false, this, tr( "Op 2 key scaling rate" ) ),
op2_perc_mdl(false, this, tr( "Op 2 percussive envelope" ) ),
op2_trem_mdl(false, this, tr( "Op 2 tremolo" ) ),
op2_vib_mdl(true, this, tr( "Op 2 vibrato" ) ),
op2_w0_mdl( ),
op2_w1_mdl( ),
op2_w2_mdl( ),
op2_w3_mdl( ),
op2_waveform_mdl(0,0,3,this, tr( "Op 2 Waveform" ) ),
op2_waveform_mdl(0,0,3,this, tr( "Op 2 waveform" ) ),
fm_mdl(true, this, tr( "FM" ) ),
vib_depth_mdl(false, this, tr( "Vibrato Depth" ) ),
trem_depth_mdl(false, this, tr( "Tremolo Depth" ) )
vib_depth_mdl(false, this, tr( "Vibrato depth" ) ),
trem_depth_mdl(false, this, tr( "Tremolo depth" ) )
{
// Create an emulator - samplerate, 16 bit, mono

View File

@@ -41,7 +41,7 @@ ReverbSCControlDialog::ReverbSCControlDialog( ReverbSCControls* controls ) :
inputGainKnob -> move( 16, 10 );
inputGainKnob->setModel( &controls->m_inputGainModel );
inputGainKnob->setLabel( tr( "Input" ) );
inputGainKnob->setHintText( tr( "Input Gain:" ) , "dB" );
inputGainKnob->setHintText( tr( "Input gain:" ) , "dB" );
Knob * sizeKnob = new Knob( knobBright_26, this);
sizeKnob -> move( 57, 10 );
@@ -59,5 +59,5 @@ ReverbSCControlDialog::ReverbSCControlDialog( ReverbSCControls* controls ) :
outputGainKnob -> move( 139, 10 );
outputGainKnob->setModel( &controls->m_outputGainModel );
outputGainKnob->setLabel( tr( "Output" ) );
outputGainKnob->setHintText( tr( "Output Gain:" ) , "dB" );
outputGainKnob->setHintText( tr( "Output gain:" ) , "dB" );
}

View File

@@ -33,10 +33,10 @@
ReverbSCControls::ReverbSCControls( ReverbSCEffect* effect ) :
EffectControls( effect ),
m_effect( effect ),
m_inputGainModel( 0.0f, -60.0f, 15, 0.1f, this, tr( "Input Gain" ) ),
m_inputGainModel( 0.0f, -60.0f, 15, 0.1f, this, tr( "Input gain" ) ),
m_sizeModel( 0.89f, 0.0f, 1.0f, 0.01f, this, tr( "Size" ) ),
m_colorModel( 10000.0f, 100.0f, 15000.0f, 0.1f, this, tr( "Color" ) ),
m_outputGainModel( 0.0f, -60.0f, 15, 0.1f, this, tr( "Output Gain" ) )
m_outputGainModel( 0.0f, -60.0f, 15, 0.1f, this, tr( "Output gain" ) )
{
connect( Engine::mixer(), SIGNAL( sampleRateChanged() ), this, SLOT( changeSampleRate() ));
}

View File

@@ -105,10 +105,7 @@ VstEffectControlDialog::VstEffectControlDialog( VstEffectControls * _ctl ) :
"controls" ) );
connect( m_managePluginButton, SIGNAL( clicked() ), _ctl,
SLOT( managePlugin() ) );
ToolTip::add( m_managePluginButton, tr( "Control VST-plugin from LMMS host" ) );
m_managePluginButton->setWhatsThis(
tr( "Click here, if you want to control VST-plugin from host." ) );
ToolTip::add( m_managePluginButton, tr( "Control VST plugin from LMMS host" ) );
m_managePluginButton->setMinimumWidth( 26 );
m_managePluginButton->setMaximumWidth( 26 );
@@ -124,10 +121,7 @@ VstEffectControlDialog::VstEffectControlDialog( VstEffectControls * _ctl ) :
"project_open" ) );
connect( m_openPresetButton, SIGNAL( clicked() ), _ctl,
SLOT( openPreset() ) );
ToolTip::add( m_openPresetButton, tr( "Open VST-plugin preset" ) );
m_openPresetButton->setWhatsThis(
tr( "Click here, if you want to open another *.fxp, *.fxb VST-plugin preset." ) );
ToolTip::add( m_openPresetButton, tr( "Open VST plugin preset" ) );
m_openPresetButton->setMinimumWidth( 16 );
m_openPresetButton->setMaximumWidth( 16 );
@@ -151,9 +145,6 @@ VstEffectControlDialog::VstEffectControlDialog( VstEffectControls * _ctl ) :
m_rolLPresetButton->setShortcut( Qt::Key_Minus );
m_rolLPresetButton->setWhatsThis(
tr( "Click here, if you want to switch to another VST-plugin preset program." ) );
m_rolLPresetButton->setMinimumWidth( 16 );
m_rolLPresetButton->setMaximumWidth( 16 );
m_rolLPresetButton->setMinimumHeight( 16 );
@@ -176,9 +167,6 @@ VstEffectControlDialog::VstEffectControlDialog( VstEffectControls * _ctl ) :
m_rolRPresetButton->setShortcut( Qt::Key_Plus );
m_rolRPresetButton->setWhatsThis(
tr( "Click here, if you want to switch to another VST-plugin preset program." ) );
m_rolRPresetButton->setMinimumWidth( 16 );
m_rolRPresetButton->setMaximumWidth( 16 );
m_rolRPresetButton->setMinimumHeight( 16 );
@@ -189,8 +177,6 @@ VstEffectControlDialog::VstEffectControlDialog( VstEffectControls * _ctl ) :
_ctl->m_selPresetButton->setCheckable( false );
_ctl->m_selPresetButton->setCursor( Qt::PointingHandCursor );
_ctl->m_selPresetButton->setIcon( embed::getIconPixmap( "stepper-down" ) );
_ctl->m_selPresetButton->setWhatsThis(
tr( "Click here to select presets that are currently loaded in VST." ) );
QMenu * menu = new QMenu;
connect( menu, SIGNAL( aboutToShow() ), _ctl, SLOT( updateMenu() ) );
@@ -213,9 +199,6 @@ VstEffectControlDialog::VstEffectControlDialog( VstEffectControls * _ctl ) :
SLOT( savePreset() ) );
ToolTip::add( m_savePresetButton, tr( "Save preset" ) );
m_savePresetButton->setWhatsThis(
tr( "Click here, if you want to save current VST-plugin preset program." ) );
m_savePresetButton->setMinimumWidth( 21 );
m_savePresetButton->setMaximumWidth( 21 );
m_savePresetButton->setMinimumHeight( 21 );

View File

@@ -313,19 +313,15 @@ manageVSTEffectView::manageVSTEffectView( VstEffect * _eff, VstEffectControls *
l->setVerticalSpacing( 10 );
l->setHorizontalSpacing( 23 );
m_syncButton = new QPushButton( tr( "VST Sync" ), widget );
m_syncButton = new QPushButton( tr( "VST sync" ), widget );
connect( m_syncButton, SIGNAL( clicked() ), this,
SLOT( syncPlugin() ) );
m_syncButton->setWhatsThis(
tr( "Click here if you want to synchronize all parameters with VST plugin." ) );
l->addWidget( m_syncButton, 0, 0, 1, 2, Qt::AlignLeft );
m_displayAutomatedOnly = new QPushButton( tr( "Automated" ), widget );
connect( m_displayAutomatedOnly, SIGNAL( clicked() ), this,
SLOT( displayAutomatedOnly() ) );
m_displayAutomatedOnly->setWhatsThis(
tr( "Click here if you want to display automated parameters only." ) );
l->addWidget( m_displayAutomatedOnly, 0, 1, 1, 2, Qt::AlignLeft );
@@ -333,8 +329,6 @@ manageVSTEffectView::manageVSTEffectView( VstEffect * _eff, VstEffectControls *
m_closeButton = new QPushButton( tr( " Close " ), widget );
connect( m_closeButton, SIGNAL( clicked() ), this,
SLOT( closeWindow() ) );
m_closeButton->setWhatsThis(
tr( "Close VST effect knob-controller window." ) );
l->addWidget( m_closeButton, 0, 2, 1, 7, Qt::AlignLeft );

View File

@@ -95,9 +95,9 @@ Xpressive::Xpressive(InstrumentTrack* instrument_track) :
m_interpolateW1(false, this),
m_interpolateW2(false, this),
m_interpolateW3(false, this),
m_panning1( 1, -1.0f, 1.0f, 0.01f, this, tr("PAN1")),
m_panning2(-1, -1.0f, 1.0f, 0.01f, this, tr("PAN2")),
m_relTransition(50.0f, 0.0f, 500.0f, 1.0f, this, tr("REL TRANS")),
m_panning1( 1, -1.0f, 1.0f, 0.01f, this, tr("Panning 1")),
m_panning2(-1, -1.0f, 1.0f, 0.01f, this, tr("Panning 2")),
m_relTransition(50.0f, 0.0f, 500.0f, 1.0f, this, tr("Rel trans")),
m_W1(GRAPH_LENGTH),
m_W2(GRAPH_LENGTH),
m_W3(GRAPH_LENGTH),
@@ -296,8 +296,8 @@ XpressiveView::XpressiveView(Instrument * _instrument, QWidget * _parent) :
m_graph->setGraphColor(QColor(255, 255, 255));
m_graph->setEnabled(false);
/*ToolTip::add(m_graph, tr("Draw your own waveform here "
"by dragging your mouse on this graph."));*/
ToolTip::add(m_graph, tr("Draw your own waveform here "
"by dragging your mouse on this graph."));
pal = QPalette();
pal.setBrush(backgroundRole(), PLUGIN_NAME::getIconPixmap("wavegraph"));
@@ -332,13 +332,13 @@ XpressiveView::XpressiveView(Instrument * _instrument, QWidget * _parent) :
m_o1Btn->move(85, 111);
m_o1Btn->setActiveGraphic(PLUGIN_NAME::getIconPixmap("o1_active"));
m_o1Btn->setInactiveGraphic(PLUGIN_NAME::getIconPixmap("o1_inactive"));
ToolTip::add(m_o1Btn, tr("Select OUTPUT 1"));
ToolTip::add(m_o1Btn, tr("Select output O1"));
m_o2Btn = new PixmapButton(this, NULL);
m_o2Btn->move(107, 111);
m_o2Btn->setActiveGraphic(PLUGIN_NAME::getIconPixmap("o2_active"));
m_o2Btn->setInactiveGraphic(PLUGIN_NAME::getIconPixmap("o2_inactive"));
ToolTip::add(m_o2Btn, tr("Select OUTPUT 2"));
ToolTip::add(m_o2Btn, tr("Select output O2"));
m_helpBtn = new PixmapButton(this, NULL);
m_helpBtn->move(139, 111);
@@ -360,32 +360,32 @@ XpressiveView::XpressiveView(Instrument * _instrument, QWidget * _parent) :
m_sinWaveBtn->move(10, ROW_WAVEBTN);
m_sinWaveBtn->setActiveGraphic(embed::getIconPixmap("sin_wave_active"));
m_sinWaveBtn->setInactiveGraphic(embed::getIconPixmap("sin_wave_inactive"));
ToolTip::add(m_sinWaveBtn, tr("Click for a sine-wave."));
ToolTip::add(m_sinWaveBtn, tr("Sine wave"));
m_moogWaveBtn = new PixmapButton(this, tr("Moog-Saw wave"));
m_moogWaveBtn = new PixmapButton(this, tr("Moog-saw wave"));
m_moogWaveBtn->move(10, ROW_WAVEBTN-14);
m_moogWaveBtn->setActiveGraphic(
embed::getIconPixmap( "moog_saw_wave_active" ) );
m_moogWaveBtn->setInactiveGraphic(embed::getIconPixmap("moog_saw_wave_inactive"));
ToolTip::add(m_moogWaveBtn, tr("Click for a Moog-Saw-wave."));
ToolTip::add(m_moogWaveBtn, tr("Moog-saw wave"));
m_expWaveBtn = new PixmapButton(this, tr("Exponential wave"));
m_expWaveBtn->move(10 +14, ROW_WAVEBTN-14);
m_expWaveBtn->setActiveGraphic(embed::getIconPixmap( "exp_wave_active" ) );
m_expWaveBtn->setInactiveGraphic(embed::getIconPixmap( "exp_wave_inactive" ) );
ToolTip::add(m_expWaveBtn, tr("Click for an exponential wave."));
ToolTip::add(m_expWaveBtn, tr("Exponential wave"));
m_sawWaveBtn = new PixmapButton(this, tr("Saw wave"));
m_sawWaveBtn->move(10 + 14 * 2, ROW_WAVEBTN-14);
m_sawWaveBtn->setActiveGraphic(embed::getIconPixmap("saw_wave_active"));
m_sawWaveBtn->setInactiveGraphic(embed::getIconPixmap("saw_wave_inactive"));
ToolTip::add(m_sawWaveBtn, tr("Click here for a saw-wave."));
ToolTip::add(m_sawWaveBtn, tr("Saw wave"));
m_usrWaveBtn = new PixmapButton(this, tr("User defined wave"));
m_usrWaveBtn = new PixmapButton(this, tr("User-defined wave"));
m_usrWaveBtn->move(10 + 14 * 3, ROW_WAVEBTN-14);
m_usrWaveBtn->setActiveGraphic(embed::getIconPixmap("usr_wave_active"));
m_usrWaveBtn->setInactiveGraphic(embed::getIconPixmap("usr_wave_inactive"));
ToolTip::add(m_usrWaveBtn, tr("Click here for a user-defined shape."));
ToolTip::add(m_usrWaveBtn, tr("User-defined wave"));
m_triangleWaveBtn = new PixmapButton(this, tr("Triangle wave"));
m_triangleWaveBtn->move(10 + 14, ROW_WAVEBTN);
@@ -393,22 +393,22 @@ XpressiveView::XpressiveView(Instrument * _instrument, QWidget * _parent) :
embed::getIconPixmap("triangle_wave_active"));
m_triangleWaveBtn->setInactiveGraphic(
embed::getIconPixmap("triangle_wave_inactive"));
ToolTip::add(m_triangleWaveBtn, tr("Click here for a triangle-wave."));
ToolTip::add(m_triangleWaveBtn, tr("Triangle wave"));
m_sqrWaveBtn = new PixmapButton(this, tr("Square wave"));
m_sqrWaveBtn->move(10 + 14 * 2, ROW_WAVEBTN);
m_sqrWaveBtn->setActiveGraphic(embed::getIconPixmap("square_wave_active"));
m_sqrWaveBtn->setInactiveGraphic(
embed::getIconPixmap("square_wave_inactive"));
ToolTip::add(m_sqrWaveBtn, tr("Click here for a square-wave."));
ToolTip::add(m_sqrWaveBtn, tr("Square wave"));
m_whiteNoiseWaveBtn = new PixmapButton(this, tr("White noise wave"));
m_whiteNoiseWaveBtn = new PixmapButton(this, tr("White noise"));
m_whiteNoiseWaveBtn->move(10 + 14 * 3, ROW_WAVEBTN);
m_whiteNoiseWaveBtn->setActiveGraphic(
embed::getIconPixmap("white_noise_wave_active"));
m_whiteNoiseWaveBtn->setInactiveGraphic(
embed::getIconPixmap("white_noise_wave_inactive"));
ToolTip::add(m_whiteNoiseWaveBtn, tr("Click here for white-noise."));
ToolTip::add(m_whiteNoiseWaveBtn, tr("White noise"));
m_waveInterpolate = new LedCheckBox("Interpolate", this, tr("WaveInterpolate"),

View File

@@ -466,14 +466,7 @@ AudioFileProcessorView::AudioFileProcessorView( Instrument * _instrument,
"select_file" ) );
connect( m_openAudioFileButton, SIGNAL( clicked() ),
this, SLOT( openAudioFile() ) );
ToolTip::add( m_openAudioFileButton, tr( "Open other sample" ) );
m_openAudioFileButton->setWhatsThis(
tr( "Click here, if you want to open another audio-file. "
"A dialog will appear where you can select your file. "
"Settings like looping-mode, start and end-points, "
"amplify-value, and so on are not reset. So, it may not "
"sound like the original sample.") );
ToolTip::add( m_openAudioFileButton, tr( "Open sample" ) );
m_reverseButton = new PixmapButton( this );
m_reverseButton->setCheckable( true );
@@ -483,10 +476,6 @@ AudioFileProcessorView::AudioFileProcessorView( Instrument * _instrument,
m_reverseButton->setInactiveGraphic( PLUGIN_NAME::getIconPixmap(
"reverse_off" ) );
ToolTip::add( m_reverseButton, tr( "Reverse sample" ) );
m_reverseButton->setWhatsThis(
tr( "If you enable this button, the whole sample is reversed. "
"This is useful for cool effects, e.g. a reversed "
"crash." ) );
// loop button group
@@ -498,9 +487,6 @@ AudioFileProcessorView::AudioFileProcessorView( Instrument * _instrument,
m_loopOffButton->setInactiveGraphic( PLUGIN_NAME::getIconPixmap(
"loop_off_off" ) );
ToolTip::add( m_loopOffButton, tr( "Disable loop" ) );
m_loopOffButton->setWhatsThis(
tr( "This button disables looping. "
"The sample plays only once from start to end. " ) );
PixmapButton * m_loopOnButton = new PixmapButton( this );
@@ -511,9 +497,6 @@ AudioFileProcessorView::AudioFileProcessorView( Instrument * _instrument,
m_loopOnButton->setInactiveGraphic( PLUGIN_NAME::getIconPixmap(
"loop_on_off" ) );
ToolTip::add( m_loopOnButton, tr( "Enable loop" ) );
m_loopOnButton->setWhatsThis(
tr( "This button enables forwards-looping. "
"The sample loops between the end point and the loop point." ) );
PixmapButton * m_loopPingPongButton = new PixmapButton( this );
m_loopPingPongButton->setCheckable( true );
@@ -523,10 +506,6 @@ AudioFileProcessorView::AudioFileProcessorView( Instrument * _instrument,
m_loopPingPongButton->setInactiveGraphic( PLUGIN_NAME::getIconPixmap(
"loop_pingpong_off" ) );
ToolTip::add( m_loopPingPongButton, tr( "Enable loop" ) );
m_loopPingPongButton->setWhatsThis(
tr( "This button enables ping-pong-looping. "
"The sample loops backwards and forwards between the end point "
"and the loop point." ) );
m_loopGroup = new automatableButtonGroup( this );
m_loopGroup->addButton( m_loopOffButton );
@@ -542,44 +521,23 @@ AudioFileProcessorView::AudioFileProcessorView( Instrument * _instrument,
"stutter_off" ) );
ToolTip::add( m_stutterButton,
tr( "Continue sample playback across notes" ) );
m_stutterButton->setWhatsThis(
tr( "Enabling this option makes the sample continue playing "
"across different notes - if you change pitch, or the note "
"length stops before the end of the sample, then the next "
"note played will continue where it left off. To reset the "
"playback to the start of the sample, insert a note at the bottom "
"of the keyboard (< 20 Hz)") );
m_ampKnob = new Knob( knobBright_26, this );
m_ampKnob->setVolumeKnob( true );
m_ampKnob->move( 5, 108 );
m_ampKnob->setHintText( tr( "Amplify:" ), "%" );
m_ampKnob->setWhatsThis(
tr( "With this knob you can set the amplify ratio. When you "
"set a value of 100% your sample isn't changed. "
"Otherwise it will be amplified up or down (your "
"actual sample-file isn't touched!)" ) );
m_startKnob = new AudioFileProcessorWaveView::knob( this );
m_startKnob->move( 45, 108 );
m_startKnob->setHintText( tr( "Startpoint:" ), "" );
m_startKnob->setWhatsThis(
tr( "With this knob you can set the point where "
"AudioFileProcessor should begin playing your sample. " ) );
m_startKnob->setHintText( tr( "Start point:" ), "" );
m_endKnob = new AudioFileProcessorWaveView::knob( this );
m_endKnob->move( 125, 108 );
m_endKnob->setHintText( tr( "Endpoint:" ), "" );
m_endKnob->setWhatsThis(
tr( "With this knob you can set the point where "
"AudioFileProcessor should stop playing your sample. " ) );
m_endKnob->setHintText( tr( "End point:" ), "" );
m_loopKnob = new AudioFileProcessorWaveView::knob( this );
m_loopKnob->move( 85, 108 );
m_loopKnob->setHintText( tr( "Loopback point:" ), "" );
m_loopKnob->setWhatsThis(
tr( "With this knob you can set the point where "
"the loop starts. " ) );
// interpolation selector
m_interpBox = new ComboBox( this );

View File

@@ -138,7 +138,7 @@ sample_t bSynth::nextStringSample()
bitInvader::bitInvader( InstrumentTrack * _instrument_track ) :
Instrument( _instrument_track, &bitinvader_plugin_descriptor ),
m_sampleLength( 128, 4, 200, 1, this, tr( "Samplelength" ) ),
m_sampleLength( 128, 4, 200, 1, this, tr( "Sample length" ) ),
m_graph( -1.0f, 1.0f, 128, this ),
m_interpolation( false, this ),
m_normalize( false, this )
@@ -336,7 +336,7 @@ bitInvaderView::bitInvaderView( Instrument * _instrument,
m_sampleLengthKnob = new Knob( knobDark_28, this );
m_sampleLengthKnob->move( 6, 201 );
m_sampleLengthKnob->setHintText( tr( "Sample Length" ), "" );
m_sampleLengthKnob->setHintText( tr( "Sample length" ), "" );
m_graph = new Graph( this, Graph::NearestStyle, 204, 134 );
m_graph->move(23,59); // 55,120 - 2px border
@@ -361,7 +361,7 @@ bitInvaderView::bitInvaderView( Instrument * _instrument,
m_sinWaveBtn->setInactiveGraphic( embed::getIconPixmap(
"sin_wave_inactive" ) );
ToolTip::add( m_sinWaveBtn,
tr( "Click for a sine-wave." ) );
tr( "Sine wave" ) );
m_triangleWaveBtn = new PixmapButton( this, tr( "Triangle wave" ) );
m_triangleWaveBtn->move( 131 + 14, 205 );
@@ -370,7 +370,7 @@ bitInvaderView::bitInvaderView( Instrument * _instrument,
m_triangleWaveBtn->setInactiveGraphic(
embed::getIconPixmap( "triangle_wave_inactive" ) );
ToolTip::add( m_triangleWaveBtn,
tr( "Click here for a triangle-wave." ) );
tr( "Triangle wave" ) );
m_sawWaveBtn = new PixmapButton( this, tr( "Saw wave" ) );
m_sawWaveBtn->move( 131 + 14*2, 205 );
@@ -379,7 +379,7 @@ bitInvaderView::bitInvaderView( Instrument * _instrument,
m_sawWaveBtn->setInactiveGraphic( embed::getIconPixmap(
"saw_wave_inactive" ) );
ToolTip::add( m_sawWaveBtn,
tr( "Click here for a saw-wave." ) );
tr( "Saw wave" ) );
m_sqrWaveBtn = new PixmapButton( this, tr( "Square wave" ) );
m_sqrWaveBtn->move( 131 + 14*3, 205 );
@@ -388,35 +388,35 @@ bitInvaderView::bitInvaderView( Instrument * _instrument,
m_sqrWaveBtn->setInactiveGraphic( embed::getIconPixmap(
"square_wave_inactive" ) );
ToolTip::add( m_sqrWaveBtn,
tr( "Click here for a square-wave." ) );
tr( "Square wave" ) );
m_whiteNoiseWaveBtn = new PixmapButton( this,
tr( "White noise wave" ) );
tr( "White noise" ) );
m_whiteNoiseWaveBtn->move( 131 + 14*4, 205 );
m_whiteNoiseWaveBtn->setActiveGraphic(
embed::getIconPixmap( "white_noise_wave_active" ) );
m_whiteNoiseWaveBtn->setInactiveGraphic(
embed::getIconPixmap( "white_noise_wave_inactive" ) );
ToolTip::add( m_whiteNoiseWaveBtn,
tr( "Click here for white-noise." ) );
tr( "White noise" ) );
m_usrWaveBtn = new PixmapButton( this, tr( "User defined wave" ) );
m_usrWaveBtn = new PixmapButton( this, tr( "User-defined wave" ) );
m_usrWaveBtn->move( 131 + 14*5, 205 );
m_usrWaveBtn->setActiveGraphic( embed::getIconPixmap(
"usr_wave_active" ) );
m_usrWaveBtn->setInactiveGraphic( embed::getIconPixmap(
"usr_wave_inactive" ) );
ToolTip::add( m_usrWaveBtn,
tr( "Click here for a user-defined shape." ) );
tr( "User-defined wave" ) );
m_smoothBtn = new PixmapButton( this, tr( "Smooth" ) );
m_smoothBtn = new PixmapButton( this, tr( "Smooth waveform" ) );
m_smoothBtn->move( 131 + 14*6, 205 );
m_smoothBtn->setActiveGraphic( PLUGIN_NAME::getIconPixmap(
"smooth_active" ) );
m_smoothBtn->setInactiveGraphic( PLUGIN_NAME::getIconPixmap(
"smooth_inactive" ) );
ToolTip::add( m_smoothBtn,
tr( "Click here to smooth waveform." ) );
tr( "Smooth waveform" ) );
m_interpolationToggle = new LedCheckBox( "Interpolation", this,

View File

@@ -492,9 +492,6 @@ CarlaInstrumentView::CarlaInstrumentView(CarlaInstrument* const instrument, QWid
m_toggleUIButton->setFont( pointSize<8>( m_toggleUIButton->font() ) );
connect( m_toggleUIButton, SIGNAL( clicked(bool) ), this, SLOT( toggleUI( bool ) ) );
m_toggleUIButton->setWhatsThis(
tr( "Click here to show or hide the graphical user interface (GUI) of Carla." ) );
l->addWidget( m_toggleUIButton );
l->addStretch();

View File

@@ -85,52 +85,52 @@ dynProcControlDialog::dynProcControlDialog(
releaseKnob->setLabel( tr( "RELEASE" ) );
releaseKnob->setHintText( tr( "Peak release time:" ) , "ms" );
//waveform control buttons
//wavegraph control buttons
PixmapButton * resetButton = new PixmapButton( this, tr("Reset waveform") );
PixmapButton * resetButton = new PixmapButton( this, tr("Reset wavegraph") );
resetButton -> move( 162, 223 );
resetButton -> resize( 13, 48 );
resetButton -> setActiveGraphic( PLUGIN_NAME::getIconPixmap( "reset_active" ) );
resetButton -> setInactiveGraphic( PLUGIN_NAME::getIconPixmap( "reset_inactive" ) );
ToolTip::add( resetButton, tr( "Click here to reset the wavegraph back to default" ) );
ToolTip::add( resetButton, tr( "Reset wavegraph" ) );
PixmapButton * smoothButton = new PixmapButton( this, tr("Smooth waveform") );
PixmapButton * smoothButton = new PixmapButton( this, tr("Smooth wavegraph") );
smoothButton -> move( 162, 239 );
smoothButton -> resize( 13, 48 );
smoothButton -> setActiveGraphic( PLUGIN_NAME::getIconPixmap( "smooth_active" ) );
smoothButton -> setInactiveGraphic( PLUGIN_NAME::getIconPixmap( "smooth_inactive" ) );
ToolTip::add( smoothButton, tr( "Click here to apply smoothing to wavegraph" ) );
ToolTip::add( smoothButton, tr( "Smooth wavegraph" ) );
PixmapButton * addOneButton = new PixmapButton( this, tr("Increase wavegraph amplitude by 1dB") );
PixmapButton * addOneButton = new PixmapButton( this, tr("Increase wavegraph amplitude by 1 dB") );
addOneButton -> move( 131, 223 );
addOneButton -> resize( 13, 29 );
addOneButton -> setActiveGraphic( PLUGIN_NAME::getIconPixmap( "add1_active" ) );
addOneButton -> setInactiveGraphic( PLUGIN_NAME::getIconPixmap( "add1_inactive" ) );
ToolTip::add( addOneButton, tr( "Click here to increase wavegraph amplitude by 1dB" ) );
ToolTip::add( addOneButton, tr( "Increase wavegraph amplitude by 1 dB" ) );
PixmapButton * subOneButton = new PixmapButton( this, tr("Decrease wavegraph amplitude by 1dB") );
PixmapButton * subOneButton = new PixmapButton( this, tr("Decrease wavegraph amplitude by 1 dB") );
subOneButton -> move( 131, 239 );
subOneButton -> resize( 13, 29 );
subOneButton -> setActiveGraphic( PLUGIN_NAME::getIconPixmap( "sub1_active" ) );
subOneButton -> setInactiveGraphic( PLUGIN_NAME::getIconPixmap( "sub1_inactive" ) );
ToolTip::add( subOneButton, tr( "Click here to decrease wavegraph amplitude by 1dB" ) );
ToolTip::add( subOneButton, tr( "Decrease wavegraph amplitude by 1 dB" ) );
//stereomode switches
PixmapButton * smMaxButton = new PixmapButton( this, tr( "Stereomode Maximum" ) );
PixmapButton * smMaxButton = new PixmapButton( this, tr( "Stereo mode: maximum" ) );
smMaxButton -> move( 131, 257 );
smMaxButton -> resize( 78, 17 );
smMaxButton -> setActiveGraphic( PLUGIN_NAME::getIconPixmap( "max_active" ) );
smMaxButton -> setInactiveGraphic( PLUGIN_NAME::getIconPixmap( "max_inactive" ) );
ToolTip::add( smMaxButton, tr( "Process based on the maximum of both stereo channels" ) );
PixmapButton * smAvgButton = new PixmapButton( this, tr( "Stereomode Average" ) );
PixmapButton * smAvgButton = new PixmapButton( this, tr( "Stereo mode: average" ) );
smAvgButton -> move( 131, 274 );
smAvgButton -> resize( 78, 16 );
smAvgButton -> setActiveGraphic( PLUGIN_NAME::getIconPixmap( "avg_active" ) );
smAvgButton -> setInactiveGraphic( PLUGIN_NAME::getIconPixmap( "avg_inactive" ) );
ToolTip::add( smAvgButton, tr( "Process based on the average of both stereo channels" ) );
PixmapButton * smUnlButton = new PixmapButton( this, tr( "Stereomode Unlinked" ) );
PixmapButton * smUnlButton = new PixmapButton( this, tr( "Stereo mode: unlinked" ) );
smUnlButton -> move( 131, 290 );
smUnlButton -> resize( 78, 17 );
smUnlButton -> setActiveGraphic( PLUGIN_NAME::getIconPixmap( "unl_active" ) );

View File

@@ -63,13 +63,13 @@ kickerInstrument::kickerInstrument( InstrumentTrack * _instrument_track ) :
m_startFreqModel( 150.0f, 5.0f, 1000.0f, 1.0f, this, tr( "Start frequency" ) ),
m_endFreqModel( 40.0f, 5.0f, 1000.0f, 1.0f, this, tr( "End frequency" ) ),
m_decayModel( 440.0f, 5.0f, 5000.0f, 1.0f, 5000.0f, this, tr( "Length" ) ),
m_distModel( 0.8f, 0.0f, 100.0f, 0.1f, this, tr( "Distortion Start" ) ),
m_distEndModel( 0.8f, 0.0f, 100.0f, 0.1f, this, tr( "Distortion End" ) ),
m_distModel( 0.8f, 0.0f, 100.0f, 0.1f, this, tr( "Start distortion" ) ),
m_distEndModel( 0.8f, 0.0f, 100.0f, 0.1f, this, tr( "End distortion" ) ),
m_gainModel( 1.0f, 0.1f, 5.0f, 0.05f, this, tr( "Gain" ) ),
m_envModel( 0.163f, 0.01f, 1.0f, 0.001f, this, tr( "Envelope Slope" ) ),
m_envModel( 0.163f, 0.01f, 1.0f, 0.001f, this, tr( "Envelope slope" ) ),
m_noiseModel( 0.0f, 0.0f, 1.0f, 0.01f, this, tr( "Noise" ) ),
m_clickModel( 0.4f, 0.0f, 1.0f, 0.05f, this, tr( "Click" ) ),
m_slopeModel( 0.06f, 0.001f, 1.0f, 0.001f, this, tr( "Frequency Slope" ) ),
m_slopeModel( 0.06f, 0.001f, 1.0f, 0.001f, this, tr( "Frequency slope" ) ),
m_startNoteModel( true, this, tr( "Start from note" ) ),
m_endNoteModel( false, this, tr( "End to note" ) ),
m_versionModel( KICKER_PRESET_VERSION, 0, KICKER_PRESET_VERSION, this, "" )
@@ -289,7 +289,7 @@ kickerInstrumentView::kickerInstrumentView( Instrument * _instrument,
m_endFreqKnob->move( END_COL, ROW1 );
m_slopeKnob = new kickerKnob( this );
m_slopeKnob->setHintText( tr( "Frequency Slope:" ), "" );
m_slopeKnob->setHintText( tr( "Frequency slope:" ), "" );
m_slopeKnob->move( COL3, ROW1 );
m_gainKnob = new kickerKnob( this );
@@ -297,11 +297,11 @@ kickerInstrumentView::kickerInstrumentView( Instrument * _instrument,
m_gainKnob->move( COL1, ROW3 );
m_decayKnob = new kickerEnvKnob( this );
m_decayKnob->setHintText( tr( "Envelope Length:" ), "ms" );
m_decayKnob->setHintText( tr( "Envelope length:" ), "ms" );
m_decayKnob->move( COL2, ROW3 );
m_envKnob = new kickerKnob( this );
m_envKnob->setHintText( tr( "Envelope Slope:" ), "" );
m_envKnob->setHintText( tr( "Envelope slope:" ), "" );
m_envKnob->move( COL3, ROW3 );
m_clickKnob = new kickerKnob( this );
@@ -313,11 +313,11 @@ kickerInstrumentView::kickerInstrumentView( Instrument * _instrument,
m_noiseKnob->move( COL5, ROW3 );
m_distKnob = new kickerKnob( this );
m_distKnob->setHintText( tr( "Distortion Start:" ), "" );
m_distKnob->setHintText( tr( "Start distortion:" ), "" );
m_distKnob->move( COL4, ROW2 );
m_distEndKnob = new kickerKnob( this );
m_distEndKnob->setHintText( tr( "Distortion End:" ), "" );
m_distEndKnob->setHintText( tr( "End distortion:" ), "" );
m_distEndKnob->move( COL5, ROW2 );
m_startNoteToggle = new LedCheckBox( "", this, "", LedCheckBox::Green );

View File

@@ -145,33 +145,6 @@ ladspaBrowserView::ladspaBrowserView( ToolPlugin * _tool ) :
hlayout->addSpacing( 10 );
hlayout->addStretch();
setWhatsThis( tr(
"This dialog displays information on all of the LADSPA plugins LMMS was "
"able to locate. The plugins are divided into five categories based "
"upon an interpretation of the port types and names.\n\n"
"Available Effects are those that can be used by LMMS. In order for LMMS "
"to be able to use an effect, it must, first and foremost, be an effect, "
"which is to say, it has to have both input channels and output channels. "
"LMMS identifies an input channel as an audio rate port containing 'in' in "
"the name. Output channels are identified by the letters 'out'. Furthermore, "
"the effect must have the same number of inputs and outputs and be real time "
"capable.\n\n"
"Unavailable Effects are those that were identified as effects, but either "
"didn't have the same number of input and output channels or weren't real "
"time capable.\n\n"
"Instruments are plugins for which only output channels were identified.\n\n"
"Analysis Tools are plugins for which only input channels were identified.\n\n"
"Don't Knows are plugins for which no input or output channels were "
"identified.\n\n"
"Double clicking any of the plugins will bring up information on the "
"ports." ) );
hide();
if( parentWidget() )
{

View File

@@ -850,9 +850,9 @@ lb302SynthView::lb302SynthView( Instrument * _instrument, QWidget * _parent ) :
m_deadToggle->move( 10, 200 );
m_db24Toggle = new LedCheckBox( "", this );
m_db24Toggle->setWhatsThis(
tr( "303-es-que, 24dB/octave, 3 pole filter" ) );
m_db24Toggle->move( 10, 150);
ToolTip::add( m_db24Toggle,
tr( "303-es-que, 24dB/octave, 3 pole filter" ) );
m_slideDecKnob = new Knob( knobBright_26, this );

View File

@@ -828,120 +828,120 @@ inline sample_t MonstroSynth::calcSlope( int slope, sample_t s )
MonstroInstrument::MonstroInstrument( InstrumentTrack * _instrument_track ) :
Instrument( _instrument_track, &monstro_plugin_descriptor ),
m_osc1Vol( 33.0, 0.0, 200.0, 0.1, this, tr( "Osc 1 Volume" ) ),
m_osc1Pan( 0.0, -100.0, 100.0, 0.1, this, tr( "Osc 1 Panning" ) ),
m_osc1Crs( 0.0, -24.0, 24.0, 1.0, this, tr( "Osc 1 Coarse detune" ) ),
m_osc1Ftl( 0.0, -100.0, 100.0, 1.0, this, tr( "Osc 1 Fine detune left" ) ),
m_osc1Ftr( 0.0, -100.0, 100.0, 1.0, this, tr( "Osc 1 Fine detune right" ) ),
m_osc1Spo( 0.0, -180.0, 180.0, 0.1, this, tr( "Osc 1 Stereo phase offset" ) ),
m_osc1Pw( 50.0, PW_MIN, PW_MAX, 0.01, this, tr( "Osc 1 Pulse width" ) ),
m_osc1SSR( false, this, tr( "Osc 1 Sync send on rise" ) ),
m_osc1SSF( false, this, tr( "Osc 1 Sync send on fall" ) ),
m_osc1Vol( 33.0, 0.0, 200.0, 0.1, this, tr( "Osc 1 volume" ) ),
m_osc1Pan( 0.0, -100.0, 100.0, 0.1, this, tr( "Osc 1 panning" ) ),
m_osc1Crs( 0.0, -24.0, 24.0, 1.0, this, tr( "Osc 1 coarse detune" ) ),
m_osc1Ftl( 0.0, -100.0, 100.0, 1.0, this, tr( "Osc 1 fine detune left" ) ),
m_osc1Ftr( 0.0, -100.0, 100.0, 1.0, this, tr( "Osc 1 fine detune right" ) ),
m_osc1Spo( 0.0, -180.0, 180.0, 0.1, this, tr( "Osc 1 stereo phase offset" ) ),
m_osc1Pw( 50.0, PW_MIN, PW_MAX, 0.01, this, tr( "Osc 1 pulse width" ) ),
m_osc1SSR( false, this, tr( "Osc 1 sync send on rise" ) ),
m_osc1SSF( false, this, tr( "Osc 1 sync send on fall" ) ),
m_osc2Vol( 33.0, 0.0, 200.0, 0.1, this, tr( "Osc 2 Volume" ) ),
m_osc2Pan( 0.0, -100.0, 100.0, 0.1, this, tr( "Osc 2 Panning" ) ),
m_osc2Crs( 0.0, -24.0, 24.0, 1.0, this, tr( "Osc 2 Coarse detune" ) ),
m_osc2Ftl( 0.0, -100.0, 100.0, 1.0, this, tr( "Osc 2 Fine detune left" ) ),
m_osc2Ftr( 0.0, -100.0, 100.0, 1.0, this, tr( "Osc 2 Fine detune right" ) ),
m_osc2Spo( 0.0, -180.0, 180.0, 0.1, this, tr( "Osc 2 Stereo phase offset" ) ),
m_osc2Wave( this, tr( "Osc 2 Waveform" ) ),
m_osc2SyncH( false, this, tr( "Osc 2 Sync Hard" ) ),
m_osc2SyncR( false, this, tr( "Osc 2 Sync Reverse" ) ),
m_osc2Vol( 33.0, 0.0, 200.0, 0.1, this, tr( "Osc 2 volume" ) ),
m_osc2Pan( 0.0, -100.0, 100.0, 0.1, this, tr( "Osc 2 panning" ) ),
m_osc2Crs( 0.0, -24.0, 24.0, 1.0, this, tr( "Osc 2 coarse detune" ) ),
m_osc2Ftl( 0.0, -100.0, 100.0, 1.0, this, tr( "Osc 2 fine detune left" ) ),
m_osc2Ftr( 0.0, -100.0, 100.0, 1.0, this, tr( "Osc 2 fine detune right" ) ),
m_osc2Spo( 0.0, -180.0, 180.0, 0.1, this, tr( "Osc 2 stereo phase offset" ) ),
m_osc2Wave( this, tr( "Osc 2 waveform" ) ),
m_osc2SyncH( false, this, tr( "Osc 2 sync hard" ) ),
m_osc2SyncR( false, this, tr( "Osc 2 sync reverse" ) ),
m_osc3Vol( 33.0, 0.0, 200.0, 0.1, this, tr( "Osc 3 Volume" ) ),
m_osc3Pan( 0.0, -100.0, 100.0, 0.1, this, tr( "Osc 3 Panning" ) ),
m_osc3Crs( 0.0, -24.0, 24.0, 1.0, this, tr( "Osc 3 Coarse detune" ) ),
m_osc3Vol( 33.0, 0.0, 200.0, 0.1, this, tr( "Osc 3 volume" ) ),
m_osc3Pan( 0.0, -100.0, 100.0, 0.1, this, tr( "Osc 3 panning" ) ),
m_osc3Crs( 0.0, -24.0, 24.0, 1.0, this, tr( "Osc 3 coarse detune" ) ),
m_osc3Spo( 0.0, -180.0, 180.0, 0.1, this, tr( "Osc 3 Stereo phase offset" ) ),
m_osc3Sub( 0.0, -100.0, 100.0, 0.1, this, tr( "Osc 3 Sub-oscillator mix" ) ),
m_osc3Wave1( this, tr( "Osc 3 Waveform 1" ) ),
m_osc3Wave2( this, tr( "Osc 3 Waveform 2" ) ),
m_osc3SyncH( false, this, tr( "Osc 3 Sync Hard" ) ),
m_osc3SyncR( false, this, tr( "Osc 3 Sync Reverse" ) ),
m_osc3Sub( 0.0, -100.0, 100.0, 0.1, this, tr( "Osc 3 sub-oscillator mix" ) ),
m_osc3Wave1( this, tr( "Osc 3 waveform 1" ) ),
m_osc3Wave2( this, tr( "Osc 3 waveform 2" ) ),
m_osc3SyncH( false, this, tr( "Osc 3 sync hard" ) ),
m_osc3SyncR( false, this, tr( "Osc 3 Sync reverse" ) ),
m_lfo1Wave( this, tr( "LFO 1 Waveform" ) ),
m_lfo1Att( 0.0f, 0.0f, 2000.0f, 1.0f, 2000.0f, this, tr( "LFO 1 Attack" ) ),
m_lfo1Rate( 1.0f, 0.1, 10000.0, 0.1, 10000.0f, this, tr( "LFO 1 Rate" ) ),
m_lfo1Phs( 0.0, -180.0, 180.0, 0.1, this, tr( "LFO 1 Phase" ) ),
m_lfo1Wave( this, tr( "LFO 1 waveform" ) ),
m_lfo1Att( 0.0f, 0.0f, 2000.0f, 1.0f, 2000.0f, this, tr( "LFO 1 attack" ) ),
m_lfo1Rate( 1.0f, 0.1, 10000.0, 0.1, 10000.0f, this, tr( "LFO 1 rate" ) ),
m_lfo1Phs( 0.0, -180.0, 180.0, 0.1, this, tr( "LFO 1 phase" ) ),
m_lfo2Wave( this, tr( "LFO 2 Waveform" ) ),
m_lfo2Att( 0.0f, 0.0f, 2000.0f, 1.0f, 2000.0f, this, tr( "LFO 2 Attack" ) ),
m_lfo2Rate( 1.0f, 0.1, 10000.0, 0.1, 10000.0f, this, tr( "LFO 2 Rate" ) ),
m_lfo2Phs( 0.0, -180.0, 180.0, 0.1, this, tr( "LFO 2 Phase" ) ),
m_lfo2Wave( this, tr( "LFO 2 waveform" ) ),
m_lfo2Att( 0.0f, 0.0f, 2000.0f, 1.0f, 2000.0f, this, tr( "LFO 2 attack" ) ),
m_lfo2Rate( 1.0f, 0.1, 10000.0, 0.1, 10000.0f, this, tr( "LFO 2 rate" ) ),
m_lfo2Phs( 0.0, -180.0, 180.0, 0.1, this, tr( "LFO 2 phase" ) ),
m_env1Pre( 0.0f, 0.0f, 2000.0f, 1.0f, 2000.0f, this, tr( "Env 1 Pre-delay" ) ),
m_env1Att( 0.0f, 0.0f, 2000.0f, 1.0f, 2000.0f, this, tr( "Env 1 Attack" ) ),
m_env1Hold( 0.0f, 0.0f, 4000.0f, 1.0f, 4000.0f, this, tr( "Env 1 Hold" ) ),
m_env1Dec( 0.0f, 0.0f, 4000.0f, 1.0f, 4000.0f, this, tr( "Env 1 Decay" ) ),
m_env1Sus( 1.0f, 0.0f, 1.0f, 0.001f, this, tr( "Env 1 Sustain" ) ),
m_env1Rel( 0.0f, 0.0f, 4000.0f, 1.0f, 4000.0f, this, tr( "Env 1 Release" ) ),
m_env1Slope( 0.0f, -1.0f, 1.0f, 0.001f, this, tr( "Env 1 Slope" ) ),
m_env1Pre( 0.0f, 0.0f, 2000.0f, 1.0f, 2000.0f, this, tr( "Env 1 pre-delay" ) ),
m_env1Att( 0.0f, 0.0f, 2000.0f, 1.0f, 2000.0f, this, tr( "Env 1 attack" ) ),
m_env1Hold( 0.0f, 0.0f, 4000.0f, 1.0f, 4000.0f, this, tr( "Env 1 hold" ) ),
m_env1Dec( 0.0f, 0.0f, 4000.0f, 1.0f, 4000.0f, this, tr( "Env 1 decay" ) ),
m_env1Sus( 1.0f, 0.0f, 1.0f, 0.001f, this, tr( "Env 1 sustain" ) ),
m_env1Rel( 0.0f, 0.0f, 4000.0f, 1.0f, 4000.0f, this, tr( "Env 1 release" ) ),
m_env1Slope( 0.0f, -1.0f, 1.0f, 0.001f, this, tr( "Env 1 slope" ) ),
m_env2Pre( 0.0f, 0.0f, 2000.0f, 1.0f, 2000.0f, this, tr( "Env 2 Pre-delay" ) ),
m_env2Att( 0.0f, 0.0f, 2000.0f, 1.0f, 2000.0f, this, tr( "Env 2 Attack" ) ),
m_env2Hold( 0.0f, 0.0f, 4000.0f, 1.0f, 4000.0f, this, tr( "Env 2 Hold" ) ),
m_env2Dec( 0.0f, 0.0f, 4000.0f, 1.0f, 4000.0f, this, tr( "Env 2 Decay" ) ),
m_env2Sus( 1.0f, 0.0f, 1.0f, 0.001f, this, tr( "Env 2 Sustain" ) ),
m_env2Rel( 0.0f, 0.0f, 4000.0f, 1.0f, 4000.0f, this, tr( "Env 2 Release" ) ),
m_env2Slope( 0.0f, -1.0f, 1.0f, 0.001f, this, tr( "Env 2 Slope" ) ),
m_env2Pre( 0.0f, 0.0f, 2000.0f, 1.0f, 2000.0f, this, tr( "Env 2 pre-delay" ) ),
m_env2Att( 0.0f, 0.0f, 2000.0f, 1.0f, 2000.0f, this, tr( "Env 2 attack" ) ),
m_env2Hold( 0.0f, 0.0f, 4000.0f, 1.0f, 4000.0f, this, tr( "Env 2 hold" ) ),
m_env2Dec( 0.0f, 0.0f, 4000.0f, 1.0f, 4000.0f, this, tr( "Env 2 decay" ) ),
m_env2Sus( 1.0f, 0.0f, 1.0f, 0.001f, this, tr( "Env 2 sustain" ) ),
m_env2Rel( 0.0f, 0.0f, 4000.0f, 1.0f, 4000.0f, this, tr( "Env 2 release" ) ),
m_env2Slope( 0.0f, -1.0f, 1.0f, 0.001f, this, tr( "Env 2 slope" ) ),
m_o23Mod( 0, 0, NUM_MODS - 1, this, tr( "Osc2-3 modulation" ) ),
m_o23Mod( 0, 0, NUM_MODS - 1, this, tr( "Osc 2+3 modulation" ) ),
m_selectedView( 0, 0, 1, this, tr( "Selected view" ) ),
m_vol1env1( 0.0f, -1.0f, 1.0f, 0.001f, this, tr( "Vol1-Env1" ) ),
m_vol1env2( 0.0f, -1.0f, 1.0f, 0.001f, this, tr( "Vol1-Env2" ) ),
m_vol1lfo1( 0.0f, -1.0f, 1.0f, 0.001f, this, tr( "Vol1-LFO1" ) ),
m_vol1lfo2( 0.0f, -1.0f, 1.0f, 0.001f, this, tr( "Vol1-LFO2" ) ),
m_vol1env1( 0.0f, -1.0f, 1.0f, 0.001f, this, tr( "Osc 1 - Vol env 1" ) ),
m_vol1env2( 0.0f, -1.0f, 1.0f, 0.001f, this, tr( "Osc 1 - Vol env 2" ) ),
m_vol1lfo1( 0.0f, -1.0f, 1.0f, 0.001f, this, tr( "Osc 1 - Vol LFO 1" ) ),
m_vol1lfo2( 0.0f, -1.0f, 1.0f, 0.001f, this, tr( "Osc 1 - Vol LFO 2" ) ),
m_vol2env1( 0.0f, -1.0f, 1.0f, 0.001f, this, tr( "Vol2-Env1" ) ),
m_vol2env2( 0.0f, -1.0f, 1.0f, 0.001f, this, tr( "Vol2-Env2" ) ),
m_vol2lfo1( 0.0f, -1.0f, 1.0f, 0.001f, this, tr( "Vol2-LFO1" ) ),
m_vol2lfo2( 0.0f, -1.0f, 1.0f, 0.001f, this, tr( "Vol2-LFO2" ) ),
m_vol2env1( 0.0f, -1.0f, 1.0f, 0.001f, this, tr( "Osc 2 - Vol env 1" ) ),
m_vol2env2( 0.0f, -1.0f, 1.0f, 0.001f, this, tr( "Osc 2 - Vol env 2" ) ),
m_vol2lfo1( 0.0f, -1.0f, 1.0f, 0.001f, this, tr( "Osc 2 - Vol LFO 1" ) ),
m_vol2lfo2( 0.0f, -1.0f, 1.0f, 0.001f, this, tr( "Osc 2 - Vol LFO 2" ) ),
m_vol3env1( 0.0f, -1.0f, 1.0f, 0.001f, this, tr( "Vol3-Env1" ) ),
m_vol3env2( 0.0f, -1.0f, 1.0f, 0.001f, this, tr( "Vol3-Env2" ) ),
m_vol3lfo1( 0.0f, -1.0f, 1.0f, 0.001f, this, tr( "Vol3-LFO1" ) ),
m_vol3lfo2( 0.0f, -1.0f, 1.0f, 0.001f, this, tr( "Vol3-LFO2" ) ),
m_vol3env1( 0.0f, -1.0f, 1.0f, 0.001f, this, tr( "Osc 3 - Vol env 1" ) ),
m_vol3env2( 0.0f, -1.0f, 1.0f, 0.001f, this, tr( "Osc 3 - Vol env 2" ) ),
m_vol3lfo1( 0.0f, -1.0f, 1.0f, 0.001f, this, tr( "Osc 3 - Vol LFO 1" ) ),
m_vol3lfo2( 0.0f, -1.0f, 1.0f, 0.001f, this, tr( "Osc 3 - Vol LFO 2" ) ),
m_phs1env1( 0.0f, -1.0f, 1.0f, 0.001f, this, tr( "Phs1-Env1" ) ),
m_phs1env2( 0.0f, -1.0f, 1.0f, 0.001f, this, tr( "Phs1-Env2" ) ),
m_phs1lfo1( 0.0f, -1.0f, 1.0f, 0.001f, this, tr( "Phs1-LFO1" ) ),
m_phs1lfo2( 0.0f, -1.0f, 1.0f, 0.001f, this, tr( "Phs1-LFO2" ) ),
m_phs1env1( 0.0f, -1.0f, 1.0f, 0.001f, this, tr( "Osc 1 - Phs env 1" ) ),
m_phs1env2( 0.0f, -1.0f, 1.0f, 0.001f, this, tr( "Osc 1 - Phs env 2" ) ),
m_phs1lfo1( 0.0f, -1.0f, 1.0f, 0.001f, this, tr( "Osc 1 - Phs LFO 1" ) ),
m_phs1lfo2( 0.0f, -1.0f, 1.0f, 0.001f, this, tr( "Osc 1 - Phs LFO 2" ) ),
m_phs2env1( 0.0f, -1.0f, 1.0f, 0.001f, this, tr( "Phs2-Env1" ) ),
m_phs2env2( 0.0f, -1.0f, 1.0f, 0.001f, this, tr( "Phs2-Env2" ) ),
m_phs2lfo1( 0.0f, -1.0f, 1.0f, 0.001f, this, tr( "Phs2-LFO1" ) ),
m_phs2lfo2( 0.0f, -1.0f, 1.0f, 0.001f, this, tr( "Phs2-LFO2" ) ),
m_phs2env1( 0.0f, -1.0f, 1.0f, 0.001f, this, tr( "Osc 2 - Phs env 1" ) ),
m_phs2env2( 0.0f, -1.0f, 1.0f, 0.001f, this, tr( "Osc 2 - Phs env 2" ) ),
m_phs2lfo1( 0.0f, -1.0f, 1.0f, 0.001f, this, tr( "Osc 2 - Phs LFO 1" ) ),
m_phs2lfo2( 0.0f, -1.0f, 1.0f, 0.001f, this, tr( "Osc 2 - Phs LFO 2" ) ),
m_phs3env1( 0.0f, -1.0f, 1.0f, 0.001f, this, tr( "Phs3-Env1" ) ),
m_phs3env2( 0.0f, -1.0f, 1.0f, 0.001f, this, tr( "Phs3-Env2" ) ),
m_phs3lfo1( 0.0f, -1.0f, 1.0f, 0.001f, this, tr( "Phs3-LFO1" ) ),
m_phs3lfo2( 0.0f, -1.0f, 1.0f, 0.001f, this, tr( "Phs3-LFO2" ) ),
m_phs3env1( 0.0f, -1.0f, 1.0f, 0.001f, this, tr( "Osc 3 - Phs env 1" ) ),
m_phs3env2( 0.0f, -1.0f, 1.0f, 0.001f, this, tr( "Osc 3 - Phs env 2" ) ),
m_phs3lfo1( 0.0f, -1.0f, 1.0f, 0.001f, this, tr( "Osc 3 - Phs LFO 1" ) ),
m_phs3lfo2( 0.0f, -1.0f, 1.0f, 0.001f, this, tr( "Osc 3 - Phs LFO 2" ) ),
m_pit1env1( 0.0f, -1.0f, 1.0f, 0.001f, this, tr( "Pit1-Env1" ) ),
m_pit1env2( 0.0f, -1.0f, 1.0f, 0.001f, this, tr( "Pit1-Env2" ) ),
m_pit1lfo1( 0.0f, -1.0f, 1.0f, 0.001f, this, tr( "Pit1-LFO1" ) ),
m_pit1lfo2( 0.0f, -1.0f, 1.0f, 0.001f, this, tr( "Pit1-LFO2" ) ),
m_pit1env1( 0.0f, -1.0f, 1.0f, 0.001f, this, tr( "Osc 1 - Pit env 1" ) ),
m_pit1env2( 0.0f, -1.0f, 1.0f, 0.001f, this, tr( "Osc 1 - Pit env 2" ) ),
m_pit1lfo1( 0.0f, -1.0f, 1.0f, 0.001f, this, tr( "Osc 1 - Pit LFO 1" ) ),
m_pit1lfo2( 0.0f, -1.0f, 1.0f, 0.001f, this, tr( "Osc 1 - Pit LFO 2" ) ),
m_pit2env1( 0.0f, -1.0f, 1.0f, 0.001f, this, tr( "Pit2-Env1" ) ),
m_pit2env2( 0.0f, -1.0f, 1.0f, 0.001f, this, tr( "Pit2-Env2" ) ),
m_pit2lfo1( 0.0f, -1.0f, 1.0f, 0.001f, this, tr( "Pit2-LFO1" ) ),
m_pit2lfo2( 0.0f, -1.0f, 1.0f, 0.001f, this, tr( "Pit2-LFO2" ) ),
m_pit2env1( 0.0f, -1.0f, 1.0f, 0.001f, this, tr( "Osc 2 - Pit env 1" ) ),
m_pit2env2( 0.0f, -1.0f, 1.0f, 0.001f, this, tr( "Osc 2 - Pit env 2" ) ),
m_pit2lfo1( 0.0f, -1.0f, 1.0f, 0.001f, this, tr( "Osc 2 - Pit LFO 1" ) ),
m_pit2lfo2( 0.0f, -1.0f, 1.0f, 0.001f, this, tr( "Osc 2 - Pit LFO 2" ) ),
m_pit3env1( 0.0f, -1.0f, 1.0f, 0.001f, this, tr( "Pit3-Env1" ) ),
m_pit3env2( 0.0f, -1.0f, 1.0f, 0.001f, this, tr( "Pit3-Env2" ) ),
m_pit3lfo1( 0.0f, -1.0f, 1.0f, 0.001f, this, tr( "Pit3-LFO1" ) ),
m_pit3lfo2( 0.0f, -1.0f, 1.0f, 0.001f, this, tr( "Pit3-LFO2" ) ),
m_pit3env1( 0.0f, -1.0f, 1.0f, 0.001f, this, tr( "Osc 3 - Pit env 1" ) ),
m_pit3env2( 0.0f, -1.0f, 1.0f, 0.001f, this, tr( "Osc 3 - Pit env 2" ) ),
m_pit3lfo1( 0.0f, -1.0f, 1.0f, 0.001f, this, tr( "Osc 3 - Pit LFO 1" ) ),
m_pit3lfo2( 0.0f, -1.0f, 1.0f, 0.001f, this, tr( "Osc 3 - Pit LFO 2" ) ),
m_pw1env1( 0.0f, -1.0f, 1.0f, 0.001f, this, tr( "PW1-Env1" ) ),
m_pw1env2( 0.0f, -1.0f, 1.0f, 0.001f, this, tr( "PW1-Env2" ) ),
m_pw1lfo1( 0.0f, -1.0f, 1.0f, 0.001f, this, tr( "PW1-LFO1" ) ),
m_pw1lfo2( 0.0f, -1.0f, 1.0f, 0.001f, this, tr( "PW1-LFO2" ) ),
m_pw1env1( 0.0f, -1.0f, 1.0f, 0.001f, this, tr( "Osc 1 - PW env 1" ) ),
m_pw1env2( 0.0f, -1.0f, 1.0f, 0.001f, this, tr( "Osc 1 - PW env 2" ) ),
m_pw1lfo1( 0.0f, -1.0f, 1.0f, 0.001f, this, tr( "Osc 1 - PW LFO 1" ) ),
m_pw1lfo2( 0.0f, -1.0f, 1.0f, 0.001f, this, tr( "Osc 1 - PW LFO 2" ) ),
m_sub3env1( 0.0f, -1.0f, 1.0f, 0.001f, this, tr( "Sub3-Env1" ) ),
m_sub3env2( 0.0f, -1.0f, 1.0f, 0.001f, this, tr( "Sub3-Env2" ) ),
m_sub3lfo1( 0.0f, -1.0f, 1.0f, 0.001f, this, tr( "Sub3-LFO1" ) ),
m_sub3lfo2( 0.0f, -1.0f, 1.0f, 0.001f, this, tr( "Sub3-LFO2" ) )
m_sub3env1( 0.0f, -1.0f, 1.0f, 0.001f, this, tr( "Osc 3 - Sub env 1" ) ),
m_sub3env2( 0.0f, -1.0f, 1.0f, 0.001f, this, tr( "Osc 3 - Sub env 2" ) ),
m_sub3lfo1( 0.0f, -1.0f, 1.0f, 0.001f, this, tr( "Osc 3 - Sub LFO 1" ) ),
m_sub3lfo2( 0.0f, -1.0f, 1.0f, 0.001f, this, tr( "Osc 3 - Sub LFO 2" ) )
{
@@ -1465,29 +1465,12 @@ MonstroView::MonstroView( Instrument * _instrument,
m_opViewButton -> setActiveGraphic( PLUGIN_NAME::getIconPixmap( "opview_active" ) );
m_opViewButton -> setInactiveGraphic( PLUGIN_NAME::getIconPixmap( "opview_inactive" ) );
ToolTip::add( m_opViewButton, tr( "Operators view" ) );
m_opViewButton -> setWhatsThis( tr( "The Operators view contains all the operators. These include both audible "
"operators (oscillators) and inaudible operators, or modulators: "
"Low-frequency oscillators and Envelopes. \n\n"
"Knobs and other widgets in the Operators view have their own what's this -texts, "
"so you can get more specific help for them that way. " ) );
PixmapButton * m_matViewButton = new PixmapButton( this, NULL );
m_matViewButton -> move( 125,0 );
m_matViewButton -> setActiveGraphic( PLUGIN_NAME::getIconPixmap( "matview_active" ) );
m_matViewButton -> setInactiveGraphic( PLUGIN_NAME::getIconPixmap( "matview_inactive" ) );
ToolTip::add( m_matViewButton, tr( "Matrix view" ) );
m_matViewButton -> setWhatsThis( tr( "The Matrix view contains the modulation matrix. Here you can define "
"the modulation relationships between the various operators: Each "
"audible operator (oscillators 1-3) has 3-4 properties that can be "
"modulated by any of the modulators. Using more modulations consumes "
"more CPU power. \n\n"
"The view is divided to modulation targets, grouped by the target oscillator. "
"Available targets are volume, pitch, phase, pulse width and sub-osc ratio. "
"Note: some targets are specific to one oscillator only. \n\n"
"Each modulation target has 4 knobs, one for each modulator. By default "
"the knobs are at 0, which means no modulation. Turning a knob to 1 causes "
"that modulator to affect the modulation target as much as possible. Turning "
"it to -1 does the same, but the modulation is inversed. " ) );
m_selectedViewGroup = new automatableButtonGroup( this );
m_selectedViewGroup -> addButton( m_opViewButton );
@@ -1660,8 +1643,8 @@ QWidget * MonstroView::setupOperatorsView( QWidget * _parent )
makeknob( m_osc1VolKnob, KNOBCOL1, O1ROW, tr( "Volume" ), "%", "osc1Knob" )
makeknob( m_osc1PanKnob, KNOBCOL2, O1ROW, tr( "Panning" ), "", "osc1Knob" )
makeknob( m_osc1CrsKnob, KNOBCOL3, O1ROW, tr( "Coarse detune" ), tr( " semitones" ), "osc1Knob" )
makeknob( m_osc1FtlKnob, KNOBCOL4, O1ROW, tr( "Finetune left" ), tr( " cents" ), "osc1Knob" )
makeknob( m_osc1FtrKnob, KNOBCOL5, O1ROW, tr( "Finetune right" ), tr( " cents" ), "osc1Knob" )
makeknob( m_osc1FtlKnob, KNOBCOL4, O1ROW, tr( "Fine tune left" ), tr( " cents" ), "osc1Knob" )
makeknob( m_osc1FtrKnob, KNOBCOL5, O1ROW, tr( "Fine tune right" ), tr( " cents" ), "osc1Knob" )
makeknob( m_osc1SpoKnob, KNOBCOL6, O1ROW, tr( "Stereo phase offset" ), tr( " deg" ), "osc1Knob" )
makeknob( m_osc1PwKnob, KNOBCOL7, O1ROW, tr( "Pulse width" ), "%", "osc1Knob" )
@@ -1673,8 +1656,8 @@ QWidget * MonstroView::setupOperatorsView( QWidget * _parent )
makeknob( m_osc2VolKnob, KNOBCOL1, O2ROW, tr( "Volume" ), "%", "osc2Knob" )
makeknob( m_osc2PanKnob, KNOBCOL2, O2ROW, tr( "Panning" ), "", "osc2Knob" )
makeknob( m_osc2CrsKnob, KNOBCOL3, O2ROW, tr( "Coarse detune" ), tr( " semitones" ), "osc2Knob" )
makeknob( m_osc2FtlKnob, KNOBCOL4, O2ROW, tr( "Finetune left" ), tr( " cents" ), "osc2Knob" )
makeknob( m_osc2FtrKnob, KNOBCOL5, O2ROW, tr( "Finetune right" ), tr( " cents" ), "osc2Knob" )
makeknob( m_osc2FtlKnob, KNOBCOL4, O2ROW, tr( "Fine tune left" ), tr( " cents" ), "osc2Knob" )
makeknob( m_osc2FtrKnob, KNOBCOL5, O2ROW, tr( "Fine tune right" ), tr( " cents" ), "osc2Knob" )
makeknob( m_osc2SpoKnob, KNOBCOL6, O2ROW, tr( "Stereo phase offset" ), tr( " deg" ), "osc2Knob" )
m_osc2VolKnob -> setVolumeKnob( true );
@@ -1742,25 +1725,25 @@ QWidget * MonstroView::setupOperatorsView( QWidget * _parent )
m_mixButton -> move( 225, 185 );
m_mixButton -> setActiveGraphic( PLUGIN_NAME::getIconPixmap( "mix_active" ) );
m_mixButton -> setInactiveGraphic( PLUGIN_NAME::getIconPixmap( "mix_inactive" ) );
ToolTip::add( m_mixButton, tr( "Mix Osc2 with Osc3" ) );
ToolTip::add( m_mixButton, tr( "Mix osc 2 with osc 3" ) );
PixmapButton * m_amButton = new PixmapButton( view, NULL );
m_amButton -> move( 225, 185 + 15 );
m_amButton -> setActiveGraphic( PLUGIN_NAME::getIconPixmap( "am_active" ) );
m_amButton -> setInactiveGraphic( PLUGIN_NAME::getIconPixmap( "am_inactive" ) );
ToolTip::add( m_amButton, tr( "Modulate amplitude of Osc3 with Osc2" ) );
ToolTip::add( m_amButton, tr( "Modulate amplitude of osc 3 by osc 2" ) );
PixmapButton * m_fmButton = new PixmapButton( view, NULL );
m_fmButton -> move( 225, 185 + 15*2 );
m_fmButton -> setActiveGraphic( PLUGIN_NAME::getIconPixmap( "fm_active" ) );
m_fmButton -> setInactiveGraphic( PLUGIN_NAME::getIconPixmap( "fm_inactive" ) );
ToolTip::add( m_fmButton, tr( "Modulate frequency of Osc3 with Osc2" ) );
ToolTip::add( m_fmButton, tr( "Modulate frequency of osc 3 by osc 2" ) );
PixmapButton * m_pmButton = new PixmapButton( view, NULL );
m_pmButton -> move( 225, 185 + 15*3 );
m_pmButton -> setActiveGraphic( PLUGIN_NAME::getIconPixmap( "pm_active" ) );
m_pmButton -> setInactiveGraphic( PLUGIN_NAME::getIconPixmap( "pm_inactive" ) );
ToolTip::add( m_pmButton, tr( "Modulate phase of Osc3 with Osc2" ) );
ToolTip::add( m_pmButton, tr( "Modulate phase of osc 3 by osc 2" ) );
m_o23ModGroup = new automatableButtonGroup( view );
m_o23ModGroup-> addButton( m_mixButton );
@@ -1770,128 +1753,6 @@ QWidget * MonstroView::setupOperatorsView( QWidget * _parent )
////////////////////////////////////
// //
// whatsthis-information strings //
// //
////////////////////////////////////
m_osc1CrsKnob -> setWhatsThis( tr( "The CRS knob changes the tuning of oscillator 1 in semitone steps. " ) );
m_osc2CrsKnob -> setWhatsThis( tr( "The CRS knob changes the tuning of oscillator 2 in semitone steps. " ) );
m_osc3CrsKnob -> setWhatsThis( tr( "The CRS knob changes the tuning of oscillator 3 in semitone steps. " ) );
m_osc1FtlKnob -> setWhatsThis( tr( "FTL and FTR change the finetuning of the oscillator for left and right "
"channels respectively. These can add stereo-detuning to the oscillator "
"which widens the stereo image and causes an illusion of space. " ) );
m_osc1FtrKnob -> setWhatsThis( tr( "FTL and FTR change the finetuning of the oscillator for left and right "
"channels respectively. These can add stereo-detuning to the oscillator "
"which widens the stereo image and causes an illusion of space. " ) );
m_osc2FtlKnob -> setWhatsThis( tr( "FTL and FTR change the finetuning of the oscillator for left and right "
"channels respectively. These can add stereo-detuning to the oscillator "
"which widens the stereo image and causes an illusion of space. " ) );
m_osc2FtrKnob -> setWhatsThis( tr( "FTL and FTR change the finetuning of the oscillator for left and right "
"channels respectively. These can add stereo-detuning to the oscillator "
"which widens the stereo image and causes an illusion of space. " ) );
m_osc1SpoKnob -> setWhatsThis( tr( "The SPO knob modifies the difference in phase between left and right "
"channels. Higher difference creates a wider stereo image. " ) );
m_osc2SpoKnob -> setWhatsThis( tr( "The SPO knob modifies the difference in phase between left and right "
"channels. Higher difference creates a wider stereo image. " ) );
m_osc3SpoKnob -> setWhatsThis( tr( "The SPO knob modifies the difference in phase between left and right "
"channels. Higher difference creates a wider stereo image. " ) );
m_osc1PwKnob -> setWhatsThis( tr( "The PW knob controls the pulse width, also known as duty cycle, "
"of oscillator 1. Oscillator 1 is a digital pulse wave oscillator, "
"it doesn't produce bandlimited output, which means that you can "
"use it as an audible oscillator but it will cause aliasing. You can "
"also use it as an inaudible source of a sync signal, which can be "
"used to synchronize oscillators 2 and 3. " ) );
m_osc1SSRButton -> setWhatsThis( tr( "Send Sync on Rise: When enabled, the Sync signal is sent every time "
"the state of oscillator 1 changes from low to high, ie. when the amplitude "
"changes from -1 to 1. "
"Oscillator 1's pitch, phase and pulse width may affect the timing of syncs, "
"but its volume has no effect on them. Sync signals are sent independently "
"for both left and right channels. " ) );
m_osc1SSFButton -> setWhatsThis( tr( "Send Sync on Fall: When enabled, the Sync signal is sent every time "
"the state of oscillator 1 changes from high to low, ie. when the amplitude "
"changes from 1 to -1. "
"Oscillator 1's pitch, phase and pulse width may affect the timing of syncs, "
"but its volume has no effect on them. Sync signals are sent independently "
"for both left and right channels. " ) );
m_osc2SyncHButton -> setWhatsThis( tr( "Hard sync: Every time the oscillator receives a sync signal from oscillator 1, "
"its phase is reset to 0 + whatever its phase offset is. " ) );
m_osc3SyncHButton -> setWhatsThis( tr( "Hard sync: Every time the oscillator receives a sync signal from oscillator 1, "
"its phase is reset to 0 + whatever its phase offset is. " ) );
m_osc2SyncRButton -> setWhatsThis( tr( "Reverse sync: Every time the oscillator receives a sync signal from oscillator 1, "
"the amplitude of the oscillator gets inverted. " ) );
m_osc3SyncRButton -> setWhatsThis( tr( "Reverse sync: Every time the oscillator receives a sync signal from oscillator 1, "
"the amplitude of the oscillator gets inverted. " ) );
m_osc2WaveBox -> setWhatsThis( tr( "Choose waveform for oscillator 2. " ) );
m_osc3Wave1Box -> setWhatsThis( tr( "Choose waveform for oscillator 3's first sub-osc. "
"Oscillator 3 can smoothly interpolate between two different waveforms. " ) );
m_osc3Wave2Box -> setWhatsThis( tr( "Choose waveform for oscillator 3's second sub-osc. "
"Oscillator 3 can smoothly interpolate between two different waveforms. " ) );
m_osc3SubKnob -> setWhatsThis( tr( "The SUB knob changes the mixing ratio of the two sub-oscs of oscillator 3. "
"Each sub-osc can be set to produce a different waveform, and oscillator 3 "
"can smoothly interpolate between them. All incoming modulations to oscillator 3 are applied "
"to both sub-oscs/waveforms in the exact same way. " ) );
m_mixButton -> setWhatsThis( tr( "In addition to dedicated modulators, Monstro allows oscillator 3 to be modulated by "
"the output of oscillator 2. \n\n"
"Mix mode means no modulation: the outputs of the oscillators are simply mixed together. " ) );
m_amButton -> setWhatsThis( tr( "In addition to dedicated modulators, Monstro allows oscillator 3 to be modulated by "
"the output of oscillator 2. \n\n"
"AM means amplitude modulation: Oscillator 3's amplitude (volume) is modulated by oscillator 2. " ) );
m_fmButton -> setWhatsThis( tr( "In addition to dedicated modulators, Monstro allows oscillator 3 to be modulated by "
"the output of oscillator 2. \n\n"
"FM means frequency modulation: Oscillator 3's frequency (pitch) is modulated by oscillator 2. "
"The frequency modulation is implemented as phase modulation, which gives a more stable overall pitch "
"than \"pure\" frequency modulation. " ) );
m_pmButton -> setWhatsThis( tr( "In addition to dedicated modulators, Monstro allows oscillator 3 to be modulated by "
"the output of oscillator 2. \n\n"
"PM means phase modulation: Oscillator 3's phase is modulated by oscillator 2. "
"It differs from frequency modulation in that the phase changes are not cumulative. " ) );
m_lfo1WaveBox -> setWhatsThis( tr( "Select the waveform for LFO 1. \n"
"\"Random\" and \"Random smooth\" are special waveforms: "
"they produce random output, where the rate of the LFO controls how often "
"the state of the LFO changes. The smooth version interpolates between these "
"states with cosine interpolation. These random modes can be used to give "
"\"life\" to your presets - add some of that analog unpredictability... " ) );
m_lfo2WaveBox -> setWhatsThis( tr( "Select the waveform for LFO 2. \n"
"\"Random\" and \"Random smooth\" are special waveforms: "
"they produce random output, where the rate of the LFO controls how often "
"the state of the LFO changes. The smooth version interpolates between these "
"states with cosine interpolation. These random modes can be used to give "
"\"life\" to your presets - add some of that analog unpredictability... " ) );
m_lfo1AttKnob -> setWhatsThis( tr( "Attack causes the LFO to come on gradually from the start of the note. " ) );
m_lfo2AttKnob -> setWhatsThis( tr( "Attack causes the LFO to come on gradually from the start of the note. " ) );
m_lfo1RateKnob -> setWhatsThis( tr( "Rate sets the speed of the LFO, measured in milliseconds per cycle. Can be synced to tempo. " ) );
m_lfo2RateKnob -> setWhatsThis( tr( "Rate sets the speed of the LFO, measured in milliseconds per cycle. Can be synced to tempo. " ) );
m_lfo1PhsKnob -> setWhatsThis( tr( "PHS controls the phase offset of the LFO. " ) );
m_lfo2PhsKnob -> setWhatsThis( tr( "PHS controls the phase offset of the LFO. " ) );
m_env1PreKnob -> setWhatsThis( tr( "PRE, or pre-delay, delays the start of the envelope from the start of the note. 0 means no delay. " ) );
m_env2PreKnob -> setWhatsThis( tr( "PRE, or pre-delay, delays the start of the envelope from the start of the note. 0 means no delay. " ) );
m_env1AttKnob -> setWhatsThis( tr( "ATT, or attack, controls how fast the envelope ramps up at start, measured in milliseconds. "
"A value of 0 means instant. " ) );
m_env2AttKnob -> setWhatsThis( tr( "ATT, or attack, controls how fast the envelope ramps up at start, measured in milliseconds. "
"A value of 0 means instant. " ) );
m_env1HoldKnob -> setWhatsThis( tr( "HOLD controls how long the envelope stays at peak after the attack phase. " ) );
m_env2HoldKnob -> setWhatsThis( tr( "HOLD controls how long the envelope stays at peak after the attack phase. " ) );
m_env1DecKnob -> setWhatsThis( tr( "DEC, or decay, controls how fast the envelope falls off from its peak, measured in milliseconds "
"it would take to go from peak to zero. The actual decay may be shorter if sustain is used. ") );
m_env2DecKnob -> setWhatsThis( tr( "DEC, or decay, controls how fast the envelope falls off from its peak, measured in milliseconds "
"it would take to go from peak to zero. The actual decay may be shorter if sustain is used. ") );
m_env1SusKnob -> setWhatsThis( tr( "SUS, or sustain, controls the sustain level of the envelope. The decay phase will not go below this level "
"as long as the note is held. " ) );
m_env2SusKnob -> setWhatsThis( tr( "SUS, or sustain, controls the sustain level of the envelope. The decay phase will not go below this level "
"as long as the note is held. " ) );
m_env1RelKnob -> setWhatsThis( tr( "REL, or release, controls how long the release is for the note, measured in how long it would take to "
"fall from peak to zero. Actual release may be shorter, depending on at what phase the note is released. ") );
m_env2RelKnob -> setWhatsThis( tr( "REL, or release, controls how long the release is for the note, measured in how long it would take to "
"fall from peak to zero. Actual release may be shorter, depending on at what phase the note is released. ") );
m_env1SlopeKnob -> setWhatsThis( tr( "The slope knob controls the curve or shape of the envelope. A value of 0 creates straight rises and falls. "
"Negative values create curves that start slowly, peak quickly and fall of slowly again. "
"Positive values create curves that start and end quickly, and stay longer near the peaks. " ) );
m_env2SlopeKnob -> setWhatsThis( tr( "The slope knob controls the curve or shape of the envelope. A value of 0 creates straight rises and falls. "
"Negative values create curves that start slowly, peak quickly and fall of slowly again. "
"Positive values create curves that start and end quickly, and stay longer near the peaks. " ) );
return( view );
}

View File

@@ -486,18 +486,18 @@ void NesObject::updatePitch()
NesInstrument::NesInstrument( InstrumentTrack * instrumentTrack ) :
Instrument( instrumentTrack, &nes_plugin_descriptor ),
m_ch1Enabled( true, this ),
m_ch1Crs( 0.f, -24.f, 24.f, 1.f, this, tr( "Channel 1 Coarse detune" ) ),
m_ch1Volume( 15.f, 0.f, 15.f, 1.f, this, tr( "Channel 1 Volume" ) ),
m_ch1Crs( 0.f, -24.f, 24.f, 1.f, this, tr( "Channel 1 coarse detune" ) ),
m_ch1Volume( 15.f, 0.f, 15.f, 1.f, this, tr( "Channel 1 volume" ) ),
m_ch1EnvEnabled( false, this ),
m_ch1EnvLooped( false, this ),
m_ch1EnvLen( 0.f, 0.f, 15.f, 1.f, this, tr( "Channel 1 Envelope length" ) ),
m_ch1EnvLen( 0.f, 0.f, 15.f, 1.f, this, tr( "Channel 1 envelope length" ) ),
m_ch1DutyCycle( 0, 0, 3, this, tr( "Channel 1 Duty cycle" ) ),
m_ch1DutyCycle( 0, 0, 3, this, tr( "Channel 1 duty cycle" ) ),
m_ch1SweepEnabled( false, this ),
m_ch1SweepAmt( 0.f, -7.f, 7.f, 1.f, this, tr( "Channel 1 Sweep amount" ) ),
m_ch1SweepRate( 0.f, 0.f, 7.f, 1.f, this, tr( "Channel 1 Sweep rate" ) ),
m_ch1SweepAmt( 0.f, -7.f, 7.f, 1.f, this, tr( "Channel 1 sweep amount" ) ),
m_ch1SweepRate( 0.f, 0.f, 7.f, 1.f, this, tr( "Channel 1 sweep rate" ) ),
m_ch2Enabled( true, this ),
m_ch2Crs( 0.f, -24.f, 24.f, 1.f, this, tr( "Channel 2 Coarse detune" ) ),
@@ -505,32 +505,32 @@ NesInstrument::NesInstrument( InstrumentTrack * instrumentTrack ) :
m_ch2EnvEnabled( false, this ),
m_ch2EnvLooped( false, this ),
m_ch2EnvLen( 0.f, 0.f, 15.f, 1.f, this, tr( "Channel 2 Envelope length" ) ),
m_ch2EnvLen( 0.f, 0.f, 15.f, 1.f, this, tr( "Channel 2 envelope length" ) ),
m_ch2DutyCycle( 2, 0, 3, this, tr( "Channel 2 Duty cycle" ) ),
m_ch2DutyCycle( 2, 0, 3, this, tr( "Channel 2 duty cycle" ) ),
m_ch2SweepEnabled( false, this ),
m_ch2SweepAmt( 0.f, -7.f, 7.f, 1.f, this, tr( "Channel 2 Sweep amount" ) ),
m_ch2SweepRate( 0.f, 0.f, 7.f, 1.f, this, tr( "Channel 2 Sweep rate" ) ),
m_ch2SweepAmt( 0.f, -7.f, 7.f, 1.f, this, tr( "Channel 2 sweep amount" ) ),
m_ch2SweepRate( 0.f, 0.f, 7.f, 1.f, this, tr( "Channel 2 sweep rate" ) ),
//channel 3
m_ch3Enabled( true, this ),
m_ch3Crs( 0.f, -24.f, 24.f, 1.f, this, tr( "Channel 3 Coarse detune" ) ),
m_ch3Volume( 15.f, 0.f, 15.f, 1.f, this, tr( "Channel 3 Volume" ) ),
m_ch3Crs( 0.f, -24.f, 24.f, 1.f, this, tr( "Channel 3 coarse detune" ) ),
m_ch3Volume( 15.f, 0.f, 15.f, 1.f, this, tr( "Channel 3 volume" ) ),
//channel 4
m_ch4Enabled( true, this ),
m_ch4Volume( 15.f, 0.f, 15.f, 1.f, this, tr( "Channel 4 Volume" ) ),
m_ch4Volume( 15.f, 0.f, 15.f, 1.f, this, tr( "Channel 4 volume" ) ),
m_ch4EnvEnabled( false, this ),
m_ch4EnvLooped( false, this ),
m_ch4EnvLen( 0.f, 0.f, 15.f, 1.f, this, tr( "Channel 4 Envelope length" ) ),
m_ch4EnvLen( 0.f, 0.f, 15.f, 1.f, this, tr( "Channel 4 envelope length" ) ),
m_ch4NoiseMode( false, this ),
m_ch4NoiseFreqMode( false, this ),
m_ch4NoiseFreq( 0.f, 0.f, 15.f, 1.f, this, tr( "Channel 4 Noise frequency" ) ),
m_ch4NoiseFreq( 0.f, 0.f, 15.f, 1.f, this, tr( "Channel 4 noise frequency" ) ),
m_ch4Sweep( 0.f, -7.f, 7.f, 1.f, this, tr( "Channel 4 Noise frequency sweep" ) ),
m_ch4Sweep( 0.f, -7.f, 7.f, 1.f, this, tr( "Channel 4 noise frequency sweep" ) ),
m_ch4NoiseQuantize( true, this ),
//master
@@ -842,7 +842,7 @@ NesInstrumentView::NesInstrumentView( Instrument * instrument, QWidget * parent
//master
makeknob( m_masterVolKnob, KNOB_X4, KNOB_Y3, tr( "Master Volume" ), "", "" )
makeknob( m_masterVolKnob, KNOB_X4, KNOB_Y3, tr( "Master volume" ), "", "" )
makeknob( m_vibratoKnob, KNOB_X5, KNOB_Y3, tr( "Vibrato" ), "", "" )
}

View File

@@ -435,7 +435,6 @@ organicInstrumentView::organicInstrumentView( Instrument * _instrument,
m_fx1Knob->setFixedSize( 37, 47 );
m_fx1Knob->setHintText( tr( "Distortion:" ), QString() );
m_fx1Knob->setObjectName( "fx1Knob" );
m_fx1Knob->setWhatsThis( tr( "The distortion knob adds distortion to the output of the instrument. " ) );
// setup volume-knob
m_volKnob = new organicKnob( this );
@@ -444,8 +443,6 @@ organicInstrumentView::organicInstrumentView( Instrument * _instrument,
m_volKnob->setFixedSize( 37, 47 );
m_volKnob->setHintText( tr( "Volume:" ), "%" );
m_volKnob->setObjectName( "volKnob" );
m_volKnob->setWhatsThis( tr( "The volume knob controls the volume of the output of the instrument. "
"It is cumulative with the instrument window's volume control. " ) );
// randomise
m_randBtn = new PixmapButton( this, tr( "Randomise" ) );
@@ -454,8 +451,6 @@ organicInstrumentView::organicInstrumentView( Instrument * _instrument,
"randomise_pressed" ) );
m_randBtn->setInactiveGraphic( PLUGIN_NAME::getIconPixmap(
"randomise" ) );
m_randBtn->setWhatsThis( tr( "The randomize button randomizes all knobs except the harmonics,"
"main volume and distortion knobs. ") );
connect( m_randBtn, SIGNAL ( clicked() ),
oi, SLOT( randomiseSettings() ) );

View File

@@ -464,11 +464,7 @@ PatmanView::PatmanView( Instrument * _instrument, QWidget * _parent ) :
"select_file" ) );
connect( m_openFileButton, SIGNAL( clicked() ),
this, SLOT( openFile() ) );
ToolTip::add( m_openFileButton, tr( "Open other patch" ) );
m_openFileButton->setWhatsThis(
tr( "Click here to open another patch-file. Loop and Tune "
"settings are not reset." ) );
ToolTip::add( m_openFileButton, tr( "Open patch" ) );
m_loopButton = new PixmapButton( this, tr( "Loop" ) );
m_loopButton->setObjectName("loopButton");
@@ -479,10 +475,6 @@ PatmanView::PatmanView( Instrument * _instrument, QWidget * _parent ) :
m_loopButton->setInactiveGraphic( PLUGIN_NAME::getIconPixmap(
"loop_off" ) );
ToolTip::add( m_loopButton, tr( "Loop mode" ) );
m_loopButton->setWhatsThis(
tr( "Here you can toggle the Loop mode. If enabled, PatMan "
"will use the loop information available in the "
"file." ) );
m_tuneButton = new PixmapButton( this, tr( "Tune" ) );
m_tuneButton->setObjectName("tuneButton");
@@ -493,10 +485,6 @@ PatmanView::PatmanView( Instrument * _instrument, QWidget * _parent ) :
m_tuneButton->setInactiveGraphic( PLUGIN_NAME::getIconPixmap(
"tune_off" ) );
ToolTip::add( m_tuneButton, tr( "Tune mode" ) );
m_tuneButton->setWhatsThis(
tr( "Here you can toggle the Tune mode. If enabled, PatMan "
"will tune the sample to match the note's "
"frequency." ) );
m_displayFilename = tr( "No file selected" );

View File

@@ -64,7 +64,7 @@ PeakControllerEffect::PeakControllerEffect(
Effect( &peakcontrollereffect_plugin_descriptor, _parent, _key ),
m_effectId( rand() ),
m_peakControls( this ),
m_lastSample( 0 ),
m_lastSample( m_peakControls.m_baseModel.value() ), //sets the value to the Peak Controller's Base value (rather than 0 like in previous versions)
m_autoController( NULL )
{
m_autoController = new PeakController( Engine::getSong(), this );

View File

@@ -49,7 +49,7 @@ PeakControllerEffectControlDialog::PeakControllerEffectControlDialog(
m_baseKnob = new Knob( knobBright_26, this );
m_baseKnob->setLabel( tr( "BASE" ) );
m_baseKnob->setModel( &_controls->m_baseModel );
m_baseKnob->setHintText( tr( "Base amount:" ) , "" );
m_baseKnob->setHintText( tr( "Base:" ) , "" );
m_amountKnob = new Knob( knobBright_26, this );
m_amountKnob->setLabel( tr( "AMNT" ) );
@@ -59,7 +59,7 @@ PeakControllerEffectControlDialog::PeakControllerEffectControlDialog(
m_amountMultKnob = new Knob( knobBright_26, this );
m_amountMultKnob->setLabel( tr( "MULT" ) );
m_amountMultKnob->setModel( &_controls->m_amountMultModel );
m_amountMultKnob->setHintText( tr( "Amount Multiplicator:" ) , "" );
m_amountMultKnob->setHintText( tr( "Amount multiplicator:" ) , "" );
m_attackKnob = new Knob( knobBright_26, this );
m_attackKnob->setLabel( tr( "ATCK" ) );
@@ -76,10 +76,10 @@ PeakControllerEffectControlDialog::PeakControllerEffectControlDialog(
m_tresholdKnob->setModel( &_controls->m_tresholdModel );
m_tresholdKnob->setHintText( tr( "Treshold:" ) , "" );
m_muteLed = new LedCheckBox( "Mute Effect", this );
m_muteLed = new LedCheckBox( tr( "Mute output" ), this );
m_muteLed->setModel( &_controls->m_muteModel );
m_absLed = new LedCheckBox( "Absolute Value", this );
m_absLed = new LedCheckBox( tr( "Absolute value" ), this );
m_absLed->setModel( &_controls->m_absModel );
QVBoxLayout * mainLayout = new QVBoxLayout();

View File

@@ -42,8 +42,8 @@ PeakControllerEffectControls( PeakControllerEffect * _eff ) :
m_decayModel( 0, 0, 0.999, 0.001, this, tr( "Release" ) ),
m_tresholdModel( 0, 0, 1.0, 0.001, this, tr( "Treshold" ) ),
m_muteModel( false, this, tr( "Mute output" ) ),
m_absModel( true, this, tr("Abs Value") ),
m_amountMultModel( 1.0, 0, 32, 0.2, this, tr("Amount Multiplicator") )
m_absModel( true, this, tr("Absolute value") ),
m_amountMultModel( 1.0, 0, 32, 0.2, this, tr("Amount multiplicator") )
{
}

View File

@@ -99,15 +99,15 @@ sf2Instrument::sf2Instrument( InstrumentTrack * _instrument_track ) :
m_patchNum( 0, 0, 127, this, tr("Patch") ),
m_gain( 1.0f, 0.0f, 5.0f, 0.01f, this, tr( "Gain" ) ),
m_reverbOn( false, this, tr( "Reverb" ) ),
m_reverbRoomSize( FLUID_REVERB_DEFAULT_ROOMSIZE, 0, 1.0, 0.01f, this, tr( "Reverb Roomsize" ) ),
m_reverbDamping( FLUID_REVERB_DEFAULT_DAMP, 0, 1.0, 0.01, this, tr( "Reverb Damping" ) ),
m_reverbWidth( FLUID_REVERB_DEFAULT_WIDTH, 0, 1.0, 0.01f, this, tr( "Reverb Width" ) ),
m_reverbLevel( FLUID_REVERB_DEFAULT_LEVEL, 0, 1.0, 0.01f, this, tr( "Reverb Level" ) ),
m_reverbRoomSize( FLUID_REVERB_DEFAULT_ROOMSIZE, 0, 1.0, 0.01f, this, tr( "Reverb room size" ) ),
m_reverbDamping( FLUID_REVERB_DEFAULT_DAMP, 0, 1.0, 0.01, this, tr( "Reverb damping" ) ),
m_reverbWidth( FLUID_REVERB_DEFAULT_WIDTH, 0, 1.0, 0.01f, this, tr( "Reverb width" ) ),
m_reverbLevel( FLUID_REVERB_DEFAULT_LEVEL, 0, 1.0, 0.01f, this, tr( "Reverb level" ) ),
m_chorusOn( false, this, tr( "Chorus" ) ),
m_chorusNum( FLUID_CHORUS_DEFAULT_N, 0, 10.0, 1.0, this, tr( "Chorus Lines" ) ),
m_chorusLevel( FLUID_CHORUS_DEFAULT_LEVEL, 0, 10.0, 0.01, this, tr( "Chorus Level" ) ),
m_chorusSpeed( FLUID_CHORUS_DEFAULT_SPEED, 0.29, 5.0, 0.01, this, tr( "Chorus Speed" ) ),
m_chorusDepth( FLUID_CHORUS_DEFAULT_DEPTH, 0, 46.0, 0.05, this, tr( "Chorus Depth" ) )
m_chorusNum( FLUID_CHORUS_DEFAULT_N, 0, 10.0, 1.0, this, tr( "Chorus voices" ) ),
m_chorusLevel( FLUID_CHORUS_DEFAULT_LEVEL, 0, 10.0, 0.01, this, tr( "Chorus level" ) ),
m_chorusSpeed( FLUID_CHORUS_DEFAULT_SPEED, 0.29, 5.0, 0.01, this, tr( "Chorus speed" ) ),
m_chorusDepth( FLUID_CHORUS_DEFAULT_DEPTH, 0, 46.0, 0.05, this, tr( "Chorus depth" ) )
{
for( int i = 0; i < 128; ++i )
{
@@ -851,9 +851,7 @@ sf2InstrumentView::sf2InstrumentView( Instrument * _instrument, QWidget * _paren
connect( m_fileDialogButton, SIGNAL( clicked() ), this, SLOT( showFileDialog() ) );
ToolTip::add( m_fileDialogButton, tr( "Open other SoundFont file" ) );
m_fileDialogButton->setWhatsThis( tr( "Click here to open another SF2 file" ) );
ToolTip::add( m_fileDialogButton, tr( "Open SoundFont file" ) );
// Patch Button
m_patchDialogButton = new PixmapButton( this );
@@ -865,7 +863,7 @@ sf2InstrumentView::sf2InstrumentView( Instrument * _instrument, QWidget * _paren
connect( m_patchDialogButton, SIGNAL( clicked() ), this, SLOT( showPatchDialog() ) );
ToolTip::add( m_patchDialogButton, tr( "Choose the patch" ) );
ToolTip::add( m_patchDialogButton, tr( "Choose patch" ) );
// LCDs
@@ -900,7 +898,7 @@ sf2InstrumentView::sf2InstrumentView( Instrument * _instrument, QWidget * _paren
// Gain
m_gainKnob = new sf2Knob( this );
m_gainKnob->setHintText( tr("Gain"), "" );
m_gainKnob->setHintText( tr("Gain:"), "" );
m_gainKnob->move( 86, 55 );
// vl->addWidget( m_gainKnob );
@@ -914,26 +912,22 @@ sf2InstrumentView::sf2InstrumentView( Instrument * _instrument, QWidget * _paren
m_reverbButton->setActiveGraphic( PLUGIN_NAME::getIconPixmap( "reverb_on" ) );
m_reverbButton->setInactiveGraphic( PLUGIN_NAME::getIconPixmap( "reverb_off" ) );
ToolTip::add( m_reverbButton, tr( "Apply reverb (if supported)" ) );
m_reverbButton->setWhatsThis(
tr( "This button enables the reverb effect. "
"This is useful for cool effects, but only works on "
"files that support it." ) );
m_reverbRoomSizeKnob = new sf2Knob( this );
m_reverbRoomSizeKnob->setHintText( tr("Reverb Roomsize:"), "" );
m_reverbRoomSizeKnob->setHintText( tr("Room size:"), "" );
m_reverbRoomSizeKnob->move( 93, 160 );
m_reverbDampingKnob = new sf2Knob( this );
m_reverbDampingKnob->setHintText( tr("Reverb Damping:"), "" );
m_reverbDampingKnob->setHintText( tr("Damping:"), "" );
m_reverbDampingKnob->move( 130, 160 );
m_reverbWidthKnob = new sf2Knob( this );
m_reverbWidthKnob->setHintText( tr("Reverb Width:"), "" );
m_reverbWidthKnob->setHintText( tr("Width:"), "" );
m_reverbWidthKnob->move( 167, 160 );
m_reverbLevelKnob = new sf2Knob( this );
m_reverbLevelKnob->setHintText( tr("Reverb Level:"), "" );
m_reverbLevelKnob->setHintText( tr("Level:"), "" );
m_reverbLevelKnob->move( 204, 160 );
/* hl->addWidget( m_reverbOnLed );
@@ -954,25 +948,21 @@ sf2InstrumentView::sf2InstrumentView( Instrument * _instrument, QWidget * _paren
m_chorusButton->setActiveGraphic( PLUGIN_NAME::getIconPixmap( "chorus_on" ) );
m_chorusButton->setInactiveGraphic( PLUGIN_NAME::getIconPixmap( "chorus_off" ) );
ToolTip::add( m_chorusButton, tr( "Apply chorus (if supported)" ) );
m_chorusButton->setWhatsThis(
tr( "This button enables the chorus effect. "
"This is useful for cool echo effects, but only works on "
"files that support it." ) );
m_chorusNumKnob = new sf2Knob( this );
m_chorusNumKnob->setHintText( tr("Chorus Lines:"), "" );
m_chorusNumKnob->setHintText( tr("Voices:"), "" );
m_chorusNumKnob->move( 93, 206 );
m_chorusLevelKnob = new sf2Knob( this );
m_chorusLevelKnob->setHintText( tr("Chorus Level:"), "" );
m_chorusLevelKnob->setHintText( tr("Level:"), "" );
m_chorusLevelKnob->move( 130 , 206 );
m_chorusSpeedKnob = new sf2Knob( this );
m_chorusSpeedKnob->setHintText( tr("Chorus Speed:"), "" );
m_chorusSpeedKnob->setHintText( tr("Speed:"), "" );
m_chorusSpeedKnob->move( 167 , 206 );
m_chorusDepthKnob = new sf2Knob( this );
m_chorusDepthKnob->setHintText( tr("Chorus Depth:"), "" );
m_chorusDepthKnob->setHintText( tr("Depth:"), "" );
m_chorusDepthKnob->move( 204 , 206 );
/*
hl->addWidget( m_chorusOnLed );

View File

@@ -353,7 +353,7 @@ sfxrInstrument::sfxrInstrument( InstrumentTrack * _instrument_track ) :
m_lpFilResoModel(0.0f, this, "LP Filter Resonance"),
m_hpFilCutModel(0.0f, this, "HP Filter Cutoff"),
m_hpFilCutSweepModel(0.0f, this, "HP Filter Cutoff Sweep"),
m_waveFormModel( SQR_WAVE, 0, WAVES_NUM-1, this, tr( "Wave Form" ) )
m_waveFormModel( SQR_WAVE, 0, WAVES_NUM-1, this, tr( "Wave" ) )
{
}

View File

@@ -55,14 +55,14 @@ unsigned char sidorder[] =
0x0c,0x0d,0x09,0x0a,0x07,0x08,0x0b,
0x13,0x14,0x10,0x11,0x0e,0x0f,0x12};
static const char *attackTime[16] = { "2 mS", "8 mS", "16 mS", "24 mS",
"38 mS", "56 mS", "68 mS", "80 mS",
"100 mS", "250 mS", "500 mS", "800 mS",
"1 S", "3 S", "5 S", "8 S" };
static const char *decRelTime[16] = { "6 mS", "24 mS", "48 mS", "72 mS",
"114 mS", "168 mS", "204 mS", "240 mS",
"300 mS", "750 mS", "1.5 S", "2.4 S",
"3 S", "9 S", "15 S", "24 S" };
static const char *attackTime[16] = { "2 ms", "8 ms", "16 ms", "24 ms",
"38 ms", "56 ms", "68 ms", "80 ms",
"100 ms", "250 ms", "500 ms", "800 ms",
"1 s", "3 s", "5 s", "8 s" };
static const char *decRelTime[16] = { "6 ms", "24 ms", "48 ms", "72 ms",
"114 ms", "168 ms", "204 ms", "240 ms",
"300 ms", "750 ms", "1.5 s", "2.4 s",
"3 s", "9 s", "15 s", "24 s" };
// release time time in ms
static const int relTime[16] = { 6, 24, 48, 72, 114, 168, 204, 240, 300, 750,
1500, 2400, 3000, 9000, 15000, 24000 };
@@ -121,7 +121,7 @@ voiceObject::~voiceObject()
sidInstrument::sidInstrument( InstrumentTrack * _instrument_track ) :
Instrument( _instrument_track, &sid_plugin_descriptor ),
// filter
m_filterFCModel( 1024.0f, 0.0f, 2047.0f, 1.0f, this, tr( "Cutoff" ) ),
m_filterFCModel( 1024.0f, 0.0f, 2047.0f, 1.0f, this, tr( "Cutoff frequency" ) ),
m_filterResonanceModel( 8.0f, 0.0f, 15.0f, 1.0f, this, tr( "Resonance" ) ),
m_filterModeModel( LowPass, 0, NumFilterTypes-1, this, tr( "Filter type" )),
@@ -497,26 +497,26 @@ sidInstrumentView::sidInstrumentView( Instrument * _instrument,
m_resKnob->move( 7 + 28, 64 );
m_cutKnob = new sidKnob( this );
m_cutKnob->setHintText( tr( "Cutoff frequency:" ), "Hz" );
m_cutKnob->setHintText( tr( "Cutoff frequency:" ), " Hz" );
m_cutKnob->move( 7 + 2*28, 64 );
PixmapButton * hp_btn = new PixmapButton( this, NULL );
hp_btn->move( 140, 77 );
hp_btn->setActiveGraphic( PLUGIN_NAME::getIconPixmap( "hpred" ) );
hp_btn->setInactiveGraphic( PLUGIN_NAME::getIconPixmap( "hp" ) );
ToolTip::add( hp_btn, tr( "High-Pass filter ") );
ToolTip::add( hp_btn, tr( "High-pass filter ") );
PixmapButton * bp_btn = new PixmapButton( this, NULL );
bp_btn->move( 164, 77 );
bp_btn->setActiveGraphic( PLUGIN_NAME::getIconPixmap( "bpred" ) );
bp_btn->setInactiveGraphic( PLUGIN_NAME::getIconPixmap( "bp" ) );
ToolTip::add( bp_btn, tr( "Band-Pass filter ") );
ToolTip::add( bp_btn, tr( "Band-pass filter ") );
PixmapButton * lp_btn = new PixmapButton( this, NULL );
lp_btn->move( 185, 77 );
lp_btn->setActiveGraphic( PLUGIN_NAME::getIconPixmap( "lpred" ) );
lp_btn->setInactiveGraphic( PLUGIN_NAME::getIconPixmap( "lp" ) );
ToolTip::add( lp_btn, tr( "Low-Pass filter ") );
ToolTip::add( lp_btn, tr( "Low-pass filter ") );
m_passBtnGrp = new automatableButtonGroup( this );
m_passBtnGrp->addButton( hp_btn );
@@ -528,7 +528,7 @@ sidInstrumentView::sidInstrumentView( Instrument * _instrument,
m_offButton->move( 207, 77 );
m_offButton->setActiveGraphic( PLUGIN_NAME::getIconPixmap( "3offred" ) );
m_offButton->setInactiveGraphic( PLUGIN_NAME::getIconPixmap( "3off" ) );
ToolTip::add( m_offButton, tr( "Voice3 Off ") );
ToolTip::add( m_offButton, tr( "Voice 3 off ") );
PixmapButton * mos6581_btn = new PixmapButton( this, NULL );
mos6581_btn->move( 170, 59 );
@@ -551,41 +551,26 @@ sidInstrumentView::sidInstrumentView( Instrument * _instrument,
Knob *ak = new sidKnob( this );
ak->setHintText( tr("Attack:"), "" );
ak->move( 7, 114 + i*50 );
ak->setWhatsThis( tr ( "Attack rate determines how rapidly the output "
"of Voice %1 rises from zero to peak amplitude." ).arg( i+1 ) );
Knob *dk = new sidKnob( this );
dk->setHintText( tr("Decay:") , "" );
dk->move( 7 + 28, 114 + i*50 );
dk->setWhatsThis( tr ( "Decay rate determines how rapidly the output "
"falls from the peak amplitude to the selected Sustain level." ) );
Knob *sk = new sidKnob( this );
sk->setHintText( tr("Sustain:"), "" );
sk->move( 7 + 2*28, 114 + i*50 );
sk->setWhatsThis( tr ( "Output of Voice %1 will remain at the selected "
"Sustain amplitude as long as the note is held." ).arg( i+1 ) );
Knob *rk = new sidKnob( this );
rk->setHintText( tr("Release:"), "" );
rk->move( 7 + 3*28, 114 + i*50 );
rk->setWhatsThis( tr ( "The output of of Voice %1 will fall from "
"Sustain amplitude to zero amplitude at the selected Release "
"rate." ).arg( i+1 ) );
Knob *pwk = new sidKnob( this );
pwk->setHintText( tr("Pulse Width:"), "" );
pwk->move( 7 + 4*28, 114 + i*50 );
pwk->setWhatsThis( tr ( "The Pulse Width resolution allows the width "
"to be smoothly swept with no discernable stepping. The Pulse "
"waveform on Oscillator %1 must be selected to have any audible"
" effect." ).arg( i+1 ) );
Knob *crsk = new sidKnob( this );
crsk->setHintText( tr("Coarse:"), " semitones" );
crsk->move( 147, 114 + i*50 );
crsk->setWhatsThis( tr ( "The Coarse detuning allows to detune Voice "
"%1 one octave up or down." ).arg( i+1 ) );
PixmapButton * pulse_btn = new PixmapButton( this, NULL );
pulse_btn->move( 187, 101 + i*50 );
@@ -593,7 +578,7 @@ sidInstrumentView::sidInstrumentView( Instrument * _instrument,
PLUGIN_NAME::getIconPixmap( "pulsered" ) );
pulse_btn->setInactiveGraphic(
PLUGIN_NAME::getIconPixmap( "pulse" ) );
ToolTip::add( pulse_btn, tr( "Pulse Wave" ) );
ToolTip::add( pulse_btn, tr( "Pulse wave" ) );
PixmapButton * triangle_btn = new PixmapButton( this, NULL );
triangle_btn->move( 168, 101 + i*50 );
@@ -601,7 +586,7 @@ sidInstrumentView::sidInstrumentView( Instrument * _instrument,
PLUGIN_NAME::getIconPixmap( "trianglered" ) );
triangle_btn->setInactiveGraphic(
PLUGIN_NAME::getIconPixmap( "triangle" ) );
ToolTip::add( triangle_btn, tr( "Triangle Wave" ) );
ToolTip::add( triangle_btn, tr( "Triangle wave" ) );
PixmapButton * saw_btn = new PixmapButton( this, NULL );
saw_btn->move( 207, 101 + i*50 );
@@ -609,7 +594,7 @@ sidInstrumentView::sidInstrumentView( Instrument * _instrument,
PLUGIN_NAME::getIconPixmap( "sawred" ) );
saw_btn->setInactiveGraphic(
PLUGIN_NAME::getIconPixmap( "saw" ) );
ToolTip::add( saw_btn, tr( "SawTooth" ) );
ToolTip::add( saw_btn, tr( "Saw wave" ) );
PixmapButton * noise_btn = new PixmapButton( this, NULL );
noise_btn->move( 226, 101 + i*50 );
@@ -627,8 +612,6 @@ sidInstrumentView::sidInstrumentView( Instrument * _instrument,
wfbg->addButton( saw_btn );
wfbg->addButton( noise_btn );
int syncRingWidth[] = { 3, 1, 2 };
PixmapButton * sync_btn = new PixmapButton( this, NULL );
sync_btn->setCheckable( true );
sync_btn->move( 207, 134 + i*50 );
@@ -637,10 +620,6 @@ sidInstrumentView::sidInstrumentView( Instrument * _instrument,
sync_btn->setInactiveGraphic(
PLUGIN_NAME::getIconPixmap( "sync" ) );
ToolTip::add( sync_btn, tr( "Sync" ) );
sync_btn->setWhatsThis( tr ( "Sync synchronizes the fundamental "
"frequency of Oscillator %1 with the fundamental frequency of "
"Oscillator %2 producing \"Hard Sync\" effects." ).arg( i+1 )
.arg( syncRingWidth[i] ) );
PixmapButton * ringMod_btn = new PixmapButton( this, NULL );
ringMod_btn->setCheckable( true );
@@ -649,11 +628,7 @@ sidInstrumentView::sidInstrumentView( Instrument * _instrument,
PLUGIN_NAME::getIconPixmap( "ringred" ) );
ringMod_btn->setInactiveGraphic(
PLUGIN_NAME::getIconPixmap( "ring" ) );
ToolTip::add( ringMod_btn, tr( "Ring-Mod" ) );
ringMod_btn->setWhatsThis( tr ( "Ring-mod replaces the Triangle "
"Waveform output of Oscillator %1 with a \"Ring Modulated\" "
"combination of Oscillators %1 and %2." ).arg( i+1 )
.arg( syncRingWidth[i] ) );
ToolTip::add( ringMod_btn, tr( "Ring modulation" ) );
PixmapButton * filter_btn = new PixmapButton( this, NULL );
filter_btn->setCheckable( true );
@@ -663,10 +638,6 @@ sidInstrumentView::sidInstrumentView( Instrument * _instrument,
filter_btn->setInactiveGraphic(
PLUGIN_NAME::getIconPixmap( "filter" ) );
ToolTip::add( filter_btn, tr( "Filtered" ) );
filter_btn->setWhatsThis( tr ( "When Filtered is on, Voice %1 will be "
"processed through the Filter. When Filtered is off, Voice %1 "
"appears directly at the output, and the Filter has no effect on "
"it." ).arg( i+1 ) );
PixmapButton * test_btn = new PixmapButton( this, NULL );
test_btn->setCheckable( true );
@@ -676,8 +647,6 @@ sidInstrumentView::sidInstrumentView( Instrument * _instrument,
test_btn->setInactiveGraphic(
PLUGIN_NAME::getIconPixmap( "test" ) );
ToolTip::add( test_btn, tr( "Test" ) );
test_btn->setWhatsThis( tr ( "Test, when set, resets and locks "
"Oscillator %1 at zero until Test is turned off." ).arg( i+1 ) );
m_voiceKnobs[i] = voiceKnobs( ak, dk, sk, rk, pwk, crsk, wfbg,
sync_btn, ringMod_btn, filter_btn, test_btn );
@@ -713,7 +682,7 @@ void sidInstrumentView::updateKnobHint()
ToolTip::add( m_voiceKnobs[i].m_relKnob,
decRelTime[(int)k->m_voice[i]->m_releaseModel.value()]);
m_voiceKnobs[i].m_pwKnob->setHintText( tr( "Pulse Width:" )+ " ", " (" +
m_voiceKnobs[i].m_pwKnob->setHintText( tr( "Pulse width:" )+ " ", " (" +
QString::number( (double)k->m_voice[i]->
m_pulseWidthModel.value() / 40.95 ) + "%)" );
ToolTip::add( m_voiceKnobs[i].m_pwKnob,
@@ -722,9 +691,9 @@ void sidInstrumentView::updateKnobHint()
}
m_cutKnob->setHintText( tr( "Cutoff frequency:" ) + " ", " (" +
QString::number ( (int) ( 9970.0 / 2047.0 *
(double)k->m_filterFCModel.value() + 30.0 ) ) + "Hz)" );
(double)k->m_filterFCModel.value() + 30.0 ) ) + " Hz)" );
ToolTip::add( m_cutKnob, QString::number( (int) ( 9970.0 / 2047.0 *
(double)k->m_filterFCModel.value() + 30.0 ) ) + "Hz" );
(double)k->m_filterFCModel.value() + 30.0 ) ) + " Hz" );
}

View File

@@ -39,8 +39,8 @@ stereoEnhancerControlDialog::stereoEnhancerControlDialog(
Knob * widthKnob = new Knob( knobBright_26, this );
widthKnob->setModel( &_controls->m_widthModel );
widthKnob->setLabel( tr( "WIDE" ) );
widthKnob->setHintText( tr( "Width:" ) , "samples" );
widthKnob->setLabel( tr( "WIDTH" ) );
widthKnob->setHintText( tr( "Width:" ) , " samples" );
l->addWidget( widthKnob );

View File

@@ -67,13 +67,13 @@ malletsInstrument::malletsInstrument( InstrumentTrack * _instrument_track ):
Instrument( _instrument_track, &malletsstk_plugin_descriptor ),
m_hardnessModel(64.0f, 0.0f, 128.0f, 0.1f, this, tr( "Hardness" )),
m_positionModel(64.0f, 0.0f, 64.0f, 0.1f, this, tr( "Position" )),
m_vibratoGainModel(0.0f, 0.0f, 128.0f, 0.1f, this, tr( "Vibrato Gain" )),
m_vibratoFreqModel(0.0f, 0.0f, 128.0f, 0.1f, this, tr( "Vibrato Freq" )),
m_stickModel(0.0f, 0.0f, 128.0f, 0.1f, this, tr( "Stick Mix" )),
m_vibratoGainModel(0.0f, 0.0f, 128.0f, 0.1f, this, tr( "Vibrato gain" )),
m_vibratoFreqModel(0.0f, 0.0f, 128.0f, 0.1f, this, tr( "Vibrato frequency" )),
m_stickModel(0.0f, 0.0f, 128.0f, 0.1f, this, tr( "Stick mix" )),
m_modulatorModel(64.0f, 0.0f, 128.0f, 0.1f, this, tr( "Modulator" )),
m_crossfadeModel(64.0f, 0.0f, 128.0f, 0.1f, this, tr( "Crossfade" )),
m_lfoSpeedModel(64.0f, 0.0f, 128.0f, 0.1f, this, tr( "LFO Speed" )),
m_lfoDepthModel(64.0f, 0.0f, 128.0f, 0.1f, this, tr( "LFO Depth" )),
m_lfoSpeedModel(64.0f, 0.0f, 128.0f, 0.1f, this, tr( "LFO speed" )),
m_lfoDepthModel(64.0f, 0.0f, 128.0f, 0.1f, this, tr( "LFO depth" )),
m_adsrModel(64.0f, 0.0f, 128.0f, 0.1f, this, tr( "ADSR" )),
m_pressureModel(64.0f, 0.1f, 128.0f, 0.1f, this, tr( "Pressure" )),
m_motionModel(64.0f, 0.0f, 128.0f, 0.1f, this, tr( "Motion" )),
@@ -94,31 +94,31 @@ malletsInstrument::malletsInstrument( InstrumentTrack * _instrument_track ):
m_scalers.append( 4.0 );
m_presetsModel.addItem( tr( "Agogo" ) );
m_scalers.append( 5.0 );
m_presetsModel.addItem( tr( "Wood1" ) );
m_presetsModel.addItem( tr( "Wood 1" ) );
m_scalers.append( 4.0 );
m_presetsModel.addItem( tr( "Reso" ) );
m_scalers.append( 2.5 );
m_presetsModel.addItem( tr( "Wood2" ) );
m_presetsModel.addItem( tr( "Wood 2" ) );
m_scalers.append( 5.0 );
m_presetsModel.addItem( tr( "Beats" ) );
m_scalers.append( 20.0 );
m_presetsModel.addItem( tr( "Two Fixed" ) );
m_presetsModel.addItem( tr( "Two fixed" ) );
m_scalers.append( 5.0 );
m_presetsModel.addItem( tr( "Clump" ) );
m_scalers.append( 4.0 );
// TubeBell
m_presetsModel.addItem( tr( "Tubular Bells" ) );
m_presetsModel.addItem( tr( "Tubular bells" ) );
m_scalers.append( 1.8 );
// BandedWG
m_presetsModel.addItem( tr( "Uniform Bar" ) );
m_presetsModel.addItem( tr( "Uniform bar" ) );
m_scalers.append( 25.0 );
m_presetsModel.addItem( tr( "Tuned Bar" ) );
m_presetsModel.addItem( tr( "Tuned bar" ) );
m_scalers.append( 10.0 );
m_presetsModel.addItem( tr( "Glass" ) );
m_scalers.append( 16.0 );
m_presetsModel.addItem( tr( "Tibetan Bowl" ) );
m_presetsModel.addItem( tr( "Tibetan bowl" ) );
m_scalers.append( 7.0 );
}
@@ -460,19 +460,19 @@ QWidget * malletsInstrumentView::setupModalBarControls( QWidget * _parent )
m_positionKnob->setHintText( tr( "Position:" ), "" );
m_vibratoGainKnob = new Knob( knobVintage_32, widget );
m_vibratoGainKnob->setLabel( tr( "Vib Gain" ) );
m_vibratoGainKnob->setLabel( tr( "Vibrato gain" ) );
m_vibratoGainKnob->move( 30, 140 );
m_vibratoGainKnob->setHintText( tr( "Vib Gain:" ), "" );
m_vibratoGainKnob->setHintText( tr( "Vibrato gain:" ), "" );
m_vibratoFreqKnob = new Knob( knobVintage_32, widget );
m_vibratoFreqKnob->setLabel( tr( "Vib Freq" ) );
m_vibratoFreqKnob->setLabel( tr( "Vibrato frequency" ) );
m_vibratoFreqKnob->move( 110, 140 );
m_vibratoFreqKnob->setHintText( tr( "Vib Freq:" ), "" );
m_vibratoFreqKnob->setHintText( tr( "Vibrato frequency:" ), "" );
m_stickKnob = new Knob( knobVintage_32, widget );
m_stickKnob->setLabel( tr( "Stick Mix" ) );
m_stickKnob->setLabel( tr( "Stick mix" ) );
m_stickKnob->move( 190, 90 );
m_stickKnob->setHintText( tr( "Stick Mix:" ), "" );
m_stickKnob->setHintText( tr( "Stick mix:" ), "" );
return( widget );
}
@@ -496,14 +496,14 @@ QWidget * malletsInstrumentView::setupTubeBellControls( QWidget * _parent )
m_crossfadeKnob->setHintText( tr( "Crossfade:" ), "" );
m_lfoSpeedKnob = new Knob( knobVintage_32, widget );
m_lfoSpeedKnob->setLabel( tr( "LFO Speed" ) );
m_lfoSpeedKnob->setLabel( tr( "LFO speed" ) );
m_lfoSpeedKnob->move( 30, 140 );
m_lfoSpeedKnob->setHintText( tr( "LFO Speed:" ), "" );
m_lfoSpeedKnob->setHintText( tr( "LFO speed:" ), "" );
m_lfoDepthKnob = new Knob( knobVintage_32, widget );
m_lfoDepthKnob->setLabel( tr( "LFO Depth" ) );
m_lfoDepthKnob->setLabel( tr( "LFO depth" ) );
m_lfoDepthKnob->move( 110, 140 );
m_lfoDepthKnob->setHintText( tr( "LFO Depth:" ), "" );
m_lfoDepthKnob->setHintText( tr( "LFO depth:" ), "" );
m_adsrKnob = new Knob( knobVintage_32, widget );
m_adsrKnob->setLabel( tr( "ADSR" ) );

View File

@@ -440,9 +440,7 @@ TripleOscillatorView::TripleOscillatorView( Instrument * _instrument,
"pm_active" ) );
pm_osc1_btn->setInactiveGraphic( PLUGIN_NAME::getIconPixmap(
"pm_inactive" ) );
ToolTip::add( pm_osc1_btn, tr( "Use phase modulation for "
"modulating oscillator 1 with "
"oscillator 2" ) );
ToolTip::add( pm_osc1_btn, tr( "Modulate phase of oscillator 1 by oscillator 2" ) );
PixmapButton * am_osc1_btn = new PixmapButton( this, NULL );
am_osc1_btn->move( mod_x + 35, mod1_y );
@@ -450,9 +448,7 @@ TripleOscillatorView::TripleOscillatorView( Instrument * _instrument,
"am_active" ) );
am_osc1_btn->setInactiveGraphic( PLUGIN_NAME::getIconPixmap(
"am_inactive" ) );
ToolTip::add( am_osc1_btn, tr( "Use amplitude modulation for "
"modulating oscillator 1 with "
"oscillator 2" ) );
ToolTip::add( am_osc1_btn, tr( "Modulate amplitude of oscillator 1 by oscillator 2" ) );
PixmapButton * mix_osc1_btn = new PixmapButton( this, NULL );
mix_osc1_btn->move( mod_x + 70, mod1_y );
@@ -460,7 +456,7 @@ TripleOscillatorView::TripleOscillatorView( Instrument * _instrument,
"mix_active" ) );
mix_osc1_btn->setInactiveGraphic( PLUGIN_NAME::getIconPixmap(
"mix_inactive" ) );
ToolTip::add( mix_osc1_btn, tr( "Mix output of oscillator 1 & 2" ) );
ToolTip::add( mix_osc1_btn, tr( "Mix output of oscillators 1 & 2" ) );
PixmapButton * sync_osc1_btn = new PixmapButton( this, NULL );
sync_osc1_btn->move( mod_x + 105, mod1_y );
@@ -477,9 +473,7 @@ TripleOscillatorView::TripleOscillatorView( Instrument * _instrument,
"fm_active" ) );
fm_osc1_btn->setInactiveGraphic( PLUGIN_NAME::getIconPixmap(
"fm_inactive" ) );
ToolTip::add( fm_osc1_btn, tr( "Use frequency modulation for "
"modulating oscillator 1 with "
"oscillator 2" ) );
ToolTip::add( fm_osc1_btn, tr( "Modulate frequency of oscillator 1 by oscillator 2" ) );
m_mod1BtnGrp = new automatableButtonGroup( this );
m_mod1BtnGrp->addButton( pm_osc1_btn );
@@ -496,9 +490,7 @@ TripleOscillatorView::TripleOscillatorView( Instrument * _instrument,
"pm_active" ) );
pm_osc2_btn->setInactiveGraphic( PLUGIN_NAME::getIconPixmap(
"pm_inactive" ) );
ToolTip::add( pm_osc2_btn, tr( "Use phase modulation for "
"modulating oscillator 2 with "
"oscillator 3" ) );
ToolTip::add( pm_osc2_btn, tr( "Modulate phase of oscillator 2 by oscillator 3" ) );
PixmapButton * am_osc2_btn = new PixmapButton( this, NULL );
am_osc2_btn->move( mod_x + 35, mod2_y );
@@ -506,9 +498,7 @@ TripleOscillatorView::TripleOscillatorView( Instrument * _instrument,
"am_active" ) );
am_osc2_btn->setInactiveGraphic( PLUGIN_NAME::getIconPixmap(
"am_inactive" ) );
ToolTip::add( am_osc2_btn, tr( "Use amplitude modulation for "
"modulating oscillator 2 with "
"oscillator 3" ) );
ToolTip::add( am_osc2_btn, tr( "Modulate amplitude of oscillator 2 by oscillator 3" ) );
PixmapButton * mix_osc2_btn = new PixmapButton( this, NULL );
mix_osc2_btn->move( mod_x + 70, mod2_y );
@@ -516,7 +506,7 @@ TripleOscillatorView::TripleOscillatorView( Instrument * _instrument,
"mix_active" ) );
mix_osc2_btn->setInactiveGraphic( PLUGIN_NAME::getIconPixmap(
"mix_inactive" ) );
ToolTip::add( mix_osc2_btn, tr("Mix output of oscillator 2 & 3" ) );
ToolTip::add( mix_osc2_btn, tr("Mix output of oscillators 2 & 3" ) );
PixmapButton * sync_osc2_btn = new PixmapButton( this, NULL );
sync_osc2_btn->move( mod_x + 105, mod2_y );
@@ -524,8 +514,7 @@ TripleOscillatorView::TripleOscillatorView( Instrument * _instrument,
"sync_active" ) );
sync_osc2_btn->setInactiveGraphic( PLUGIN_NAME::getIconPixmap(
"sync_inactive" ) );
ToolTip::add( sync_osc2_btn, tr( "Synchronize oscillator 2 with "
"oscillator 3" ) );
ToolTip::add( sync_osc2_btn, tr( "Synchronize oscillator 2 with oscillator 3" ) );
PixmapButton * fm_osc2_btn = new PixmapButton( this, NULL );
fm_osc2_btn->move( mod_x + 140, mod2_y );
@@ -533,9 +522,7 @@ TripleOscillatorView::TripleOscillatorView( Instrument * _instrument,
"fm_active" ) );
fm_osc2_btn->setInactiveGraphic( PLUGIN_NAME::getIconPixmap(
"fm_inactive" ) );
ToolTip::add( fm_osc2_btn, tr( "Use frequency modulation for "
"modulating oscillator 2 with "
"oscillator 3" ) );
ToolTip::add( fm_osc2_btn, tr( "Modulate frequency of oscillator 2 by oscillator 3" ) );
m_mod2BtnGrp = new automatableButtonGroup( this );
@@ -557,48 +544,24 @@ TripleOscillatorView::TripleOscillatorView( Instrument * _instrument,
vk->move( 6, knob_y );
vk->setHintText( tr( "Osc %1 volume:" ).arg(
i+1 ), "%" );
vk->setWhatsThis(
tr( "With this knob you can set the volume of "
"oscillator %1. When setting a value of 0 the "
"oscillator is turned off. Otherwise you can "
"hear the oscillator as loud as you set it "
"here.").arg( i+1 ) );
// setup panning-knob
Knob * pk = new TripleOscKnob( this );
pk->move( 35, knob_y );
pk->setHintText( tr("Osc %1 panning:").arg( i + 1 ), "" );
pk->setWhatsThis(
tr( "With this knob you can set the panning of the "
"oscillator %1. A value of -100 means 100% "
"left and a value of 100 moves oscillator-"
"output right.").arg( i+1 ) );
// setup coarse-knob
Knob * ck = new TripleOscKnob( this );
ck->move( 82, knob_y );
ck->setHintText( tr( "Osc %1 coarse detuning:" ).arg( i + 1 )
, " " + tr( "semitones" ) );
ck->setWhatsThis(
tr( "With this knob you can set the coarse detuning of "
"oscillator %1. You can detune the oscillator "
"24 semitones (2 octaves) up and down. This is "
"useful for creating sounds with a chord." ).
arg( i + 1 ) );
// setup knob for left fine-detuning
Knob * flk = new TripleOscKnob( this );
flk->move( 111, knob_y );
flk->setHintText( tr( "Osc %1 fine detuning left:" ).
arg( i + 1 ),
" " + tr( "cents" ) );
flk->setWhatsThis(
tr( "With this knob you can set the fine detuning of "
"oscillator %1 for the left channel. The fine-"
"detuning is ranged between -100 cents and "
"+100 cents. This is useful for creating "
"\"fat\" sounds." ).arg( i + 1 ) );
// setup knob for right fine-detuning
Knob * frk = new TripleOscKnob( this );
@@ -606,13 +569,6 @@ TripleOscillatorView::TripleOscillatorView( Instrument * _instrument,
frk->setHintText( tr( "Osc %1 fine detuning right:" ).
arg( i + 1 ),
" " + tr( "cents" ) );
frk->setWhatsThis(
tr( "With this knob you can set the fine detuning of "
"oscillator %1 for the right channel. The "
"fine-detuning is ranged between -100 cents "
"and +100 cents. This is useful for creating "
"\"fat\" sounds." ).arg( i+1 ) );
// setup phase-offset-knob
Knob * pok = new TripleOscKnob( this );
@@ -620,15 +576,6 @@ TripleOscillatorView::TripleOscillatorView( Instrument * _instrument,
pok->setHintText( tr( "Osc %1 phase-offset:" ).
arg( i + 1 ),
" " + tr( "degrees" ) );
pok->setWhatsThis(
tr( "With this knob you can set the phase-offset of "
"oscillator %1. That means you can move the "
"point within an oscillation where the "
"oscillator begins to oscillate. For example "
"if you have a sine-wave and have a phase-"
"offset of 180 degrees the wave will first go "
"down. It's the same with a square-wave."
).arg( i+1 ) );
// setup stereo-phase-detuning-knob
Knob * spdk = new TripleOscKnob( this );
@@ -636,13 +583,6 @@ TripleOscillatorView::TripleOscillatorView( Instrument * _instrument,
spdk->setHintText( tr("Osc %1 stereo phase-detuning:" ).
arg( i + 1 ),
" " + tr( "degrees" ) );
spdk->setWhatsThis(
tr( "With this knob you can set the stereo phase-"
"detuning of oscillator %1. The stereo phase-"
"detuning specifies the size of the difference "
"between the phase-offset of left and right "
"channel. This is very good for creating wide "
"stereo sounds." ).arg( i+1 ) );
int btn_y = 96 + i * osc_h;
@@ -653,8 +593,7 @@ TripleOscillatorView::TripleOscillatorView( Instrument * _instrument,
sin_wave_btn->setInactiveGraphic( PLUGIN_NAME::getIconPixmap(
"sin_shape_inactive" ) );
ToolTip::add( sin_wave_btn,
tr( "Use a sine-wave for "
"current oscillator." ) );
tr( "Sine wave" ) );
PixmapButton * triangle_wave_btn =
new PixmapButton( this, NULL );
@@ -664,8 +603,7 @@ TripleOscillatorView::TripleOscillatorView( Instrument * _instrument,
triangle_wave_btn->setInactiveGraphic(
PLUGIN_NAME::getIconPixmap( "triangle_shape_inactive" ) );
ToolTip::add( triangle_wave_btn,
tr( "Use a triangle-wave "
"for current oscillator." ) );
tr( "Triangle wave") );
PixmapButton * saw_wave_btn = new PixmapButton( this, NULL );
saw_wave_btn->move( 158, btn_y );
@@ -674,8 +612,7 @@ TripleOscillatorView::TripleOscillatorView( Instrument * _instrument,
saw_wave_btn->setInactiveGraphic( PLUGIN_NAME::getIconPixmap(
"saw_shape_inactive" ) );
ToolTip::add( saw_wave_btn,
tr( "Use a saw-wave for "
"current oscillator." ) );
tr( "Saw wave" ) );
PixmapButton * sqr_wave_btn = new PixmapButton( this, NULL );
sqr_wave_btn->move( 173, btn_y );
@@ -684,8 +621,7 @@ TripleOscillatorView::TripleOscillatorView( Instrument * _instrument,
sqr_wave_btn->setInactiveGraphic( PLUGIN_NAME::getIconPixmap(
"square_shape_inactive" ) );
ToolTip::add( sqr_wave_btn,
tr( "Use a square-wave for "
"current oscillator." ) );
tr( "Square wave" ) );
PixmapButton * moog_saw_wave_btn =
new PixmapButton( this, NULL );
@@ -695,8 +631,7 @@ TripleOscillatorView::TripleOscillatorView( Instrument * _instrument,
moog_saw_wave_btn->setInactiveGraphic(
PLUGIN_NAME::getIconPixmap( "moog_saw_shape_inactive" ) );
ToolTip::add( moog_saw_wave_btn,
tr( "Use a moog-like saw-wave "
"for current oscillator." ) );
tr( "Moog-like saw wave" ) );
PixmapButton * exp_wave_btn = new PixmapButton( this, NULL );
exp_wave_btn->move( 203, btn_y );
@@ -705,8 +640,7 @@ TripleOscillatorView::TripleOscillatorView( Instrument * _instrument,
exp_wave_btn->setInactiveGraphic( PLUGIN_NAME::getIconPixmap(
"exp_shape_inactive" ) );
ToolTip::add( exp_wave_btn,
tr( "Use an exponential "
"wave for current oscillator." ) );
tr( "Exponential wave" ) );
PixmapButton * white_noise_btn = new PixmapButton( this, NULL );
white_noise_btn->move( 218, btn_y );
@@ -715,8 +649,7 @@ TripleOscillatorView::TripleOscillatorView( Instrument * _instrument,
white_noise_btn->setInactiveGraphic(
PLUGIN_NAME::getIconPixmap( "white_noise_shape_inactive" ) );
ToolTip::add( white_noise_btn,
tr( "Use white-noise for "
"current oscillator." ) );
tr( "White noise" ) );
PixmapButton * uwb = new PixmapButton( this, NULL );
uwb->move( 233, btn_y );
@@ -724,8 +657,7 @@ TripleOscillatorView::TripleOscillatorView( Instrument * _instrument,
"usr_shape_active" ) );
uwb->setInactiveGraphic( PLUGIN_NAME::getIconPixmap(
"usr_shape_inactive" ) );
ToolTip::add( uwb, tr( "Use a user-defined "
"waveform for current oscillator." ) );
ToolTip::add( uwb, tr( "User-defined wave" ) );
automatableButtonGroup * wsbg =
new automatableButtonGroup( this );

View File

@@ -263,7 +263,7 @@ void vestigeInstrument::loadFile( const QString & _file )
{
tf = TextFloat::displayMessage(
tr( "Loading plugin" ),
tr( "Please wait while loading VST-plugin..." ),
tr( "Please wait while loading the VST plugin..." ),
PLUGIN_NAME::getIconPixmap( "logo", 24, 24 ), 0 );
}
@@ -413,12 +413,7 @@ VestigeInstrumentView::VestigeInstrumentView( Instrument * _instrument,
"select_file" ) );
connect( m_openPluginButton, SIGNAL( clicked() ), this,
SLOT( openPlugin() ) );
ToolTip::add( m_openPluginButton, tr( "Open other VST-plugin" ) );
m_openPluginButton->setWhatsThis(
tr( "Click here, if you want to open another VST-plugin. After "
"clicking on this button, a file-open-dialog appears "
"and you can select your file." ) );
ToolTip::add( m_openPluginButton, tr( "Open VST plugin" ) );
m_managePluginButton = new PixmapButton( this, "" );
m_managePluginButton->setCheckable( false );
@@ -430,10 +425,7 @@ VestigeInstrumentView::VestigeInstrumentView( Instrument * _instrument,
"controls" ) );
connect( m_managePluginButton, SIGNAL( clicked() ), this,
SLOT( managePlugin() ) );
ToolTip::add( m_managePluginButton, tr( "Control VST-plugin from LMMS host" ) );
m_managePluginButton->setWhatsThis(
tr( "Click here, if you want to control VST-plugin from host." ) );
ToolTip::add( m_managePluginButton, tr( "Control VST plugin from LMMS host" ) );
m_openPresetButton = new PixmapButton( this, "" );
@@ -446,10 +438,7 @@ VestigeInstrumentView::VestigeInstrumentView( Instrument * _instrument,
"project_open", 20, 20 ) );
connect( m_openPresetButton, SIGNAL( clicked() ), this,
SLOT( openPreset() ) );
ToolTip::add( m_openPresetButton, tr( "Open VST-plugin preset" ) );
m_openPresetButton->setWhatsThis(
tr( "Click here, if you want to open another *.fxp, *.fxb VST-plugin preset." ) );
ToolTip::add( m_openPresetButton, tr( "Open VST plugin preset" ) );
m_rolLPresetButton = new PixmapButton( this, "" );
@@ -466,9 +455,6 @@ VestigeInstrumentView::VestigeInstrumentView( Instrument * _instrument,
m_rolLPresetButton->setShortcut( Qt::Key_Minus );
m_rolLPresetButton->setWhatsThis(
tr( "Click here, if you want to switch to another VST-plugin preset program." ) );
m_savePresetButton = new PixmapButton( this, "" );
m_savePresetButton->setCheckable( false );
@@ -482,9 +468,6 @@ VestigeInstrumentView::VestigeInstrumentView( Instrument * _instrument,
SLOT( savePreset() ) );
ToolTip::add( m_savePresetButton, tr( "Save preset" ) );
m_savePresetButton->setWhatsThis(
tr( "Click here, if you want to save current VST-plugin preset program." ) );
m_rolRPresetButton = new PixmapButton( this, "" );
m_rolRPresetButton->setCheckable( false );
@@ -500,10 +483,6 @@ VestigeInstrumentView::VestigeInstrumentView( Instrument * _instrument,
m_rolRPresetButton->setShortcut( Qt::Key_Plus );
m_rolRPresetButton->setWhatsThis(
tr( "Click here, if you want to switch to another VST-plugin preset program." ) );
m_selPresetButton = new QPushButton( tr( "" ), this );
m_selPresetButton->setGeometry( 228, 201, 16, 16 );
@@ -514,8 +493,6 @@ VestigeInstrumentView::VestigeInstrumentView( Instrument * _instrument,
m_selPresetButton->setIcon( embed::getIconPixmap( "stepper-down" ) );
m_selPresetButton->setWhatsThis(
tr( "Click here to select presets that are currently loaded in VST." ) );
m_selPresetButton->setMenu(menu);
@@ -526,9 +503,6 @@ VestigeInstrumentView::VestigeInstrumentView( Instrument * _instrument,
m_toggleGUIButton->setFont( pointSize<8>( m_toggleGUIButton->font() ) );
connect( m_toggleGUIButton, SIGNAL( clicked() ), this,
SLOT( toggleGUI() ) );
m_toggleGUIButton->setWhatsThis(
tr( "Click here to show or hide the graphical user interface "
"(GUI) of your VST-plugin." ) );
QPushButton * note_off_all_btn = new QPushButton( tr( "Turn off all "
"notes" ), this );
@@ -611,7 +585,7 @@ void VestigeInstrumentView::modelChanged()
void VestigeInstrumentView::openPlugin()
{
FileDialog ofd( NULL, tr( "Open VST-plugin" ) );
FileDialog ofd( NULL, tr( "Open VST plugin" ) );
// set filters
QStringList types;
@@ -817,7 +791,7 @@ void VestigeInstrumentView::paintEvent( QPaintEvent * )
m_vi->m_plugin->name()/* + QString::number(
m_plugin->version() )*/
:
tr( "No VST-plugin loaded" );
tr( "No VST plugin loaded" );
QFont f = p.font();
f.setBold( true );
p.setFont( pointSize<10>( f ) );
@@ -878,16 +852,12 @@ manageVestigeInstrumentView::manageVestigeInstrumentView( Instrument * _instrume
m_syncButton = new QPushButton( tr( "VST Sync" ), this );
connect( m_syncButton, SIGNAL( clicked() ), this,
SLOT( syncPlugin() ) );
m_syncButton->setWhatsThis(
tr( "Click here if you want to synchronize all parameters with VST plugin." ) );
l->addWidget( m_syncButton, 0, 0, 1, 2, Qt::AlignLeft );
m_displayAutomatedOnly = new QPushButton( tr( "Automated" ), this );
connect( m_displayAutomatedOnly, SIGNAL( clicked() ), this,
SLOT( displayAutomatedOnly() ) );
m_displayAutomatedOnly->setWhatsThis(
tr( "Click here if you want to display automated parameters only." ) );
l->addWidget( m_displayAutomatedOnly, 0, 1, 1, 2, Qt::AlignLeft );
@@ -895,8 +865,6 @@ manageVestigeInstrumentView::manageVestigeInstrumentView( Instrument * _instrume
m_closeButton = new QPushButton( tr( " Close " ), widget );
connect( m_closeButton, SIGNAL( clicked() ), this,
SLOT( closeWindow() ) );
m_closeButton->setWhatsThis(
tr( "Close VST plugin knob-controller window." ) );
l->addWidget( m_closeButton, 0, 2, 1, 7, Qt::AlignLeft );

View File

@@ -26,8 +26,6 @@
#include "nine_button_selector.h"
#include <QWhatsThis>
#include "CaptionMenu.h"
#include "embed.h"
@@ -252,20 +250,5 @@ void nineButtonSelector::updateButton( int _new_button )
void nineButtonSelector::contextMenuEvent( QContextMenuEvent * )
{
CaptionMenu contextMenu( windowTitle(), this );
contextMenu.addHelpAction();
contextMenu.exec( QCursor::pos() );
}
void nineButtonSelector::displayHelp()
{
QWhatsThis::showText( mapToGlobal( rect().bottomRight() ),
whatsThis() );
}

View File

@@ -74,7 +74,6 @@ public slots:
void button7Clicked();
void button8Clicked();
void contextMenuEvent( QContextMenuEvent * );
void displayHelp();
signals:
void nineButtonSelection( int );

View File

@@ -24,7 +24,6 @@
#include <QDomDocument>
#include <QMap>
#include <QWhatsThis>
#include "vibed.h"
#include "Engine.h"
@@ -91,19 +90,19 @@ vibed::vibed( InstrumentTrack * _instrumentTrack ) :
m_pickupKnobs.append( knob );
knob = new FloatModel( 0.0f, -1.0f, 1.0f, 0.01f, this,
tr( "Pan %1" ).arg( harm+1 ) );
tr( "String %1 panning" ).arg( harm+1 ) );
m_panKnobs.append( knob );
knob = new FloatModel( 0.0f, -0.1f, 0.1f, 0.001f, this,
tr( "Detune %1" ).arg( harm+1 ) );
tr( "String %1 detune" ).arg( harm+1 ) );
m_detuneKnobs.append( knob );
knob = new FloatModel( 0.0f, 0.0f, 0.75f, 0.01f, this,
tr( "Fuzziness %1 " ).arg( harm+1 ) );
tr( "String %1 fuzziness" ).arg( harm+1 ) );
m_randomKnobs.append( knob );
knob = new FloatModel( 1, 1, 16, 1, this,
tr( "Length %1" ).arg( harm+1 ) );
tr( "String %1 length" ).arg( harm+1 ) );
m_lengthKnobs.append( knob );
led = new BoolModel( false, this,
@@ -111,7 +110,7 @@ vibed::vibed( InstrumentTrack * _instrumentTrack ) :
m_impulses.append( led );
led = new BoolModel( harm==0, this,
tr( "Octave %1" ).arg( harm+1 ) );
tr( "String %1" ).arg( harm+1 ) );
m_powerButtons.append( led );
harmonic = new nineButtonSelectorModel( 2, 0, 8, this );
@@ -362,77 +361,45 @@ vibedView::vibedView( Instrument * _instrument,
m_volumeKnob = new Knob( knobBright_26, this );
m_volumeKnob->setVolumeKnob( true );
m_volumeKnob->move( 103, 142 );
m_volumeKnob->setHintText( tr( "Volume:" ), "" );
m_volumeKnob->setWhatsThis( tr( "The 'V' knob sets the volume "
"of the selected string." ) );
m_volumeKnob->setHintText( tr( "String volume:" ), "" );
m_stiffnessKnob = new Knob( knobBright_26, this );
m_stiffnessKnob->move( 129, 142 );
m_stiffnessKnob->setHintText( tr( "String stiffness:" )
, "" );
m_stiffnessKnob->setWhatsThis( tr(
"The 'S' knob sets the stiffness of the selected string. The stiffness "
"of the string affects how long the string will ring out. The lower "
"the setting, the longer the string will ring." ) );
m_pickKnob = new Knob( knobBright_26, this );
m_pickKnob->move( 153, 142 );
m_pickKnob->setHintText( tr( "Pick position:" ), "" );
m_pickKnob->setWhatsThis( tr(
"The 'P' knob sets the position where the selected string will be 'picked'. "
"The lower the setting the closer the pick is to the bridge." ) );
m_pickupKnob = new Knob( knobBright_26, this );
m_pickupKnob->move( 177, 142 );
m_pickupKnob->setHintText( tr( "Pickup position:" )
, "" );
m_pickupKnob->setWhatsThis( tr(
"The 'PU' knob sets the position where the vibrations will be monitored "
"for the selected string. The lower the setting, the closer the "
"pickup is to the bridge." ) );
m_panKnob = new Knob( knobBright_26, this );
m_panKnob->move( 105, 187 );
m_panKnob->setHintText( tr( "Pan:" ), "" );
m_panKnob->setWhatsThis( tr(
"The Pan knob determines the location of the selected string in the stereo "
"field." ) );
m_panKnob->setHintText( tr( "String panning:" ), "" );
m_detuneKnob = new Knob( knobBright_26, this );
m_detuneKnob->move( 150, 187 );
m_detuneKnob->setHintText( tr( "Detune:" ), "" );
m_detuneKnob->setWhatsThis( tr(
"The Detune knob modifies the pitch of the selected string. Settings less "
"than zero will cause the string to sound flat. Settings greater than zero "
"will cause the string to sound sharp." ) );
m_detuneKnob->setHintText( tr( "String detune:" ), "" );
m_randomKnob = new Knob( knobBright_26, this );
m_randomKnob->move( 194, 187 );
m_randomKnob->setHintText( tr( "Fuzziness:" )
m_randomKnob->setHintText( tr( "String fuzziness:" )
, "" );
m_randomKnob->setWhatsThis( tr(
"The Slap knob adds a bit of fuzz to the selected string which is most "
"apparent during the attack, though it can also be used to make the string "
"sound more 'metallic'.") );
m_lengthKnob = new Knob( knobBright_26, this );
m_lengthKnob->move( 23, 193 );
m_lengthKnob->setHintText( tr( "Length:" )
m_lengthKnob->setHintText( tr( "String length:" )
, "" );
m_lengthKnob->setWhatsThis( tr(
"The Length knob sets the length of the selected string. Longer strings "
"will both ring longer and sound brighter, however, they will also eat up "
"more CPU cycles." ) );
m_impulse = new LedCheckBox( "", this );
m_impulse->move( 23, 94 );
ToolTip::add( m_impulse,
tr( "Impulse or initial state" ) );
m_impulse->setWhatsThis( tr(
"The 'Imp' selector determines whether the waveform in the graph is to be "
"treated as an impulse imparted to the string by the pick or the initial "
"state of the string." ) );
tr( "Impulse" ) );
m_harmonic = new nineButtonSelector(
PLUGIN_NAME::getIconPixmap( "button_-2_on" ),
@@ -458,12 +425,6 @@ vibedView::vibedView( Instrument * _instrument,
this );
m_harmonic->setWindowTitle( tr( "Octave" ) );
m_harmonic->setWhatsThis( tr(
"The Octave selector is used to choose which harmonic of the note the "
"string will ring at. For example, '-2' means the string will ring two "
"octaves below the fundamental, 'F' means the string will ring at the "
"fundamental, and '6' means the string will ring six octaves above the "
"fundamental." ) );
m_stringSelector = new nineButtonSelector(
@@ -495,55 +456,15 @@ vibedView::vibedView( Instrument * _instrument,
m_graph->move( 76, 21 );
m_graph->resize(132, 104);
m_graph->setWhatsThis( tr(
"The waveform editor provides control over the initial state or impulse "
"that is used to start the string vibrating. The buttons to the right of "
"the graph will initialize the waveform to the selected type. The '?' "
"button will load a waveform from a file--only the first 128 samples "
"will be loaded.\n\n"
"The waveform can also be drawn in the graph.\n\n"
"The 'S' button will smooth the waveform.\n\n"
"The 'N' button will normalize the waveform.") );
setWhatsThis( tr(
"Vibed models up to nine independently vibrating strings. The 'String' "
"selector allows you to choose which string is being edited. The 'Imp' " "selector chooses whether the graph represents an impulse or the initial "
"state of the string. The 'Octave' selector chooses which harmonic the "
"string should vibrate at.\n\n"
"The graph allows you to control the initial state or impulse used to set the "
"string in motion.\n\n"
"The 'V' knob controls the volume. The 'S' knob controls the string's "
"stiffness. The 'P' knob controls the pick position. The 'PU' knob "
"controls the pickup position.\n\n"
"'Pan' and 'Detune' hopefully don't need explanation. The 'Slap' knob "
"adds a bit of fuzz to the sound of the string.\n\n"
"The 'Length' knob controls the length of the string.\n\n"
"The LED in the lower right corner of the waveform editor determines "
"whether the string is active in the current instrument." ) );
m_power = new LedCheckBox( "", this, tr( "Enable waveform" ) );
m_power->move( 212, 130 );
ToolTip::add( m_power,
tr( "Click here to enable/disable waveform." ) );
tr( "Enable/disable string" ) );
// String selector is not a part of the model
m_stringSelector->setWindowTitle( tr( "String" ) );
m_stringSelector->setWhatsThis( tr(
"The String selector is used to choose which string the controls are "
"editing. A Vibed instrument can contain up to nine independently "
"vibrating strings. The LED in the lower right corner of the "
"waveform editor indicates whether the selected string is active." ) );
connect( m_stringSelector, SIGNAL( nineButtonSelection( int ) ),
this, SLOT( showString( int ) ) );
@@ -557,8 +478,7 @@ vibedView::vibedView( Instrument * _instrument,
m_sinWaveBtn->setInactiveGraphic( embed::getIconPixmap(
"sin_wave_inactive" ) );
ToolTip::add( m_sinWaveBtn,
tr( "Use a sine-wave for "
"current oscillator." ) );
tr( "Sine wave" ) );
connect( m_sinWaveBtn, SIGNAL (clicked () ),
this, SLOT ( sinWaveClicked() ) );
@@ -570,8 +490,7 @@ vibedView::vibedView( Instrument * _instrument,
m_triangleWaveBtn->setInactiveGraphic(
embed::getIconPixmap( "triangle_wave_inactive" ) );
ToolTip::add( m_triangleWaveBtn,
tr( "Use a triangle-wave "
"for current oscillator." ) );
tr( "Triangle wave" ) );
connect( m_triangleWaveBtn, SIGNAL ( clicked () ),
this, SLOT ( triangleWaveClicked( ) ) );
@@ -583,8 +502,7 @@ vibedView::vibedView( Instrument * _instrument,
m_sawWaveBtn->setInactiveGraphic( embed::getIconPixmap(
"saw_wave_inactive" ) );
ToolTip::add( m_sawWaveBtn,
tr( "Use a saw-wave for "
"current oscillator." ) );
tr( "Saw wave" ) );
connect( m_sawWaveBtn, SIGNAL (clicked () ),
this, SLOT ( sawWaveClicked() ) );
@@ -596,39 +514,36 @@ vibedView::vibedView( Instrument * _instrument,
m_sqrWaveBtn->setInactiveGraphic( embed::getIconPixmap(
"square_wave_inactive" ) );
ToolTip::add( m_sqrWaveBtn,
tr( "Use a square-wave for "
"current oscillator." ) );
tr( "Square wave" ) );
connect( m_sqrWaveBtn, SIGNAL ( clicked () ),
this, SLOT ( sqrWaveClicked() ) );
m_whiteNoiseWaveBtn = new PixmapButton( this, tr( "White noise wave" ) );
m_whiteNoiseWaveBtn = new PixmapButton( this, tr( "White noise" ) );
m_whiteNoiseWaveBtn->move( 212, 92 );
m_whiteNoiseWaveBtn->setActiveGraphic(
embed::getIconPixmap( "white_noise_wave_active" ) );
m_whiteNoiseWaveBtn->setInactiveGraphic(
embed::getIconPixmap( "white_noise_wave_inactive" ) );
ToolTip::add( m_whiteNoiseWaveBtn,
tr( "Use white-noise for "
"current oscillator." ) );
tr( "White noise" ) );
connect( m_whiteNoiseWaveBtn, SIGNAL ( clicked () ),
this, SLOT ( noiseWaveClicked() ) );
m_usrWaveBtn = new PixmapButton( this, tr( "User defined wave" ) );
m_usrWaveBtn = new PixmapButton( this, tr( "User-defined wave" ) );
m_usrWaveBtn->move( 212, 109 );
m_usrWaveBtn->setActiveGraphic( embed::getIconPixmap(
"usr_wave_active" ) );
m_usrWaveBtn->setInactiveGraphic( embed::getIconPixmap(
"usr_wave_inactive" ) );
ToolTip::add( m_usrWaveBtn,
tr( "Use a user-defined "
"waveform for current oscillator." ) );
tr( "User-defined wave" ) );
connect( m_usrWaveBtn, SIGNAL ( clicked () ),
this, SLOT ( usrWaveClicked() ) );
m_smoothBtn = new PixmapButton( this, tr( "Smooth" ) );
m_smoothBtn = new PixmapButton( this, tr( "Smooth waveform" ) );
m_smoothBtn->move( 79, 129 );
m_smoothBtn->setActiveGraphic( PLUGIN_NAME::getIconPixmap(
"smooth_active" ) );
@@ -636,11 +551,11 @@ vibedView::vibedView( Instrument * _instrument,
"smooth_inactive" ) );
m_smoothBtn->setChecked( false );
ToolTip::add( m_smoothBtn,
tr( "Click here to smooth waveform." ) );
tr( "Smooth waveform" ) );
connect( m_smoothBtn, SIGNAL ( clicked () ),
this, SLOT ( smoothClicked() ) );
m_normalizeBtn = new PixmapButton( this, tr( "Normalize" ) );
m_normalizeBtn = new PixmapButton( this, tr( "Normalize waveform" ) );
m_normalizeBtn->move( 96, 129 );
m_normalizeBtn->setActiveGraphic( PLUGIN_NAME::getIconPixmap(
"normalize_active" ) );
@@ -648,7 +563,7 @@ vibedView::vibedView( Instrument * _instrument,
"normalize_inactive" ) );
m_normalizeBtn->setChecked( false );
ToolTip::add( m_normalizeBtn,
tr( "Click here to normalize waveform." ) );
tr( "Normalize waveform" ) );
connect( m_normalizeBtn, SIGNAL ( clicked () ),
this, SLOT ( normalizeClicked() ) );
@@ -758,21 +673,11 @@ void vibedView::contextMenuEvent( QContextMenuEvent * )
{
CaptionMenu contextMenu( model()->displayName(), this );
contextMenu.addHelpAction();
contextMenu.exec( QCursor::pos() );
}
void vibedView::displayHelp()
{
QWhatsThis::showText( mapToGlobal( rect().bottomRight() ),
whatsThis() );
}
extern "C"
{

View File

@@ -93,7 +93,6 @@ public:
public slots:
void showString( int _string );
void contextMenuEvent( QContextMenuEvent * );
void displayHelp();
protected slots:
void sinWaveClicked();

View File

@@ -765,19 +765,19 @@ WatsynView::WatsynView( Instrument * _instrument,
amod_amButton -> move( 4, 66 );
amod_amButton -> setActiveGraphic( PLUGIN_NAME::getIconPixmap( "aam_active" ) );
amod_amButton -> setInactiveGraphic( PLUGIN_NAME::getIconPixmap( "aam_inactive" ) );
ToolTip::add( amod_amButton, tr( "Modulate amplitude of A1 with output of A2" ) );
ToolTip::add( amod_amButton, tr( "Modulate amplitude of A1 by output of A2" ) );
PixmapButton * amod_rmButton = new PixmapButton( this, NULL );
amod_rmButton -> move( 4, 82 );
amod_rmButton -> setActiveGraphic( PLUGIN_NAME::getIconPixmap( "arm_active" ) );
amod_rmButton -> setInactiveGraphic( PLUGIN_NAME::getIconPixmap( "arm_inactive" ) );
ToolTip::add( amod_rmButton, tr( "Ring-modulate A1 and A2" ) );
ToolTip::add( amod_rmButton, tr( "Ring modulate A1 and A2" ) );
PixmapButton * amod_pmButton = new PixmapButton( this, NULL );
amod_pmButton -> move( 4, 98 );
amod_pmButton -> setActiveGraphic( PLUGIN_NAME::getIconPixmap( "apm_active" ) );
amod_pmButton -> setInactiveGraphic( PLUGIN_NAME::getIconPixmap( "apm_inactive" ) );
ToolTip::add( amod_pmButton, tr( "Modulate phase of A1 with output of A2" ) );
ToolTip::add( amod_pmButton, tr( "Modulate phase of A1 by output of A2" ) );
m_aModGroup = new automatableButtonGroup( this );
m_aModGroup -> addButton( amod_mixButton );
@@ -796,19 +796,19 @@ WatsynView::WatsynView( Instrument * _instrument,
bmod_amButton -> move( 44, 66 );
bmod_amButton -> setActiveGraphic( PLUGIN_NAME::getIconPixmap( "bam_active" ) );
bmod_amButton -> setInactiveGraphic( PLUGIN_NAME::getIconPixmap( "bam_inactive" ) );
ToolTip::add( bmod_amButton, tr( "Modulate amplitude of B1 with output of B2" ) );
ToolTip::add( bmod_amButton, tr( "Modulate amplitude of B1 by output of B2" ) );
PixmapButton * bmod_rmButton = new PixmapButton( this, NULL );
bmod_rmButton -> move( 44, 82 );
bmod_rmButton -> setActiveGraphic( PLUGIN_NAME::getIconPixmap( "brm_active" ) );
bmod_rmButton -> setInactiveGraphic( PLUGIN_NAME::getIconPixmap( "brm_inactive" ) );
ToolTip::add( bmod_rmButton, tr( "Ring-modulate B1 and B2" ) );
ToolTip::add( bmod_rmButton, tr( "Ring modulate B1 and B2" ) );
PixmapButton * bmod_pmButton = new PixmapButton( this, NULL );
bmod_pmButton -> move( 44, 98 );
bmod_pmButton -> setActiveGraphic( PLUGIN_NAME::getIconPixmap( "bpm_active" ) );
bmod_pmButton -> setInactiveGraphic( PLUGIN_NAME::getIconPixmap( "bpm_inactive" ) );
ToolTip::add( bmod_pmButton, tr( "Modulate phase of B1 with output of B2" ) );
ToolTip::add( bmod_pmButton, tr( "Modulate phase of B1 by output of B2" ) );
m_bModGroup = new automatableButtonGroup( this );
m_bModGroup -> addButton( bmod_mixButton );
@@ -860,38 +860,38 @@ WatsynView::WatsynView( Instrument * _instrument,
m_loadButton -> move ( 173, 121 );
m_loadButton -> setActiveGraphic( PLUGIN_NAME::getIconPixmap( "load_active" ) );
m_loadButton -> setInactiveGraphic( PLUGIN_NAME::getIconPixmap( "load_inactive" ) );
ToolTip::add( m_loadButton, tr( "Click to load a waveform from a sample file" ) );
ToolTip::add( m_loadButton, tr( "Load a waveform from a sample file" ) );
m_phaseLeftButton = new PixmapButton( this, tr( "Phase left" ) );
m_phaseLeftButton -> move ( 193, 121 );
m_phaseLeftButton -> setActiveGraphic( PLUGIN_NAME::getIconPixmap( "phl_active" ) );
m_phaseLeftButton -> setInactiveGraphic( PLUGIN_NAME::getIconPixmap( "phl_inactive" ) );
ToolTip::add( m_phaseLeftButton, tr( "Click to shift phase by -15 degrees" ) );
ToolTip::add( m_phaseLeftButton, tr( "Shift phase by -15 degrees" ) );
m_phaseRightButton = new PixmapButton( this, tr( "Phase right" ) );
m_phaseRightButton -> move ( 210, 121 );
m_phaseRightButton -> setActiveGraphic( PLUGIN_NAME::getIconPixmap( "phr_active" ) );
m_phaseRightButton -> setInactiveGraphic( PLUGIN_NAME::getIconPixmap( "phr_inactive" ) );
ToolTip::add( m_phaseRightButton, tr( "Click to shift phase by +15 degrees" ) );
ToolTip::add( m_phaseRightButton, tr( "Shift phase by +15 degrees" ) );
m_normalizeButton = new PixmapButton( this, tr( "Normalize" ) );
m_normalizeButton -> move ( 230, 121 );
m_normalizeButton -> setActiveGraphic( PLUGIN_NAME::getIconPixmap( "norm_active" ) );
m_normalizeButton -> setInactiveGraphic( PLUGIN_NAME::getIconPixmap( "norm_inactive" ) );
ToolTip::add( m_normalizeButton, tr( "Click to normalize" ) );
ToolTip::add( m_normalizeButton, tr( "Normalize" ) );
m_invertButton = new PixmapButton( this, tr( "Invert" ) );
m_invertButton -> move ( 230, 138 );
m_invertButton -> setActiveGraphic( PLUGIN_NAME::getIconPixmap( "inv_active" ) );
m_invertButton -> setInactiveGraphic( PLUGIN_NAME::getIconPixmap( "inv_inactive" ) );
ToolTip::add( m_invertButton, tr( "Click to invert" ) );
ToolTip::add( m_invertButton, tr( "Invert" ) );
m_smoothButton = new PixmapButton( this, tr( "Smooth" ) );
m_smoothButton -> move ( 230, 155 );
m_smoothButton -> setActiveGraphic( PLUGIN_NAME::getIconPixmap( "smooth_active" ) );
m_smoothButton -> setInactiveGraphic( PLUGIN_NAME::getIconPixmap( "smooth_inactive" ) );
ToolTip::add( m_smoothButton, tr( "Click to smooth" ) );
ToolTip::add( m_smoothButton, tr( "Smooth" ) );
// waveforms
@@ -899,25 +899,25 @@ WatsynView::WatsynView( Instrument * _instrument,
m_sinWaveButton -> move ( 230, 176 );
m_sinWaveButton -> setActiveGraphic( PLUGIN_NAME::getIconPixmap( "sin_active" ) );
m_sinWaveButton -> setInactiveGraphic( PLUGIN_NAME::getIconPixmap( "sin_inactive" ) );
ToolTip::add( m_sinWaveButton, tr( "Click for sine wave" ) );
ToolTip::add( m_sinWaveButton, tr( "Sine wave" ) );
m_triWaveButton = new PixmapButton( this, tr( "Triangle wave" ) );
m_triWaveButton -> move ( 230, 194 );
m_triWaveButton -> setActiveGraphic( PLUGIN_NAME::getIconPixmap( "tri_active" ) );
m_triWaveButton -> setInactiveGraphic( PLUGIN_NAME::getIconPixmap( "tri_inactive" ) );
ToolTip::add( m_triWaveButton, tr( "Click for triangle wave" ) );
ToolTip::add( m_triWaveButton, tr( "Triangle wave" ) );
m_sawWaveButton = new PixmapButton( this, tr( "Triangle wave" ) );
m_sawWaveButton -> move ( 230, 212 );
m_sawWaveButton -> setActiveGraphic( PLUGIN_NAME::getIconPixmap( "saw_active" ) );
m_sawWaveButton -> setInactiveGraphic( PLUGIN_NAME::getIconPixmap( "saw_inactive" ) );
ToolTip::add( m_sawWaveButton, tr( "Click for saw wave" ) );
ToolTip::add( m_sawWaveButton, tr( "Saw wave" ) );
m_sqrWaveButton = new PixmapButton( this, tr( "Square wave" ) );
m_sqrWaveButton -> move ( 230, 230 );
m_sqrWaveButton -> setActiveGraphic( PLUGIN_NAME::getIconPixmap( "sqr_active" ) );
m_sqrWaveButton -> setInactiveGraphic( PLUGIN_NAME::getIconPixmap( "sqr_inactive" ) );
ToolTip::add( m_sqrWaveButton, tr( "Click for square wave" ) );
ToolTip::add( m_sqrWaveButton, tr( "Square wave" ) );

View File

@@ -73,39 +73,39 @@ waveShaperControlDialog::waveShaperControlDialog(
outputKnob->setLabel( tr( "OUTPUT" ) );
outputKnob->setHintText( tr( "Output gain:" ), "" );
PixmapButton * resetButton = new PixmapButton( this, tr("Reset waveform") );
PixmapButton * resetButton = new PixmapButton( this, tr("Reset wavegraph") );
resetButton -> move( 162, 221 );
resetButton -> resize( 13, 46 );
resetButton -> setActiveGraphic( PLUGIN_NAME::getIconPixmap( "reset_active" ) );
resetButton -> setInactiveGraphic( PLUGIN_NAME::getIconPixmap( "reset_inactive" ) );
ToolTip::add( resetButton, tr( "Click here to reset the wavegraph back to default" ) );
ToolTip::add( resetButton, tr( "Reset wavegraph" ) );
PixmapButton * smoothButton = new PixmapButton( this, tr("Smooth waveform") );
PixmapButton * smoothButton = new PixmapButton( this, tr("Smooth wavegraph") );
smoothButton -> move( 162, 237 );
smoothButton -> resize( 13, 46 );
smoothButton -> setActiveGraphic( PLUGIN_NAME::getIconPixmap( "smooth_active" ) );
smoothButton -> setInactiveGraphic( PLUGIN_NAME::getIconPixmap( "smooth_inactive" ) );
ToolTip::add( smoothButton, tr( "Click here to apply smoothing to wavegraph" ) );
ToolTip::add( smoothButton, tr( "Smooth wavegraph" ) );
PixmapButton * addOneButton = new PixmapButton( this, tr("Increase graph amplitude by 1dB") );
PixmapButton * addOneButton = new PixmapButton( this, tr("Increase wavegraph amplitude by 1 dB") );
addOneButton -> move( 131, 221 );
addOneButton -> resize( 13, 29 );
addOneButton -> setActiveGraphic( PLUGIN_NAME::getIconPixmap( "add1_active" ) );
addOneButton -> setInactiveGraphic( PLUGIN_NAME::getIconPixmap( "add1_inactive" ) );
ToolTip::add( addOneButton, tr( "Click here to increase wavegraph amplitude by 1dB" ) );
ToolTip::add( addOneButton, tr( "Increase wavegraph amplitude by 1 dB" ) );
PixmapButton * subOneButton = new PixmapButton( this, tr("Decrease graph amplitude by 1dB") );
PixmapButton * subOneButton = new PixmapButton( this, tr("Decrease wavegraph amplitude by 1 dB") );
subOneButton -> move( 131, 237 );
subOneButton -> resize( 13, 29 );
subOneButton -> setActiveGraphic( PLUGIN_NAME::getIconPixmap( "sub1_active" ) );
subOneButton -> setInactiveGraphic( PLUGIN_NAME::getIconPixmap( "sub1_inactive" ) );
ToolTip::add( subOneButton, tr( "Click here to decrease wavegraph amplitude by 1dB" ) );
ToolTip::add( subOneButton, tr( "Decrease wavegraph amplitude by 1 dB" ) );
LedCheckBox * clipInputToggle = new LedCheckBox( "Clip input", this,
tr( "Clip input" ), LedCheckBox::Green );
clipInputToggle -> move( 131, 252 );
clipInputToggle -> setModel( &_controls -> m_clipModel );
ToolTip::add( clipInputToggle, tr( "Clip input signal to 0dB" ) );
ToolTip::add( clipInputToggle, tr( "Clip input signal to 0 dB" ) );
connect( resetButton, SIGNAL (clicked () ),
_controls, SLOT ( resetClicked() ) );

View File

@@ -111,13 +111,13 @@ ZynAddSubFxInstrument::ZynAddSubFxInstrument(
m_plugin( NULL ),
m_remotePlugin( NULL ),
m_portamentoModel( 0, 0, 127, 1, this, tr( "Portamento" ) ),
m_filterFreqModel( 64, 0, 127, 1, this, tr( "Filter Frequency" ) ),
m_filterQModel( 64, 0, 127, 1, this, tr( "Filter Resonance" ) ),
m_filterFreqModel( 64, 0, 127, 1, this, tr( "Filter frequency" ) ),
m_filterQModel( 64, 0, 127, 1, this, tr( "Filter resonance" ) ),
m_bandwidthModel( 64, 0, 127, 1, this, tr( "Bandwidth" ) ),
m_fmGainModel( 127, 0, 127, 1, this, tr( "FM Gain" ) ),
m_resCenterFreqModel( 64, 0, 127, 1, this, tr( "Resonance Center Frequency" ) ),
m_resBandwidthModel( 64, 0, 127, 1, this, tr( "Resonance Bandwidth" ) ),
m_forwardMidiCcModel( true, this, tr( "Forward MIDI Control Change Events" ) )
m_fmGainModel( 127, 0, 127, 1, this, tr( "FM gain" ) ),
m_resCenterFreqModel( 64, 0, 127, 1, this, tr( "Resonance center frequency" ) ),
m_resBandwidthModel( 64, 0, 127, 1, this, tr( "Resonance bandwidth" ) ),
m_forwardMidiCcModel( true, this, tr( "Forward MIDI control change events" ) )
{
initPlugin();
@@ -507,11 +507,11 @@ ZynAddSubFxView::ZynAddSubFxView( Instrument * _instrument, QWidget * _parent )
m_portamento->setLabel( tr( "PORT" ) );
m_filterFreq = new Knob( knobBright_26, this );
m_filterFreq->setHintText( tr( "Filter Frequency:" ), "" );
m_filterFreq->setHintText( tr( "Filter frequency:" ), "" );
m_filterFreq->setLabel( tr( "FREQ" ) );
m_filterQ = new Knob( knobBright_26, this );
m_filterQ->setHintText( tr( "Filter Resonance:" ), "" );
m_filterQ->setHintText( tr( "Filter resonance:" ), "" );
m_filterQ->setLabel( tr( "RES" ) );
m_bandwidth = new Knob( knobBright_26, this );
@@ -519,7 +519,7 @@ ZynAddSubFxView::ZynAddSubFxView( Instrument * _instrument, QWidget * _parent )
m_bandwidth->setLabel( tr( "BW" ) );
m_fmGain = new Knob( knobBright_26, this );
m_fmGain->setHintText( tr( "FM Gain:" ), "" );
m_fmGain->setHintText( tr( "FM gain:" ), "" );
m_fmGain->setLabel( tr( "FM GAIN" ) );
m_resCenterFreq = new Knob( knobBright_26, this );
@@ -530,7 +530,7 @@ ZynAddSubFxView::ZynAddSubFxView( Instrument * _instrument, QWidget * _parent )
m_resBandwidth->setHintText( tr( "Resonance bandwidth:" ), "" );
m_resBandwidth->setLabel( tr( "RES BW" ) );
m_forwardMidiCC = new LedCheckBox( tr( "Forward MIDI Control Changes" ), this );
m_forwardMidiCC = new LedCheckBox( tr( "Forward MIDI control changes" ), this );
m_toggleUIButton = new QPushButton( tr( "Show GUI" ), this );
m_toggleUIButton->setCheckable( true );
@@ -539,9 +539,6 @@ ZynAddSubFxView::ZynAddSubFxView( Instrument * _instrument, QWidget * _parent )
m_toggleUIButton->setFont( pointSize<8>( m_toggleUIButton->font() ) );
connect( m_toggleUIButton, SIGNAL( toggled( bool ) ), this,
SLOT( toggleUI() ) );
m_toggleUIButton->setWhatsThis(
tr( "Click here to show or hide the graphical user interface "
"(GUI) of ZynAddSubFX." ) );
l->addWidget( m_toggleUIButton, 0, 0, 1, 4 );
l->setRowStretch( 1, 5 );

View File

@@ -292,9 +292,7 @@ void ConfigManager::setDefaultSoundfont( const QString & _sf )
void ConfigManager::setBackgroundArtwork( const QString & _ba )
{
#ifdef LMMS_HAVE_FLUIDSYNTH
m_backgroundArtwork = _ba;
#endif
}
void ConfigManager::setGIGDir(const QString &gd)

View File

@@ -93,13 +93,13 @@ EnvelopeAndLfoParameters::EnvelopeAndLfoParameters(
Model * _parent ) :
Model( _parent ),
m_used( false ),
m_predelayModel( 0.0, 0.0, 2.0, 0.001, this, tr( "Predelay" ) ),
m_attackModel( 0.0, 0.0, 2.0, 0.001, this, tr( "Attack" ) ),
m_holdModel( 0.5, 0.0, 2.0, 0.001, this, tr( "Hold" ) ),
m_decayModel( 0.5, 0.0, 2.0, 0.001, this, tr( "Decay" ) ),
m_sustainModel( 0.5, 0.0, 1.0, 0.001, this, tr( "Sustain" ) ),
m_releaseModel( 0.1, 0.0, 2.0, 0.001, this, tr( "Release" ) ),
m_amountModel( 0.0, -1.0, 1.0, 0.005, this, tr( "Modulation" ) ),
m_predelayModel( 0.0, 0.0, 2.0, 0.001, this, tr( "Env pre-delay" ) ),
m_attackModel( 0.0, 0.0, 2.0, 0.001, this, tr( "Env attack" ) ),
m_holdModel( 0.5, 0.0, 2.0, 0.001, this, tr( "Env hold" ) ),
m_decayModel( 0.5, 0.0, 2.0, 0.001, this, tr( "Env decay" ) ),
m_sustainModel( 0.5, 0.0, 1.0, 0.001, this, tr( "Env sustain" ) ),
m_releaseModel( 0.1, 0.0, 2.0, 0.001, this, tr( "Env release" ) ),
m_amountModel( 0.0, -1.0, 1.0, 0.005, this, tr( "Env mod amount" ) ),
m_valueForZeroAmount( _value_for_zero_amount ),
m_pahdFrames( 0 ),
m_rFrames( 0 ),
@@ -107,15 +107,15 @@ EnvelopeAndLfoParameters::EnvelopeAndLfoParameters(
m_rEnv( NULL ),
m_pahdBufSize( 0 ),
m_rBufSize( 0 ),
m_lfoPredelayModel( 0.0, 0.0, 1.0, 0.001, this, tr( "LFO Predelay" ) ),
m_lfoAttackModel( 0.0, 0.0, 1.0, 0.001, this, tr( "LFO Attack" ) ),
m_lfoPredelayModel( 0.0, 0.0, 1.0, 0.001, this, tr( "LFO pre-delay" ) ),
m_lfoAttackModel( 0.0, 0.0, 1.0, 0.001, this, tr( "LFO attack" ) ),
m_lfoSpeedModel( 0.1, 0.001, 1.0, 0.0001,
SECS_PER_LFO_OSCILLATION * 1000.0, this,
tr( "LFO speed" ) ),
m_lfoAmountModel( 0.0, -1.0, 1.0, 0.005, this, tr( "LFO Modulation" ) ),
m_lfoWaveModel( SineWave, 0, NumLfoShapes, this, tr( "LFO Wave Shape" ) ),
m_x100Model( false, this, tr( "Freq x 100" ) ),
m_controlEnvAmountModel( false, this, tr( "Modulate Env-Amount" ) ),
tr( "LFO frequency" ) ),
m_lfoAmountModel( 0.0, -1.0, 1.0, 0.005, this, tr( "LFO mod amount" ) ),
m_lfoWaveModel( SineWave, 0, NumLfoShapes, this, tr( "LFO wave shape" ) ),
m_x100Model( false, this, tr( "LFO frequency x 100" ) ),
m_controlEnvAmountModel( false, this, tr( "Modulate env amount" ) ),
m_lfoFrame( 0 ),
m_lfoAmountIsZero( false ),
m_lfoShapeData( NULL )

View File

@@ -344,7 +344,7 @@ void InstrumentFunctionArpeggio::processNote( NotePlayHandle * _n )
if( _n->origin() == NotePlayHandle::OriginArpeggio ||
_n->origin() == NotePlayHandle::OriginNoteStacking ||
!m_arpEnabledModel.value() ||
( _n->isReleased() && _n->releaseFramesDone() >= _n->actualReleaseFramesToDo() ) )
_n->isReleased() )
{
return;
}
@@ -412,7 +412,6 @@ void InstrumentFunctionArpeggio::processNote( NotePlayHandle * _n )
// Skip notes randomly
if( m_arpSkipModel.value() )
{
if( 100 * ( (float) rand() / (float)( RAND_MAX + 1.0f ) ) < m_arpSkipModel.value() )
{
// Set master note to prevent the note to extend over skipped notes
@@ -501,12 +500,6 @@ void InstrumentFunctionArpeggio::processNote( NotePlayHandle * _n )
continue;
}
float vol_level = 1.0f;
if( _n->isReleased() )
{
vol_level = _n->volumeLevel( cur_frame + gated_frames );
}
// create new arp-note
// create sub-note-play-handle, only ptr to note is different
@@ -515,7 +508,7 @@ void InstrumentFunctionArpeggio::processNote( NotePlayHandle * _n )
NotePlayHandleManager::acquire( _n->instrumentTrack(),
frames_processed,
gated_frames,
Note( MidiTime( 0 ), MidiTime( 0 ), sub_note_key, (volume_t) qRound( _n->getVolume() * vol_level ),
Note( MidiTime( 0 ), MidiTime( 0 ), sub_note_key, _n->getVolume(),
_n->getPanning(), _n->detuning() ),
_n, -1, NotePlayHandle::OriginArpeggio )
);

View File

@@ -80,25 +80,25 @@ InstrumentSoundShaping::InstrumentSoundShaping(
tr( targetNames[i][2].toUtf8().constData() ) );
}
m_filterModel.addItem( tr( "LowPass" ), make_unique<PixmapLoader>( "filter_lp" ) );
m_filterModel.addItem( tr( "HiPass" ), make_unique<PixmapLoader>( "filter_hp" ) );
m_filterModel.addItem( tr( "BandPass csg" ), make_unique<PixmapLoader>( "filter_bp" ) );
m_filterModel.addItem( tr( "BandPass czpg" ), make_unique<PixmapLoader>( "filter_bp" ) );
m_filterModel.addItem( tr( "Low-pass" ), make_unique<PixmapLoader>( "filter_lp" ) );
m_filterModel.addItem( tr( "Hi-pass" ), make_unique<PixmapLoader>( "filter_hp" ) );
m_filterModel.addItem( tr( "Band-pass csg" ), make_unique<PixmapLoader>( "filter_bp" ) );
m_filterModel.addItem( tr( "Band-pass czpg" ), make_unique<PixmapLoader>( "filter_bp" ) );
m_filterModel.addItem( tr( "Notch" ), make_unique<PixmapLoader>( "filter_notch" ) );
m_filterModel.addItem( tr( "Allpass" ), make_unique<PixmapLoader>( "filter_ap" ) );
m_filterModel.addItem( tr( "All-pass" ), make_unique<PixmapLoader>( "filter_ap" ) );
m_filterModel.addItem( tr( "Moog" ), make_unique<PixmapLoader>( "filter_lp" ) );
m_filterModel.addItem( tr( "2x LowPass" ), make_unique<PixmapLoader>( "filter_2lp" ) );
m_filterModel.addItem( tr( "RC LowPass 12dB" ), make_unique<PixmapLoader>( "filter_lp" ) );
m_filterModel.addItem( tr( "RC BandPass 12dB" ), make_unique<PixmapLoader>( "filter_bp" ) );
m_filterModel.addItem( tr( "RC HighPass 12dB" ), make_unique<PixmapLoader>( "filter_hp" ) );
m_filterModel.addItem( tr( "RC LowPass 24dB" ), make_unique<PixmapLoader>( "filter_lp" ) );
m_filterModel.addItem( tr( "RC BandPass 24dB" ), make_unique<PixmapLoader>( "filter_bp" ) );
m_filterModel.addItem( tr( "RC HighPass 24dB" ), make_unique<PixmapLoader>( "filter_hp" ) );
m_filterModel.addItem( tr( "Vocal Formant Filter" ), make_unique<PixmapLoader>( "filter_hp" ) );
m_filterModel.addItem( tr( "2x Low-pass" ), make_unique<PixmapLoader>( "filter_2lp" ) );
m_filterModel.addItem( tr( "RC Low-pass 12 dB/oct" ), make_unique<PixmapLoader>( "filter_lp" ) );
m_filterModel.addItem( tr( "RC Band-pass 12 dB/oct" ), make_unique<PixmapLoader>( "filter_bp" ) );
m_filterModel.addItem( tr( "RC High-pass 12 dB/oct" ), make_unique<PixmapLoader>( "filter_hp" ) );
m_filterModel.addItem( tr( "RC Low-pass 24 dB/oct" ), make_unique<PixmapLoader>( "filter_lp" ) );
m_filterModel.addItem( tr( "RC Band-pass 24 dB/oct" ), make_unique<PixmapLoader>( "filter_bp" ) );
m_filterModel.addItem( tr( "RC High-pass 24 dB/oct" ), make_unique<PixmapLoader>( "filter_hp" ) );
m_filterModel.addItem( tr( "Vocal Formant" ), make_unique<PixmapLoader>( "filter_hp" ) );
m_filterModel.addItem( tr( "2x Moog" ), make_unique<PixmapLoader>( "filter_2lp" ) );
m_filterModel.addItem( tr( "SV LowPass" ), make_unique<PixmapLoader>( "filter_lp" ) );
m_filterModel.addItem( tr( "SV BandPass" ), make_unique<PixmapLoader>( "filter_bp" ) );
m_filterModel.addItem( tr( "SV HighPass" ), make_unique<PixmapLoader>( "filter_hp" ) );
m_filterModel.addItem( tr( "SV Low-pass" ), make_unique<PixmapLoader>( "filter_lp" ) );
m_filterModel.addItem( tr( "SV Band-pass" ), make_unique<PixmapLoader>( "filter_bp" ) );
m_filterModel.addItem( tr( "SV High-pass" ), make_unique<PixmapLoader>( "filter_hp" ) );
m_filterModel.addItem( tr( "SV Notch" ), make_unique<PixmapLoader>( "filter_notch" ) );
m_filterModel.addItem( tr( "Fast Formant" ), make_unique<PixmapLoader>( "filter_hp" ) );
m_filterModel.addItem( tr( "Tripole" ), make_unique<PixmapLoader>( "filter_lp" ) );

View File

@@ -1090,6 +1090,7 @@ Mixer::fifoWriter::fifoWriter( Mixer* mixer, fifo * _fifo ) :
m_fifo( _fifo ),
m_writing( true )
{
setObjectName("Mixer::fifoWriter");
}

View File

@@ -25,6 +25,7 @@
#include "MixerWorkerThread.h"
#include <xmmintrin.h>
#include <QDebug>
#include <QMutex>
#include <QWaitCondition>
@@ -39,7 +40,7 @@ QList<MixerWorkerThread *> MixerWorkerThread::workerThreads;
// implementation of internal JobQueue
void MixerWorkerThread::JobQueue::reset( OperationMode _opMode )
{
m_queueSize = 0;
m_writeIndex = 0;
m_itemsDone = 0;
m_opMode = _opMode;
}
@@ -54,7 +55,13 @@ void MixerWorkerThread::JobQueue::addJob( ThreadableJob * _job )
// update job state
_job->queue();
// actually queue the job via atomic operations
m_items[m_queueSize++] = _job;
auto index = m_writeIndex++;
if (index < JOB_QUEUE_SIZE) {
m_items[index] = _job;
} else {
qWarning() << "Job queue is full!";
++m_itemsDone;
}
}
}
@@ -63,10 +70,10 @@ void MixerWorkerThread::JobQueue::addJob( ThreadableJob * _job )
void MixerWorkerThread::JobQueue::run()
{
bool processedJob = true;
while (processedJob && m_itemsDone < m_queueSize)
while (processedJob && m_itemsDone < m_writeIndex)
{
processedJob = false;
for( int i = 0; i < m_queueSize; ++i )
for( int i = 0; i < m_writeIndex && i < JOB_QUEUE_SIZE; ++i )
{
ThreadableJob * job = m_items[i].exchange(nullptr);
if( job )
@@ -86,7 +93,7 @@ void MixerWorkerThread::JobQueue::run()
void MixerWorkerThread::JobQueue::wait()
{
while (m_itemsDone < m_queueSize)
while (m_itemsDone < m_writeIndex)
{
#if defined(LMMS_HOST_X86) || defined(LMMS_HOST_X86_64)
_mm_pause();

View File

@@ -54,7 +54,7 @@ ProcessWatcher::ProcessWatcher( RemotePlugin * _p ) :
void ProcessWatcher::run()
{
while( !m_quit && m_plugin->isRunning() )
while( !m_quit && (m_plugin->isRunning() || m_plugin->messagesLeft()) )
{
msleep( 200 );
}

View File

@@ -143,7 +143,9 @@ void TrackContentObject::movePosition( const MidiTime & pos )
{
if( m_startPosition != pos )
{
Engine::mixer()->requestChangeInModel();
m_startPosition = pos;
Engine::mixer()->doneChangeInModel();
Engine::getSong()->updateLength();
emit positionChanged();
}
@@ -1732,7 +1734,7 @@ TrackOperationsWidget::TrackOperationsWidget( TrackView * parent ) :
m_trackView( parent ) /*!< The parent track view */
{
ToolTip::add( this, tr( "Press <%1> while clicking on move-grip "
"to begin a new drag'n'drop-action." ).arg(
"to begin a new drag'n'drop action." ).arg(
#ifdef LMMS_BUILD_APPLE
"") );
#else
@@ -1751,7 +1753,7 @@ TrackOperationsWidget::TrackOperationsWidget( TrackView * parent ) :
m_trackOps->move( 12, 1 );
m_trackOps->setFocusPolicy( Qt::NoFocus );
m_trackOps->setMenu( toMenu );
ToolTip::add( m_trackOps, tr( "Actions for this track" ) );
ToolTip::add( m_trackOps, tr( "Actions" ) );
m_muteBtn = new PixmapButton( this, tr( "Mute" ) );
@@ -1777,7 +1779,7 @@ TrackOperationsWidget::TrackOperationsWidget( TrackView * parent ) :
}
m_muteBtn->show();
ToolTip::add( m_muteBtn, tr( "Mute this track" ) );
ToolTip::add( m_muteBtn, tr( "Mute" ) );
m_soloBtn->show();
ToolTip::add( m_soloBtn, tr( "Solo" ) );

View File

@@ -38,6 +38,10 @@ MidiClient::MidiClient()
MidiClient::~MidiClient()
{
//TODO: noteOffAll(); / clear all ports
for (MidiPort* port : m_midiPorts)
{
port->invalidateCilent();
}
}

View File

@@ -27,9 +27,12 @@
#include "MidiPort.h"
#include "MidiClient.h"
#include "MidiDummy.h"
#include "Note.h"
#include "Song.h"
static MidiDummy s_dummyClient;
MidiPort::MidiPort( const QString& name,
@@ -410,4 +413,7 @@ void MidiPort::updateOutputProgram()
void MidiPort::invalidateCilent()
{
m_midiClient = &s_dummyClient;
}

View File

@@ -102,6 +102,7 @@
<customwidgets>
<customwidget>
<class>RowTableView</class>
<extends>QTableView</extends>
<header>RowTableView.h</header>
</customwidget>
</customwidgets>

View File

@@ -66,48 +66,25 @@ LfoControllerDialog::LfoControllerDialog( Controller * _model, QWidget * _parent
setWindowIcon( embed::getIconPixmap( "controller" ) );
setFixedSize( 240, 58 );
ToolTip::add( this, tr( "LFO Controller" ) );
m_baseKnob = new Knob( knobBright_26, this );
m_baseKnob->setLabel( tr( "BASE" ) );
m_baseKnob->move( CD_LFO_BASE_CD_KNOB_X, CD_LFO_CD_KNOB_Y );
m_baseKnob->setHintText( tr( "Base amount:" ), "" );
m_baseKnob->setWhatsThis( tr("todo") );
m_baseKnob->setHintText( tr( "Base:" ), "" );
m_speedKnob = new TempoSyncKnob( knobBright_26, this );
m_speedKnob->setLabel( tr( "SPD" ) );
m_speedKnob->setLabel( tr( "FREQ" ) );
m_speedKnob->move( CD_LFO_SPEED_CD_KNOB_X, CD_LFO_CD_KNOB_Y );
m_speedKnob->setHintText( tr( "LFO-speed:" ), "" );
m_speedKnob->setWhatsThis(
tr( "Use this knob for setting speed of the LFO. The "
"bigger this value the faster the LFO oscillates and "
"the faster the effect." ) );
m_speedKnob->setHintText( tr( "LFO frequency:" ), "" );
m_amountKnob = new Knob( knobBright_26, this );
m_amountKnob->setLabel( tr( "AMNT" ) );
m_amountKnob->move( CD_LFO_AMOUNT_CD_KNOB_X, CD_LFO_CD_KNOB_Y );
m_amountKnob->setHintText( tr( "Modulation amount:" ), "" );
m_amountKnob->setWhatsThis(
tr( "Use this knob for setting modulation amount of the "
"LFO. The bigger this value, the more the connected "
"control (e.g. volume or cutoff-frequency) will "
"be influenced by the LFO." ) );
m_phaseKnob = new Knob( knobBright_26, this );
m_phaseKnob->setLabel( tr( "PHS" ) );
m_phaseKnob->move( CD_LFO_PHASE_CD_KNOB_X, CD_LFO_CD_KNOB_Y );
m_phaseKnob->setHintText( tr( "Phase offset:" ) , "" + tr( "degrees" ) );
m_phaseKnob->setWhatsThis(
tr( "With this knob you can set the phase offset of "
"the LFO. That means you can move the "
"point within an oscillation where the "
"oscillator begins to oscillate. For example "
"if you have a sine-wave and have a phase-"
"offset of 180 degrees the wave will first go "
"down. It's the same with a square-wave."
) );
m_phaseKnob->setHintText( tr( "Phase offset:" ) , "" + tr( " degrees" ) );
PixmapButton * sin_wave_btn = new PixmapButton( this, NULL );
sin_wave_btn->move( CD_LFO_SHAPES_X, CD_LFO_SHAPES_Y );
@@ -116,7 +93,7 @@ LfoControllerDialog::LfoControllerDialog( Controller * _model, QWidget * _parent
sin_wave_btn->setInactiveGraphic( embed::getIconPixmap(
"sin_wave_inactive" ) );
ToolTip::add( sin_wave_btn,
tr( "Click here for a sine-wave." ) );
tr( "Sine wave" ) );
PixmapButton * triangle_wave_btn =
new PixmapButton( this, NULL );
@@ -126,7 +103,7 @@ LfoControllerDialog::LfoControllerDialog( Controller * _model, QWidget * _parent
triangle_wave_btn->setInactiveGraphic(
embed::getIconPixmap( "triangle_wave_inactive" ) );
ToolTip::add( triangle_wave_btn,
tr( "Click here for a triangle-wave." ) );
tr( "Triangle wave" ) );
PixmapButton * saw_wave_btn = new PixmapButton( this, NULL );
saw_wave_btn->move( CD_LFO_SHAPES_X + 30, CD_LFO_SHAPES_Y );
@@ -135,7 +112,7 @@ LfoControllerDialog::LfoControllerDialog( Controller * _model, QWidget * _parent
saw_wave_btn->setInactiveGraphic( embed::getIconPixmap(
"saw_wave_inactive" ) );
ToolTip::add( saw_wave_btn,
tr( "Click here for a saw-wave." ) );
tr( "Saw wave" ) );
PixmapButton * sqr_wave_btn = new PixmapButton( this, NULL );
sqr_wave_btn->move( CD_LFO_SHAPES_X + 45, CD_LFO_SHAPES_Y );
@@ -144,7 +121,7 @@ LfoControllerDialog::LfoControllerDialog( Controller * _model, QWidget * _parent
sqr_wave_btn->setInactiveGraphic( embed::getIconPixmap(
"square_wave_inactive" ) );
ToolTip::add( sqr_wave_btn,
tr( "Click here for a square-wave." ) );
tr( "Square wave" ) );
PixmapButton * moog_saw_wave_btn =
new PixmapButton( this, NULL );
@@ -154,7 +131,7 @@ LfoControllerDialog::LfoControllerDialog( Controller * _model, QWidget * _parent
moog_saw_wave_btn->setInactiveGraphic(
embed::getIconPixmap( "moog_saw_wave_inactive" ) );
ToolTip::add( moog_saw_wave_btn,
tr( "Click here for a moog saw-wave." ) );
tr( "Moog saw wave" ) );
PixmapButton * exp_wave_btn = new PixmapButton( this, NULL );
exp_wave_btn->move( CD_LFO_SHAPES_X + 15, CD_LFO_SHAPES_Y + 15 );
@@ -163,7 +140,7 @@ LfoControllerDialog::LfoControllerDialog( Controller * _model, QWidget * _parent
exp_wave_btn->setInactiveGraphic( embed::getIconPixmap(
"exp_wave_inactive" ) );
ToolTip::add( exp_wave_btn,
tr( "Click here for an exponential wave." ) );
tr( "Exponential wave" ) );
PixmapButton * white_noise_btn = new PixmapButton( this, NULL );
white_noise_btn->move( CD_LFO_SHAPES_X + 30, CD_LFO_SHAPES_Y + 15 );
@@ -172,7 +149,7 @@ LfoControllerDialog::LfoControllerDialog( Controller * _model, QWidget * _parent
white_noise_btn->setInactiveGraphic(
embed::getIconPixmap( "white_noise_wave_inactive" ) );
ToolTip::add( white_noise_btn,
tr( "Click here for white-noise." ) );
tr( "White noise" ) );
m_userWaveBtn = new PixmapButton( this, NULL );
m_userWaveBtn->move( CD_LFO_SHAPES_X + 45, CD_LFO_SHAPES_Y + 15 );
@@ -184,7 +161,7 @@ LfoControllerDialog::LfoControllerDialog( Controller * _model, QWidget * _parent
SIGNAL( doubleClicked() ),
this, SLOT( askUserDefWave() ) );
ToolTip::add( m_userWaveBtn,
tr( "Click here for a user-defined shape.\nDouble click to pick a file." ) );
tr( "User-defined shape.\nDouble click to pick a file." ) );
m_waveBtnGrp = new automatableButtonGroup( this );
m_waveBtnGrp->addButton( sin_wave_btn );
@@ -203,6 +180,8 @@ LfoControllerDialog::LfoControllerDialog( Controller * _model, QWidget * _parent
"lfo_x1_active" ) );
x1->setInactiveGraphic( embed::getIconPixmap(
"lfo_x1_inactive" ) );
ToolTip::add( x1,
tr( "Mutliply modulation frequency by 1" ));
PixmapButton * x100 = new PixmapButton( this, NULL );
x100->move( CD_LFO_MULTIPLIER_X, CD_LFO_SHAPES_Y - 8 );
@@ -210,6 +189,8 @@ LfoControllerDialog::LfoControllerDialog( Controller * _model, QWidget * _parent
"lfo_x100_active" ) );
x100->setInactiveGraphic( embed::getIconPixmap(
"lfo_x100_inactive" ) );
ToolTip::add( x100,
tr( "Mutliply modulation frequency by 100" ));
PixmapButton * d100 = new PixmapButton( this, NULL );
d100->move( CD_LFO_MULTIPLIER_X, CD_LFO_SHAPES_Y + 22 );
@@ -217,6 +198,8 @@ LfoControllerDialog::LfoControllerDialog( Controller * _model, QWidget * _parent
"lfo_d100_active" ) );
d100->setInactiveGraphic( embed::getIconPixmap(
"lfo_d100_inactive" ) );
ToolTip::add( d100,
tr( "Divide modulation frequency by 100" ));
m_multiplierBtnGrp = new automatableButtonGroup( this );
m_multiplierBtnGrp->addButton( x1 );
@@ -271,10 +254,6 @@ void LfoControllerDialog::contextMenuEvent( QContextMenuEvent * )
contextMenu->addAction( embed::getIconPixmap( "cancel" ),
tr( "&Remove this plugin" ),
this, SLOT( deletePlugin() ) );
contextMenu->addSeparator();
contextMenu->addAction( embed::getIconPixmap( "help" ),
tr( "&Help" ),
this, SLOT( displayHelp() ) );
contextMenu->exec( QCursor::pos() );
delete contextMenu;
*/

View File

@@ -36,7 +36,6 @@
#include <QLibrary>
#include <QSplitter>
#include <QUrl>
#include <QWhatsThis>
#include "AboutDialog.h"
#include "AudioDummy.h"
@@ -410,9 +409,6 @@ void MainWindow::finalize()
tr( "Help" ),
this, SLOT( help() ) );
}
help_menu->addAction( embed::getIconPixmap( "whatsthis" ),
tr( "What's This?" ),
this, SLOT( enterWhatsThisMode() ) );
// Prevent dangling separator at end of menu per https://bugreports.qt.io/browse/QTBUG-40071
#if !(defined(LMMS_BUILD_APPLE) && (QT_VERSION >= 0x050000) && (QT_VERSION < 0x050600))
@@ -464,15 +460,9 @@ void MainWindow::finalize()
SLOT( onExportProject() ),
m_toolBar );
ToolButton * whatsthis = new ToolButton(
embed::getIconPixmap( "whatsthis" ),
tr( "What's this?" ),
this, SLOT( enterWhatsThisMode() ),
m_toolBar );
m_metronomeToggle = new ToolButton(
embed::getIconPixmap( "metronome" ),
tr( "Toggle metronome" ),
tr( "Metronome" ),
this, SLOT( onToggleMetronome() ),
m_toolBar );
m_metronomeToggle->setCheckable(true);
@@ -485,81 +475,50 @@ void MainWindow::finalize()
m_toolBarLayout->addWidget( project_open_recent, 0, 4 );
m_toolBarLayout->addWidget( project_save, 0, 5 );
m_toolBarLayout->addWidget( project_export, 0, 6 );
m_toolBarLayout->addWidget( whatsthis, 0, 7 );
m_toolBarLayout->addWidget( m_metronomeToggle, 0, 8 );
m_toolBarLayout->addWidget( m_metronomeToggle, 0, 7 );
// window-toolbar
ToolButton * song_editor_window = new ToolButton(
embed::getIconPixmap( "songeditor" ),
tr( "Show/hide Song-Editor" ) + " (F5)",
tr( "Song Editor" ) + " (F5)",
this, SLOT( toggleSongEditorWin() ),
m_toolBar );
song_editor_window->setShortcut( Qt::Key_F5 );
song_editor_window->setWhatsThis(
tr( "By pressing this button, you can show or hide the "
"Song-Editor. With the help of the Song-Editor you can "
"edit song-playlist and specify when which track "
"should be played. "
"You can also insert and move samples (e.g. "
"rap samples) directly into the playlist." ) );
ToolButton * bb_editor_window = new ToolButton(
embed::getIconPixmap( "bb_track_btn" ),
tr( "Show/hide Beat+Bassline Editor" ) +
tr( "Beat+Bassline Editor" ) +
" (F6)",
this, SLOT( toggleBBEditorWin() ),
m_toolBar );
bb_editor_window->setShortcut( Qt::Key_F6 );
bb_editor_window->setWhatsThis(
tr( "By pressing this button, you can show or hide the "
"Beat+Bassline Editor. The Beat+Bassline Editor is "
"needed for creating beats, and for opening, adding, and "
"removing channels, and for cutting, copying and pasting "
"beat and bassline-patterns, and for other things like "
"that." ) );
ToolButton * piano_roll_window = new ToolButton(
embed::getIconPixmap( "piano" ),
tr( "Show/hide Piano-Roll" ) +
tr( "Piano Roll" ) +
" (F7)",
this, SLOT( togglePianoRollWin() ),
m_toolBar );
piano_roll_window->setShortcut( Qt::Key_F7 );
piano_roll_window->setWhatsThis(
tr( "Click here to show or hide the "
"Piano-Roll. With the help of the Piano-Roll "
"you can edit melodies in an easy way."
) );
ToolButton * automation_editor_window = new ToolButton(
embed::getIconPixmap( "automation" ),
tr( "Show/hide Automation Editor" ) +
tr( "Automation Editor" ) +
" (F8)",
this,
SLOT( toggleAutomationEditorWin() ),
m_toolBar );
automation_editor_window->setShortcut( Qt::Key_F8 );
automation_editor_window->setWhatsThis(
tr( "Click here to show or hide the "
"Automation Editor. With the help of the "
"Automation Editor you can edit dynamic values "
"in an easy way."
) );
ToolButton * fx_mixer_window = new ToolButton(
embed::getIconPixmap( "fx_mixer" ),
tr( "Show/hide FX Mixer" ) + " (F9)",
tr( "FX Mixer" ) + " (F9)",
this, SLOT( toggleFxMixerWin() ),
m_toolBar );
fx_mixer_window->setShortcut( Qt::Key_F9 );
fx_mixer_window->setWhatsThis(
tr( "Click here to show or hide the "
"FX Mixer. The FX Mixer is a very powerful tool "
"for managing effects for your song. You can insert "
"effects into different effect-channels." ) );
ToolButton * controllers_window = new ToolButton(
embed::getIconPixmap( "controller" ),
@@ -576,10 +535,6 @@ void MainWindow::finalize()
this, SLOT( toggleProjectNotesWin() ),
m_toolBar );
project_notes_window->setShortcut( Qt::Key_F11 );
project_notes_window->setWhatsThis(
tr( "Click here to show or hide the "
"project notes window. In this window you can put "
"down your project notes.") );
m_toolBarLayout->addWidget( song_editor_window, 1, 1 );
m_toolBarLayout->addWidget( bb_editor_window, 1, 2 );
@@ -837,13 +792,6 @@ void MainWindow::emptySlot()
void MainWindow::enterWhatsThisMode()
{
QWhatsThis::enterWhatsThisMode();
}
void MainWindow::createNewProject()
{
if( mayChangeProject(true) )

View File

@@ -66,15 +66,6 @@ PeakControllerDialog::~PeakControllerDialog()
/*
void effectView::displayHelp()
{
QWhatsThis::showText( mapToGlobal( rect().bottomRight() ),
whatsThis() );
}
void effectView::closeEffects()
{
m_subWindow->hide();

View File

@@ -28,7 +28,6 @@
#include <QLayout>
#include <QLineEdit>
#include <QMessageBox>
#include <QWhatsThis>
#include <QScrollArea>
#include "SetupDialog.h"
@@ -193,17 +192,10 @@ SetupDialog::SetupDialog( ConfigTabs _tab_to_open ) :
QPushButton * bufsize_reset_btn = new QPushButton(
embed::getIconPixmap( "reload" ), "", bufsize_tw );
bufsize_reset_btn->setGeometry( 290, 40, 28, 28 );
bufsize_reset_btn->setGeometry( 320, 40, 28, 28 );
connect( bufsize_reset_btn, SIGNAL( clicked() ), this,
SLOT( resetBufSize() ) );
ToolTip::add( bufsize_reset_btn, tr( "Reset to default-value" ) );
QPushButton * bufsize_help_btn = new QPushButton(
embed::getIconPixmap( "help" ), "", bufsize_tw );
bufsize_help_btn->setGeometry( 320, 40, 28, 28 );
connect( bufsize_help_btn, SIGNAL( clicked() ), this,
SLOT( displayBufSizeHelp() ) );
ToolTip::add( bufsize_reset_btn, tr( "Reset to default value" ) );
TabWidget * misc_tw = new TabWidget( tr( "MISC" ), general );
const int XDelta = 10;
@@ -696,16 +688,10 @@ SetupDialog::SetupDialog( ConfigTabs _tab_to_open ) :
QPushButton * autoSaveResetBtn = new QPushButton(
embed::getIconPixmap( "reload" ), "", auto_save_tw );
autoSaveResetBtn->setGeometry( 290, 70, 28, 28 );
autoSaveResetBtn->setGeometry( 320, 70, 28, 28 );
connect( autoSaveResetBtn, SIGNAL( clicked() ), this,
SLOT( resetAutoSave() ) );
ToolTip::add( autoSaveResetBtn, tr( "Reset to default-value" ) );
QPushButton * saveIntervalBtn = new QPushButton(
embed::getIconPixmap( "help" ), "", auto_save_tw );
saveIntervalBtn->setGeometry( 320, 70, 28, 28 );
connect( saveIntervalBtn, SIGNAL( clicked() ), this,
SLOT( displaySaveIntervalHelp() ) );
ToolTip::add( autoSaveResetBtn, tr( "Reset to default value" ) );
m_saveIntervalSlider->setEnabled( m_enableAutoSave );
m_runningAutoSave->setVisible( m_enableAutoSave );
@@ -757,13 +743,6 @@ SetupDialog::SetupDialog( ConfigTabs _tab_to_open ) :
m_audioInterfaces->setGeometry( 10, 20, 240, 22 );
QPushButton * audio_help_btn = new QPushButton(
embed::getIconPixmap( "help" ), "", audioiface_tw );
audio_help_btn->setGeometry( 320, 20, 28, 28 );
connect( audio_help_btn, SIGNAL( clicked() ), this,
SLOT( displayAudioHelp() ) );
// create ifaces-settings-widget
QWidget * asw = new QWidget( audio );
asw->setFixedHeight( 60 );
@@ -868,13 +847,6 @@ SetupDialog::SetupDialog( ConfigTabs _tab_to_open ) :
m_midiInterfaces->setGeometry( 10, 20, 240, 22 );
QPushButton * midi_help_btn = new QPushButton(
embed::getIconPixmap( "help" ), "", midiiface_tw );
midi_help_btn->setGeometry( 320, 20, 28, 28 );
connect( midi_help_btn, SIGNAL( clicked() ), this,
SLOT( displayMIDIHelp() ) );
// create ifaces-settings-widget
QWidget * msw = new QWidget( midi );
msw->setFixedHeight( 60 );
@@ -1162,21 +1134,6 @@ void SetupDialog::resetBufSize()
void SetupDialog::displayBufSizeHelp()
{
QWhatsThis::showText( QCursor::pos(),
tr( "Here you can setup the internal buffer-size "
"used by LMMS. Smaller values result "
"in a lower latency but also may cause "
"unusable sound or bad performance, "
"especially on older computers or "
"systems with a non-realtime "
"kernel." ) );
}
void SetupDialog::toggleToolTips( bool _enabled )
{
m_toolTips = _enabled;
@@ -1525,9 +1482,7 @@ void SetupDialog::setDefaultSoundfont( const QString & _sf )
void SetupDialog::setBackgroundArtwork( const QString & _ba )
{
#ifdef LMMS_HAVE_FLUIDSYNTH
m_backgroundArtwork = _ba;
#endif
}
@@ -1556,19 +1511,6 @@ void SetupDialog::resetAutoSave()
void SetupDialog::displaySaveIntervalHelp()
{
QWhatsThis::showText( QCursor::pos(),
tr( "Set the time between automatic backup to %1.\n"
"Remember to also save your project manually. "
"You can choose to disable saving while playing, "
"something some older systems find difficult." ).arg(
ConfigManager::inst()->recoveryFile() ) );
}
void SetupDialog::audioInterfaceChanged( const QString & _iface )
{
for( AswMap::iterator it = m_audioIfaceSetupWidgets.begin();
@@ -1583,22 +1525,6 @@ void SetupDialog::audioInterfaceChanged( const QString & _iface )
void SetupDialog::displayAudioHelp()
{
QWhatsThis::showText( QCursor::pos(),
tr( "Here you can select your preferred "
"audio-interface. Depending on the "
"configuration of your system during "
"compilation time you can choose "
"between ALSA, JACK, OSS and more. "
"Below you see a box which offers "
"controls to setup the selected "
"audio-interface." ) );
}
void SetupDialog::midiInterfaceChanged( const QString & _iface )
{
for( MswMap::iterator it = m_midiIfaceSetupWidgets.begin();
@@ -1609,19 +1535,3 @@ void SetupDialog::midiInterfaceChanged( const QString & _iface )
m_midiIfaceSetupWidgets[m_midiIfaceNames[_iface]]->show();
}
void SetupDialog::displayMIDIHelp()
{
QWhatsThis::showText( QCursor::pos(),
tr( "Here you can select your preferred "
"MIDI-interface. Depending on the "
"configuration of your system during "
"compilation time you can choose "
"between ALSA, OSS and more. "
"Below you see a box which offers "
"controls to setup the selected "
"MIDI-interface." ) );
}

View File

@@ -117,14 +117,14 @@ TimeLineWidget::~TimeLineWidget()
void TimeLineWidget::addToolButtons( QToolBar * _tool_bar )
{
NStateButton * autoScroll = new NStateButton( _tool_bar );
autoScroll->setGeneralToolTip( tr( "Enable/disable auto-scrolling" ) );
autoScroll->setGeneralToolTip( tr( "Auto scrolling" ) );
autoScroll->addState( embed::getIconPixmap( "autoscroll_on" ) );
autoScroll->addState( embed::getIconPixmap( "autoscroll_off" ) );
connect( autoScroll, SIGNAL( changedState( int ) ), this,
SLOT( toggleAutoScroll( int ) ) );
NStateButton * loopPoints = new NStateButton( _tool_bar );
loopPoints->setGeneralToolTip( tr( "Enable/disable loop-points" ) );
loopPoints->setGeneralToolTip( tr( "Loop points" ) );
loopPoints->addState( embed::getIconPixmap( "loop_points_off" ) );
loopPoints->addState( embed::getIconPixmap( "loop_points_on" ) );
connect( loopPoints, SIGNAL( changedState( int ) ), this,

View File

@@ -2226,15 +2226,8 @@ AutomationEditorWindow::AutomationEditorWindow() :
// Play/stop buttons
m_playAction->setToolTip(tr( "Play/pause current pattern (Space)" ));
m_playAction->setWhatsThis(
tr( "Click here if you want to play the current pattern. "
"This is useful while editing it. The pattern is "
"automatically looped when the end is reached." ) );
m_stopAction->setToolTip(tr("Stop playing of current pattern (Space)"));
m_stopAction->setWhatsThis(
tr( "Click here if you want to stop playing of the "
"current pattern." ) );
// Edit mode buttons
DropToolBar *editActionsToolBar = addDropToolBarToTop(tr("Edit actions"));
@@ -2250,39 +2243,10 @@ AutomationEditorWindow::AutomationEditorWindow() :
m_flipYAction = new QAction(embed::getIconPixmap("flip_y"), tr("Flip vertically"), this);
m_flipXAction = new QAction(embed::getIconPixmap("flip_x"), tr("Flip horizontally"), this);
m_flipYAction->setWhatsThis(
tr( "Click here and the pattern will be inverted."
"The points are flipped in the y direction. " ) );
m_flipXAction->setWhatsThis(
tr( "Click here and the pattern will be reversed. "
"The points are flipped in the x direction." ) );
// TODO: m_selectButton and m_moveButton are broken.
// m_selectButton = new QAction(embed::getIconPixmap("edit_select"), tr("Select mode (Shift+S)"), editModeGroup);
// m_moveButton = new QAction(embed::getIconPixmap("edit_move"), tr("Move selection mode (Shift+M)"), editModeGroup);
drawAction->setWhatsThis(
tr( "Click here and draw-mode will be activated. In this "
"mode you can add and move single values. This "
"is the default mode which is used most of the time. "
"You can also press 'Shift+D' on your keyboard to "
"activate this mode." ) );
eraseAction->setWhatsThis(
tr( "Click here and erase-mode will be activated. In this "
"mode you can erase single values. You can also press "
"'Shift+E' on your keyboard to activate this mode." ) );
/*m_selectButton->setWhatsThis(
tr( "Click here and select-mode will be activated. In this "
"mode you can select values. This is necessary "
"if you want to cut, copy, paste, delete, or move "
"values. You can also press 'Shift+S' on your keyboard "
"to activate this mode." ) );
m_moveButton->setWhatsThis(
tr( "If you click here, move-mode will be activated. In this "
"mode you can move the values you selected in select-"
"mode. You can also press 'Shift+M' on your keyboard "
"to activate this mode." ) );*/
connect(editModeGroup, SIGNAL(triggered(int)), m_editor, SLOT(setEditMode(int)));
editActionsToolBar->addAction(drawAction);
@@ -2313,32 +2277,9 @@ AutomationEditorWindow::AutomationEditorWindow() :
m_tensionKnob = new Knob( knobSmall_17, this, "Tension" );
m_tensionKnob->setModel(m_editor->m_tensionModel);
ToolTip::add(m_tensionKnob, tr("Tension value for spline"));
m_tensionKnob->setWhatsThis(
tr("A higher tension value may make a smoother curve "
"but overshoot some values. A low tension "
"value will cause the slope of the curve to "
"level off at each control point."));
connect(m_cubicHermiteAction, SIGNAL(toggled(bool)), m_tensionKnob, SLOT(setEnabled(bool)));
m_discreteAction->setWhatsThis(
tr( "Click here to choose discrete progressions for this "
"automation pattern. The value of the connected "
"object will remain constant between control points "
"and be set immediately to the new value when each "
"control point is reached." ) );
m_linearAction->setWhatsThis(
tr( "Click here to choose linear progressions for this "
"automation pattern. The value of the connected "
"object will change at a steady rate over time "
"between control points to reach the correct value at "
"each control point without a sudden change." ) );
m_cubicHermiteAction->setWhatsThis(
tr( "Click here to choose cubic hermite progressions for this "
"automation pattern. The value of the connected "
"object will change in a smooth curve and ease in to "
"the peaks and valleys." ) );
interpolationActionsToolBar->addSeparator();
interpolationActionsToolBar->addAction(m_discreteAction);
interpolationActionsToolBar->addAction(m_linearAction);
@@ -2374,18 +2315,6 @@ AutomationEditorWindow::AutomationEditorWindow() :
"Ctrl"), this);
#endif
cutAction->setWhatsThis(
tr( "Click here and selected values will be cut into the "
"clipboard. You can paste them anywhere in any pattern "
"by clicking on the paste button." ) );
copyAction->setWhatsThis(
tr( "Click here and selected values will be copied into "
"the clipboard. You can paste them anywhere in any "
"pattern by clicking on the paste button." ) );
pasteAction->setWhatsThis(
tr( "Click here and the values from the clipboard will be "
"pasted at the first visible measure." ) );
cutAction->setShortcut(Qt::CTRL | Qt::Key_X);
copyAction->setShortcut(Qt::CTRL | Qt::Key_C);
pasteAction->setShortcut(Qt::CTRL | Qt::Key_V);
@@ -2416,6 +2345,7 @@ AutomationEditorWindow::AutomationEditorWindow() :
m_zoomingXComboBox = new ComboBox( zoomToolBar );
m_zoomingXComboBox->setFixedSize( 80, 22 );
m_zoomingXComboBox->setToolTip( tr( "Horizontal zooming" ) );
for( float const & zoomLevel : m_editor->m_zoomXLevels )
{
@@ -2434,6 +2364,7 @@ AutomationEditorWindow::AutomationEditorWindow() :
m_zoomingYComboBox = new ComboBox( zoomToolBar );
m_zoomingYComboBox->setFixedSize( 80, 22 );
m_zoomingYComboBox->setToolTip( tr( "Vertical zooming" ) );
m_editor->m_zoomingYModel.addItem( "Auto" );
for( int i = 0; i < 7; ++i )
@@ -2463,17 +2394,12 @@ AutomationEditorWindow::AutomationEditorWindow() :
m_quantizeComboBox = new ComboBox( m_toolBar );
m_quantizeComboBox->setFixedSize( 60, 22 );
m_quantizeComboBox->setToolTip( tr( "Quantization" ) );
m_quantizeComboBox->setModel( &m_editor->m_quantizeModel );
quantizationActionsToolBar->addWidget( quantize_lbl );
quantizationActionsToolBar->addWidget( m_quantizeComboBox );
m_quantizeComboBox->setToolTip( tr( "Quantization" ) );
m_quantizeComboBox->setWhatsThis( tr( "Quantization. Sets the smallest "
"step size for the Automation Point. By default "
"this also sets the length, clearing out other "
"points in the range. Press <Ctrl> to override "
"this behaviour." ) );
// Setup our actual window
setFocusPolicy( Qt::StrongFocus );

View File

@@ -69,14 +69,6 @@ BBEditor::BBEditor( BBTrackContainer* tc ) :
m_playAction->setToolTip(tr( "Play/pause current beat/bassline (Space)" ));
m_stopAction->setToolTip(tr( "Stop playback of current beat/bassline (Space)" ));
m_playAction->setWhatsThis(
tr( "Click here to play the current "
"beat/bassline. The beat/bassline is automatically "
"looped when its end is reached." ) );
m_stopAction->setWhatsThis(
tr( "Click here to stop playing of current "
"beat/bassline." ) );
// Beat selector
DropToolBar *beatSelectionToolBar = addDropToolBarToTop(tr("Beat selector"));

View File

@@ -4058,25 +4058,6 @@ PianoRollWindow::PianoRollWindow() :
m_recordAccompanyAction->setToolTip( tr( "Record notes from MIDI-device/channel-piano while playing song or BB track" ) );
m_stopAction->setToolTip( tr( "Stop playing of current pattern (Space)" ) );
m_playAction->setWhatsThis(
tr( "Click here to play the current pattern. "
"This is useful while editing it. The pattern is "
"automatically looped when its end is reached." ) );
m_recordAction->setWhatsThis(
tr( "Click here to record notes from a MIDI-"
"device or the virtual test-piano of the according "
"channel-window to the current pattern. When recording "
"all notes you play will be written to this pattern "
"and you can play and edit them afterwards." ) );
m_recordAccompanyAction->setWhatsThis(
tr( "Click here to record notes from a MIDI-"
"device or the virtual test-piano of the according "
"channel-window to the current pattern. When recording "
"all notes you play will be written to this pattern "
"and you will hear the song or BB track in the background." ) );
m_stopAction->setWhatsThis(
tr( "Click here to stop playback of current pattern." ) );
DropToolBar *notesActionsToolBar = addDropToolBarToTop( tr( "Edit actions" ) );
// init edit-buttons at the top
@@ -4093,39 +4074,6 @@ PianoRollWindow::PianoRollWindow() :
selectAction->setShortcut( Qt::SHIFT | Qt::Key_S );
pitchBendAction->setShortcut( Qt::SHIFT | Qt::Key_T );
drawAction->setWhatsThis(
tr( "Click here and draw mode will be activated. In this "
"mode you can add, resize and move notes. This "
"is the default mode which is used most of the time. "
"You can also press 'Shift+D' on your keyboard to "
"activate this mode. In this mode, hold %1 to "
"temporarily go into select mode." ).arg(
#ifdef LMMS_BUILD_APPLE
"" ) );
#else
"Ctrl" ) );
#endif
eraseAction->setWhatsThis(
tr( "Click here and erase mode will be activated. In this "
"mode you can erase notes. You can also press "
"'Shift+E' on your keyboard to activate this mode." ) );
selectAction->setWhatsThis(
tr( "Click here and select mode will be activated. "
"In this mode you can select notes. Alternatively, "
"you can hold %1 in draw mode to temporarily use "
"select mode." ).arg(
#ifdef LMMS_BUILD_APPLE
"" ) );
#else
"Ctrl" ) );
#endif
pitchBendAction->setWhatsThis(
tr( "Click here and Pitch Bend mode will be activated. "
"In this mode you can click a note to open its "
"automation detuning. You can utilize this to slide "
"notes from one to another. You can also press "
"'Shift+T' on your keyboard to activate this mode." ) );
connect( editModeGroup, SIGNAL( triggered( int ) ), m_editor, SLOT( setEditMode( int ) ) );
QAction* quantizeAction = new QAction(embed::getIconPixmap( "quantize" ), tr( "Quantize" ), this );
@@ -4142,7 +4090,7 @@ PianoRollWindow::PianoRollWindow() :
DropToolBar *copyPasteActionsToolBar = addDropToolBarToTop( tr( "Copy paste controls" ) );
QAction* cutAction = new QAction(embed::getIconPixmap( "edit_cut" ),
tr( "Cut selected notes (%1+X)" ).arg(
tr( "Cut (%1+X)" ).arg(
#ifdef LMMS_BUILD_APPLE
"" ), this );
#else
@@ -4150,7 +4098,7 @@ PianoRollWindow::PianoRollWindow() :
#endif
QAction* copyAction = new QAction(embed::getIconPixmap( "edit_copy" ),
tr( "Copy selected notes (%1+C)" ).arg(
tr( "Copy (%1+C)" ).arg(
#ifdef LMMS_BUILD_APPLE
""), this);
#else
@@ -4158,25 +4106,13 @@ PianoRollWindow::PianoRollWindow() :
#endif
QAction* pasteAction = new QAction(embed::getIconPixmap( "edit_paste" ),
tr( "Paste notes from clipboard (%1+V)" ).arg(
tr( "Paste (%1+V)" ).arg(
#ifdef LMMS_BUILD_APPLE
"" ), this );
#else
"Ctrl" ), this );
#endif
cutAction->setWhatsThis(
tr( "Click here and the selected notes will be cut into the "
"clipboard. You can paste them anywhere in any pattern "
"by clicking on the paste button." ) );
copyAction->setWhatsThis(
tr( "Click here and the selected notes will be copied into the "
"clipboard. You can paste them anywhere in any pattern "
"by clicking on the paste button." ) );
pasteAction->setWhatsThis(
tr( "Click here and the notes from the clipboard will be "
"pasted at the first visible measure." ) );
cutAction->setShortcut( Qt::CTRL | Qt::Key_X );
copyAction->setShortcut( Qt::CTRL | Qt::Key_C );
pasteAction->setShortcut( Qt::CTRL | Qt::Key_V );
@@ -4205,6 +4141,7 @@ PianoRollWindow::PianoRollWindow() :
m_zoomingComboBox = new ComboBox( m_toolBar );
m_zoomingComboBox->setModel( &m_editor->m_zoomingModel );
m_zoomingComboBox->setFixedSize( 64, 22 );
m_zoomingComboBox->setToolTip( tr( "Horizontal zooming") );
// setup quantize-stuff
QLabel * quantize_lbl = new QLabel( m_toolBar );
@@ -4213,6 +4150,7 @@ PianoRollWindow::PianoRollWindow() :
m_quantizeComboBox = new ComboBox( m_toolBar );
m_quantizeComboBox->setModel( &m_editor->m_quantizeModel );
m_quantizeComboBox->setFixedSize( 64, 22 );
m_quantizeComboBox->setToolTip( tr( "Quantization") );
// setup note-len-stuff
QLabel * note_len_lbl = new QLabel( m_toolBar );
@@ -4221,6 +4159,7 @@ PianoRollWindow::PianoRollWindow() :
m_noteLenComboBox = new ComboBox( m_toolBar );
m_noteLenComboBox->setModel( &m_editor->m_noteLenModel );
m_noteLenComboBox->setFixedSize( 105, 22 );
m_noteLenComboBox->setToolTip( tr( "Note length") );
// setup scale-stuff
QLabel * scale_lbl = new QLabel( m_toolBar );
@@ -4229,6 +4168,7 @@ PianoRollWindow::PianoRollWindow() :
m_scaleComboBox = new ComboBox( m_toolBar );
m_scaleComboBox->setModel( &m_editor->m_scaleModel );
m_scaleComboBox->setFixedSize( 105, 22 );
m_scaleComboBox->setToolTip( tr( "Scale") );
// setup chord-stuff
QLabel * chord_lbl = new QLabel( m_toolBar );
@@ -4237,6 +4177,7 @@ PianoRollWindow::PianoRollWindow() :
m_chordComboBox = new ComboBox( m_toolBar );
m_chordComboBox->setModel( &m_editor->m_chordModel );
m_chordComboBox->setFixedSize( 105, 22 );
m_chordComboBox->setToolTip( tr( "Chord") );
zoomAndNotesToolBar->addWidget( zoom_lbl );
@@ -4258,53 +4199,6 @@ PianoRollWindow::PianoRollWindow() :
zoomAndNotesToolBar->addWidget( chord_lbl );
zoomAndNotesToolBar->addWidget( m_chordComboBox );
m_zoomingComboBox->setWhatsThis(
tr(
"This controls the magnification of an axis. "
"It can be helpful to choose magnification for a specific "
"task. For ordinary editing, the magnification should be "
"fitted to your smallest notes. "
) );
m_quantizeComboBox->setWhatsThis(
tr(
"The 'Q' stands for quantization, and controls the grid size "
"notes and control points snap to. "
"With smaller quantization values, you can draw shorter notes "
"in Piano Roll, and more exact control points in the "
"Automation Editor."
) );
m_noteLenComboBox->setWhatsThis(
tr(
"This lets you select the length of new notes. "
"'Last Note' means that LMMS will use the note length of "
"the note you last edited"
) );
m_scaleComboBox->setWhatsThis(
tr(
"The feature is directly connected to the context-menu "
"on the virtual keyboard, to the left in Piano Roll. "
"After you have chosen the scale you want "
"in this drop-down menu, "
"you can right click on a desired key in the virtual keyboard, "
"and then choose 'Mark current Scale'. "
"LMMS will highlight all notes that belongs to the chosen scale, "
"and in the key you have selected!"
) );
m_chordComboBox->setWhatsThis(
tr(
"Let you select a chord which LMMS then can draw or highlight."
"You can find the most common chords in this drop-down menu. "
"After you have selected a chord, click anywhere to place the chord, and right "
"click on the virtual keyboard to open context menu and highlight the chord. "
"To return to single note placement, you need to choose 'No chord' "
"in this drop-down menu."
) );
// setup our actual window
setFocusPolicy( Qt::StrongFocus );
setFocus();

View File

@@ -113,16 +113,8 @@ SongEditor::SongEditor( Song * song ) :
m_tempoSpinBox = new LcdSpinBox( 3, tb, tr( "Tempo" ) );
m_tempoSpinBox->setModel( &m_song->m_tempoModel );
m_tempoSpinBox->setLabel( tr( "TEMPO/BPM" ) );
ToolTip::add( m_tempoSpinBox, tr( "tempo of song" ) );
m_tempoSpinBox->setWhatsThis(
tr( "The tempo of a song is specified in beats per minute "
"(BPM). If you want to change the tempo of your "
"song, change this value. Every measure has four beats, "
"so the tempo in BPM specifies, how many measures / 4 "
"should be played within a minute (or how many measures "
"should be played within four minutes)." ) );
m_tempoSpinBox->setLabel( tr( "TEMPO" ) );
ToolTip::add( m_tempoSpinBox, tr( "Tempo in BPM" ) );
int tempoSpinBoxCol = gui->mainWindow()->addWidgetToToolBar( m_tempoSpinBox, 0 );
@@ -164,7 +156,7 @@ SongEditor::SongEditor( Song * song ) :
m_masterVolumeSlider->setTickPosition( QSlider::TicksLeft );
m_masterVolumeSlider->setFixedSize( 26, 60 );
m_masterVolumeSlider->setTickInterval( 50 );
ToolTip::add( m_masterVolumeSlider, tr( "master volume" ) );
ToolTip::add( m_masterVolumeSlider, tr( "Master volume" ) );
connect( m_masterVolumeSlider, SIGNAL( logicValueChanged( int ) ), this,
SLOT( setMasterVolume( int ) ) );
@@ -197,7 +189,7 @@ SongEditor::SongEditor( Song * song ) :
m_masterPitchSlider->setTickPosition( QSlider::TicksLeft );
m_masterPitchSlider->setFixedSize( 26, 60 );
m_masterPitchSlider->setTickInterval( 12 );
ToolTip::add( m_masterPitchSlider, tr( "master pitch" ) );
ToolTip::add( m_masterPitchSlider, tr( "Master pitch" ) );
connect( m_masterPitchSlider, SIGNAL( logicValueChanged( int ) ), this,
SLOT( setMasterPitch( int ) ) );
connect( m_masterPitchSlider, SIGNAL( sliderPressed() ), this,
@@ -687,14 +679,6 @@ SongEditorWindow::SongEditorWindow(Song* song) :
m_recordAccompanyAction->setToolTip(tr( "Record samples from Audio-device while playing song or BB track"));
m_stopAction->setToolTip(tr( "Stop song (Space)" ));
m_playAction->setWhatsThis(
tr("Click here, if you want to play your whole song. "
"Playing will be started at the song-position-marker (green). "
"You can also move it while playing."));
m_stopAction->setWhatsThis(
tr("Click here, if you want to stop playing of your song. "
"The song-position-marker will be set to the start of your song."));
// Track actions
DropToolBar *trackActionsToolBar = addDropToolBarToTop(tr("Track actions"));
@@ -745,6 +729,7 @@ SongEditorWindow::SongEditorWindow(Song* song) :
m_zoomingComboBox->setFixedSize( 80, 22 );
m_zoomingComboBox->move( 580, 4 );
m_zoomingComboBox->setModel(m_editor->m_zoomingModel);
m_zoomingComboBox->setToolTip(tr("Horizontal zooming"));
zoomToolBar->addWidget( zoom_lbl );
zoomToolBar->addWidget( m_zoomingComboBox );

View File

@@ -42,23 +42,3 @@ CaptionMenu::CaptionMenu( const QString & _title, QWidget * _parent ) :
CaptionMenu::~CaptionMenu()
{
}
void CaptionMenu::addHelpAction()
{
QWidget* parent = (QWidget*) this->parent();
if (parent == NULL)
return;
if (! parent->whatsThis().isEmpty()) {
addAction( embed::getIconPixmap( "help" ), tr( "&Help" ),
parent, SLOT( displayHelp() ) );
}
else {
QAction* helpAction = addAction( embed::getIconPixmap("help"), tr("Help (not available)") );
helpAction->setDisabled(true);
}
}

View File

@@ -30,7 +30,6 @@
#include <QMdiSubWindow>
#include <QPainter>
#include <QInputDialog>
#include <QWhatsThis>
#include <QLayout>
#include "ControllerView.h"
@@ -92,9 +91,6 @@ ControllerView::ControllerView( Controller * _model, QWidget * _parent ) :
m_subWindow->hide();
setWhatsThis( tr( "Controllers are able to automate the value of a knob, "
"slider, and other controls." ) );
setModel( _model );
}
@@ -183,19 +179,6 @@ void ControllerView::contextMenuEvent( QContextMenuEvent * )
this, SLOT( deleteController() ) );
contextMenu->addAction( tr("Re&name this controller"), this, SLOT( renameController() ));
contextMenu->addSeparator();
contextMenu->addHelpAction();
contextMenu->exec( QCursor::pos() );
delete contextMenu;
}
void ControllerView::displayHelp()
{
QWhatsThis::showText( mapToGlobal( rect().center() ),
whatsThis() );
}

View File

@@ -28,7 +28,6 @@
#include <QMdiArea>
#include <QMdiSubWindow>
#include <QPainter>
#include <QWhatsThis>
#include "EffectView.h"
#include "DummyEffect.h"
@@ -56,7 +55,6 @@ EffectView::EffectView( Effect * _model, QWidget * _parent ) :
m_bypass = new LedCheckBox( this, "", isEnabled ? LedCheckBox::Green : LedCheckBox::Red );
m_bypass->move( 3, 3 );
m_bypass->setEnabled( isEnabled );
m_bypass->setWhatsThis( tr( "Toggles the effect on or off." ) );
ToolTip::add( m_bypass, tr( "On/Off" ) );
@@ -66,9 +64,6 @@ EffectView::EffectView( Effect * _model, QWidget * _parent ) :
m_wetDry->move( 27, 5 );
m_wetDry->setEnabled( isEnabled );
m_wetDry->setHintText( tr( "Wet Level:" ), "" );
m_wetDry->setWhatsThis( tr( "The Wet/Dry knob sets the ratio between "
"the input signal and the effect signal that "
"forms the output." ) );
m_autoQuit = new TempoSyncKnob( knobBright_26, this );
@@ -76,10 +71,6 @@ EffectView::EffectView( Effect * _model, QWidget * _parent ) :
m_autoQuit->move( 60, 5 );
m_autoQuit->setEnabled( isEnabled );
m_autoQuit->setHintText( tr( "Time:" ), "ms" );
m_autoQuit->setWhatsThis( tr(
"The Decay knob controls how many buffers of silence must pass before the "
"plugin stops processing. Smaller values will reduce the CPU overhead but "
"run the risk of clipping the tail on delay and reverb effects." ) );
m_gate = new Knob( knobBright_26, this );
@@ -87,9 +78,6 @@ EffectView::EffectView( Effect * _model, QWidget * _parent ) :
m_gate->move( 93, 5 );
m_gate->setEnabled( isEnabled );
m_gate->setHintText( tr( "Gate:" ), "" );
m_gate->setWhatsThis( tr(
"The Gate knob controls the signal level that is considered to be 'silence' "
"while deciding when to stop processing signals." ) );
setModel( _model );
@@ -123,35 +111,6 @@ EffectView::EffectView( Effect * _model, QWidget * _parent ) :
}
setWhatsThis( tr(
"Effect plugins function as a chained series of effects where the signal will "
"be processed from top to bottom.\n\n"
"The On/Off switch allows you to bypass a given plugin at any point in "
"time.\n\n"
"The Wet/Dry knob controls the balance between the input signal and the "
"effected signal that is the resulting output from the effect. The input "
"for the stage is the output from the previous stage. So, the 'dry' signal "
"for effects lower in the chain contains all of the previous effects.\n\n"
"The Decay knob controls how long the signal will continue to be processed "
"after the notes have been released. The effect will stop processing signals "
"when the volume has dropped below a given threshold for a given length of "
"time. This knob sets the 'given length of time'. Longer times will require "
"more CPU, so this number should be set low for most effects. It needs to be "
"bumped up for effects that produce lengthy periods of silence, e.g. "
"delays.\n\n"
"The Gate knob controls the 'given threshold' for the effect's auto shutdown. "
"The clock for the 'given length of time' will begin as soon as the processed "
"signal level drops below the level specified with this knob.\n\n"
"The Controls button opens a dialog for editing the effect's parameters.\n\n"
"Right clicking will bring up a context menu where you can change the order "
"in which the effects are processed or delete an effect altogether." ) );
//move above vst effect view creation
//setModel( _model );
}
@@ -222,15 +181,6 @@ void EffectView::deletePlugin()
void EffectView::displayHelp()
{
QWhatsThis::showText( mapToGlobal( rect().bottomRight() ),
whatsThis() );
}
void EffectView::closeEffects()
{
if( m_subWindow )
@@ -256,7 +206,6 @@ void EffectView::contextMenuEvent( QContextMenuEvent * )
tr( "&Remove this plugin" ),
this, SLOT( deletePlugin() ) );
contextMenu->addSeparator();
contextMenu->addHelpAction();
contextMenu->exec( QCursor::pos() );
delete contextMenu;
}

View File

@@ -97,78 +97,43 @@ EnvelopeAndLfoView::EnvelopeAndLfoView( QWidget * _parent ) :
m_predelayKnob = new Knob( knobBright_26, this );
m_predelayKnob->setLabel( tr( "DEL" ) );
m_predelayKnob->move( PREDELAY_KNOB_X, ENV_KNOBS_Y );
m_predelayKnob->setHintText( tr( "Predelay:" ), "" );
m_predelayKnob->setWhatsThis(
tr( "Use this knob for setting predelay of the current "
"envelope. The bigger this value the longer the time "
"before start of actual envelope." ) );
m_predelayKnob->setHintText( tr( "Pre-delay:" ), "" );
m_attackKnob = new Knob( knobBright_26, this );
m_attackKnob->setLabel( tr( "ATT" ) );
m_attackKnob->move( ATTACK_KNOB_X, ENV_KNOBS_Y );
m_attackKnob->setHintText( tr( "Attack:" ), "" );
m_attackKnob->setWhatsThis(
tr( "Use this knob for setting attack-time of the current "
"envelope. The bigger this value the longer the "
"envelope needs to increase to attack-level. "
"Choose a small value for instruments like pianos "
"and a big value for strings." ) );
m_holdKnob = new Knob( knobBright_26, this );
m_holdKnob->setLabel( tr( "HOLD" ) );
m_holdKnob->move( HOLD_KNOB_X, ENV_KNOBS_Y );
m_holdKnob->setHintText( tr( "Hold:" ), "" );
m_holdKnob->setWhatsThis(
tr( "Use this knob for setting hold-time of the current "
"envelope. The bigger this value the longer the "
"envelope holds attack-level before it begins to "
"decrease to sustain-level." ) );
m_decayKnob = new Knob( knobBright_26, this );
m_decayKnob->setLabel( tr( "DEC" ) );
m_decayKnob->move( DECAY_KNOB_X, ENV_KNOBS_Y );
m_decayKnob->setHintText( tr( "Decay:" ), "" );
m_decayKnob->setWhatsThis(
tr( "Use this knob for setting decay-time of the current "
"envelope. The bigger this value the longer the "
"envelope needs to decrease from attack-level to "
"sustain-level. Choose a small value for instruments "
"like pianos." ) );
m_sustainKnob = new Knob( knobBright_26, this );
m_sustainKnob->setLabel( tr( "SUST" ) );
m_sustainKnob->move( SUSTAIN_KNOB_X, ENV_KNOBS_Y );
m_sustainKnob->setHintText( tr( "Sustain:" ), "" );
m_sustainKnob->setWhatsThis(
tr( "Use this knob for setting sustain-level of the current "
"envelope. The bigger this value the higher the level "
"on which the envelope stays before going down to "
"zero." ) );
m_releaseKnob = new Knob( knobBright_26, this );
m_releaseKnob->setLabel( tr( "REL" ) );
m_releaseKnob->move( RELEASE_KNOB_X, ENV_KNOBS_Y );
m_releaseKnob->setHintText( tr( "Release:" ), "" );
m_releaseKnob->setWhatsThis(
tr( "Use this knob for setting release-time of the current "
"envelope. The bigger this value the longer the "
"envelope needs to decrease from sustain-level to "
"zero. Choose a big value for soft instruments like "
"strings." ) );
m_amountKnob = new Knob( knobBright_26, this );
m_amountKnob->setLabel( tr( "AMT" ) );
m_amountKnob->move( AMOUNT_KNOB_X, ENV_GRAPH_Y );
m_amountKnob->setHintText( tr( "Modulation amount:" ), "" );
m_amountKnob->setWhatsThis(
tr( "Use this knob for setting modulation amount of the "
"current envelope. The bigger this value the more the "
"according size (e.g. volume or cutoff-frequency) "
"will be influenced by this envelope." ) );
@@ -176,42 +141,25 @@ EnvelopeAndLfoView::EnvelopeAndLfoView( QWidget * _parent ) :
m_lfoPredelayKnob = new Knob( knobBright_26, this );
m_lfoPredelayKnob->setLabel( tr( "DEL" ) );
m_lfoPredelayKnob->move( LFO_PREDELAY_KNOB_X, LFO_KNOB_Y );
m_lfoPredelayKnob->setHintText( tr( "LFO predelay:" ), "" );
m_lfoPredelayKnob->setWhatsThis(
tr( "Use this knob for setting predelay-time of the current "
"LFO. The bigger this value the the time until the "
"LFO starts to oscillate." ) );
m_lfoPredelayKnob->setHintText( tr( "Pre-delay:" ), "" );
m_lfoAttackKnob = new Knob( knobBright_26, this );
m_lfoAttackKnob->setLabel( tr( "ATT" ) );
m_lfoAttackKnob->move( LFO_ATTACK_KNOB_X, LFO_KNOB_Y );
m_lfoAttackKnob->setHintText( tr( "LFO- attack:" ), "" );
m_lfoAttackKnob->setWhatsThis(
tr( "Use this knob for setting attack-time of the current LFO. "
"The bigger this value the longer the LFO needs to "
"increase its amplitude to maximum." ) );
m_lfoAttackKnob->setHintText( tr( "Attack:" ), "" );
m_lfoSpeedKnob = new TempoSyncKnob( knobBright_26, this );
m_lfoSpeedKnob->setLabel( tr( "SPD" ) );
m_lfoSpeedKnob->move( LFO_SPEED_KNOB_X, LFO_KNOB_Y );
m_lfoSpeedKnob->setHintText( tr( "LFO speed:" ), "" );
m_lfoSpeedKnob->setWhatsThis(
tr( "Use this knob for setting speed of the current LFO. The "
"bigger this value the faster the LFO oscillates and "
"the faster will be your effect." ) );
m_lfoSpeedKnob->setHintText( tr( "Frequency:" ), "" );
m_lfoAmountKnob = new Knob( knobBright_26, this );
m_lfoAmountKnob->setLabel( tr( "AMT" ) );
m_lfoAmountKnob->move( LFO_AMOUNT_KNOB_X, LFO_KNOB_Y );
m_lfoAmountKnob->setHintText( tr( "Modulation amount:" ), "" );
m_lfoAmountKnob->setWhatsThis(
tr( "Use this knob for setting modulation amount of the "
"current LFO. The bigger this value the more the "
"selected size (e.g. volume or cutoff-frequency) will "
"be influenced by this LFO." ) );
PixmapButton * sin_lfo_btn = new PixmapButton( this, NULL );
@@ -220,8 +168,6 @@ EnvelopeAndLfoView::EnvelopeAndLfoView( QWidget * _parent ) :
"sin_wave_active" ) );
sin_lfo_btn->setInactiveGraphic( embed::getIconPixmap(
"sin_wave_inactive" ) );
sin_lfo_btn->setWhatsThis(
tr( "Click here for a sine-wave." ) );
PixmapButton * triangle_lfo_btn = new PixmapButton( this, NULL );
triangle_lfo_btn->move( LFO_SHAPES_X+15, LFO_SHAPES_Y );
@@ -229,8 +175,6 @@ EnvelopeAndLfoView::EnvelopeAndLfoView( QWidget * _parent ) :
"triangle_wave_active" ) );
triangle_lfo_btn->setInactiveGraphic( embed::getIconPixmap(
"triangle_wave_inactive" ) );
triangle_lfo_btn->setWhatsThis(
tr( "Click here for a triangle-wave." ) );
PixmapButton * saw_lfo_btn = new PixmapButton( this, NULL );
saw_lfo_btn->move( LFO_SHAPES_X+30, LFO_SHAPES_Y );
@@ -238,8 +182,6 @@ EnvelopeAndLfoView::EnvelopeAndLfoView( QWidget * _parent ) :
"saw_wave_active" ) );
saw_lfo_btn->setInactiveGraphic( embed::getIconPixmap(
"saw_wave_inactive" ) );
saw_lfo_btn->setWhatsThis(
tr( "Click here for a saw-wave for current." ) );
PixmapButton * sqr_lfo_btn = new PixmapButton( this, NULL );
sqr_lfo_btn->move( LFO_SHAPES_X+45, LFO_SHAPES_Y );
@@ -247,8 +189,6 @@ EnvelopeAndLfoView::EnvelopeAndLfoView( QWidget * _parent ) :
"square_wave_active" ) );
sqr_lfo_btn->setInactiveGraphic( embed::getIconPixmap(
"square_wave_inactive" ) );
sqr_lfo_btn->setWhatsThis(
tr( "Click here for a square-wave." ) );
m_userLfoBtn = new PixmapButton( this, NULL );
m_userLfoBtn->move( LFO_SHAPES_X+75, LFO_SHAPES_Y );
@@ -256,10 +196,6 @@ EnvelopeAndLfoView::EnvelopeAndLfoView( QWidget * _parent ) :
"usr_wave_active" ) );
m_userLfoBtn->setInactiveGraphic( embed::getIconPixmap(
"usr_wave_inactive" ) );
m_userLfoBtn->setWhatsThis(
tr( "Click here for a user-defined wave. "
"Afterwards, drag an according sample-"
"file onto the LFO graph." ) );
connect( m_userLfoBtn, SIGNAL( toggled( bool ) ),
this, SLOT( lfoUserWaveChanged() ) );
@@ -270,8 +206,6 @@ EnvelopeAndLfoView::EnvelopeAndLfoView( QWidget * _parent ) :
"random_wave_active" ) );
random_lfo_btn->setInactiveGraphic( embed::getIconPixmap(
"random_wave_inactive" ) );
random_lfo_btn->setWhatsThis(
tr( "Click here for random wave." ) );
m_lfoWaveBtnGrp = new automatableButtonGroup( this );
m_lfoWaveBtnGrp->addButton( sin_lfo_btn );
@@ -284,21 +218,15 @@ EnvelopeAndLfoView::EnvelopeAndLfoView( QWidget * _parent ) :
m_x100Cb = new LedCheckBox( tr( "FREQ x 100" ), this );
m_x100Cb->setFont( pointSizeF( m_x100Cb->font(), 6.5 ) );
m_x100Cb->move( LFO_PREDELAY_KNOB_X, LFO_GRAPH_Y + 36 );
m_x100Cb->setWhatsThis(
tr( "Click here if the frequency of this LFO should be "
"multiplied by 100." ) );
ToolTip::add( m_x100Cb, tr( "multiply LFO-frequency by 100" ) );
ToolTip::add( m_x100Cb, tr( "Multiply LFO frequency by 100" ) );
m_controlEnvAmountCb = new LedCheckBox( tr( "MODULATE ENV-AMOUNT" ),
m_controlEnvAmountCb = new LedCheckBox( tr( "MODULATE ENV AMOUNT" ),
this );
m_controlEnvAmountCb->move( LFO_PREDELAY_KNOB_X, LFO_GRAPH_Y + 54 );
m_controlEnvAmountCb->setFont( pointSizeF( m_controlEnvAmountCb->font(), 6.5 ) );
m_controlEnvAmountCb ->setWhatsThis(
tr( "Click here to make the envelope-amount controlled by this "
"LFO." ) );
ToolTip::add( m_controlEnvAmountCb,
tr( "control envelope-amount by this LFO" ) );
tr( "Control envelope amount by this LFO" ) );
setAcceptDrops( true );
@@ -590,8 +518,7 @@ void EnvelopeAndLfoView::lfoUserWaveChanged()
if( m_params->m_userWave.frames() <= 1 )
{
TextFloat::displayMessage( tr( "Hint" ),
tr( "Drag a sample from somewhere and drop "
"it in this window." ),
tr( "Drag and drop a sample into this window." ),
embed::getIconPixmap( "hint" ), 3000 );
}
}

View File

@@ -26,7 +26,6 @@
#include "FxLine.h"
#include <QGraphicsProxyWidget>
#include <QWhatsThis>
#include "CaptionMenu.h"
#include "FxMixer.h"
@@ -96,20 +95,6 @@ FxLine::FxLine( QWidget * _parent, FxMixerView * _mv, int _channelIndex ) :
m_lcd->move( 4, 58 );
m_lcd->setMarginWidth( 1 );
setWhatsThis( tr(
"The FX channel receives input from one or more instrument tracks.\n "
"It in turn can be routed to multiple other FX channels. LMMS automatically "
"takes care of preventing infinite loops for you and doesn't allow making "
"a connection that would result in an infinite loop.\n\n"
"In order to route the channel to another channel, select the FX channel "
"and click on the \"send\" button on the channel you want to send to. "
"The knob under the send button controls the level of signal that is sent "
"to the channel.\n\n"
"You can remove and move FX channels in the context menu, which is accessed "
"by right-clicking the FX channel.\n" ) );
QString name = Engine::fxMixer()->effectChannel( m_channelIndex )->m_name;
setToolTip( name );
@@ -253,8 +238,6 @@ void FxLine::contextMenuEvent( QContextMenuEvent * )
contextMenu->addSeparator();
}
contextMenu->addAction( embed::getIconPixmap( "cancel" ), tr( "Remove &unused channels" ), this, SLOT( removeUnusedChannels() ) );
contextMenu->addSeparator();
contextMenu->addHelpAction();
contextMenu->exec( QCursor::pos() );
delete contextMenu;
}
@@ -335,14 +318,6 @@ void FxLine::moveChannelRight()
void FxLine::displayHelp()
{
QWhatsThis::showText( mapToGlobal( rect().bottomRight() ), whatsThis() );
}
QBrush FxLine::backgroundActive() const
{
return m_backgroundActive;

View File

@@ -32,7 +32,6 @@
#include "gui_templates.h"
#include "Knob.h"
#include "TempoSyncKnob.h"
#include "ToolTip.h"
InstrumentFunctionNoteStackingView::InstrumentFunctionNoteStackingView( InstrumentFunctionNoteStacking* cc, QWidget* parent ) :
@@ -58,10 +57,6 @@ InstrumentFunctionNoteStackingView::InstrumentFunctionNoteStackingView( Instrume
m_chordRangeKnob->setLabel( tr( "RANGE" ) );
m_chordRangeKnob->setHintText( tr( "Chord range:" ), " " + tr( "octave(s)" ) );
m_chordRangeKnob->setWhatsThis(
tr( "Use this knob for setting the chord range in octaves. "
"The selected chord will be played within specified "
"number of octaves." ) );
mainLayout->addWidget( chordLabel, 0, 0 );
mainLayout->addWidget( m_chordsComboBox, 1, 0 );
@@ -118,65 +113,28 @@ InstrumentFunctionArpeggioView::InstrumentFunctionArpeggioView( InstrumentFuncti
mainLayout->setHorizontalSpacing( 20 );
mainLayout->setVerticalSpacing( 1 );
m_arpGroupBox->setWhatsThis(
tr( "An arpeggio is a method playing (especially plucked) "
"instruments, which makes the music much livelier. "
"The strings of such instruments (e.g. harps) are "
"plucked like chords. The only difference is that "
"this is done in a sequential order, so the notes are "
"not played at the same time. Typical arpeggios are "
"major or minor triads, but there are a lot of other "
"possible chords, you can select." ) );
m_arpRangeKnob->setLabel( tr( "RANGE" ) );
m_arpRangeKnob->setHintText( tr( "Arpeggio range:" ), " " + tr( "octave(s)" ) );
m_arpRangeKnob->setWhatsThis(
tr( "Use this knob for setting the arpeggio range in octaves. "
"The selected arpeggio will be played within specified "
"number of octaves." ) );
m_arpCycleKnob->setLabel( tr( "CYCLE" ) );
m_arpCycleKnob->setHintText( tr( "Cycle notes:" ) + " ", " " + tr( "note(s)" ) );
m_arpCycleKnob->setWhatsThis(
tr( "Jumps over n steps in the arpeggio and cycles around "
"if we're over the note range. If the total note range is evenly "
"divisible by the number of steps jumped over you will get stuck "
"in a shorter arpeggio or even on one note." ) );
m_arpSkipKnob->setLabel( tr( "SKIP" ) );
m_arpSkipKnob->setHintText( tr( "Skip rate:" ), tr( "%" ) );
m_arpSkipKnob->setWhatsThis(
tr( "The skip function will make the arpeggiator pause one step "
"randomly. From its start in full counter clockwise "
"position and no effect it will gradually progress to "
"full amnesia at maximum setting.") );
m_arpMissKnob->setLabel( tr( "MISS" ) );
m_arpMissKnob->setHintText( tr( "Miss rate:" ), tr( "%" ) );
m_arpMissKnob->setWhatsThis(
tr( "The miss function will make the arpeggiator miss the "
"intended note.") );
m_arpTimeKnob->setLabel( tr( "TIME" ) );
m_arpTimeKnob->setHintText( tr( "Arpeggio time:" ), " " + tr( "ms" ) );
m_arpTimeKnob->setWhatsThis(
tr( "Use this knob for setting the arpeggio time in "
"milliseconds. The arpeggio time specifies how long "
"each arpeggio-tone should be played." ) );
m_arpGateKnob->setLabel( tr( "GATE" ) );
m_arpGateKnob->setHintText( tr( "Arpeggio gate:" ), tr( "%" ) );
m_arpGateKnob->setWhatsThis(
tr( "Use this knob for setting the arpeggio gate. The "
"arpeggio gate specifies the percent of a whole "
"arpeggio-tone that should be played. With this you "
"can make cool staccato arpeggios." ) );
QLabel* arpChordLabel = new QLabel( tr( "Chord:" ) );

Some files were not shown because too many files have changed in this diff Show More