Ejemplo n.º 1
0
        FileBoxWidget()
          : openButton(0)
        {
            // our layout
            QHBoxLayout * lay = new QHBoxLayout(this);
            lay->setContentsMargins(0, 0, 0, 0);
            lay->setSpacing(0);

            // add open button
            openButton = new PixmapButton(this);
            openButton->setFixedSize(QSize(64, 60));
            openButton->setToolTip(tr("Open"));
            openButton->setPixmap(QPixmap(":/data/action-open.png"));
            lay->addWidget(openButton);
        }
Ejemplo n.º 2
0
void CanvasAppliance::slotVerifyVideoInputs(int count)
{
    // delete previous buttons
    qDeleteAll(m_webcamButtons);
    m_webcamButtons.clear();

    // create new buttons, indexed and connected
    for (int i = 0; i < count; i++) {
        PixmapButton * p = new PixmapButton(ui.addContentBox);
        p->setFixedSize(QSize(50, 50));
        p->setPixmap(QPixmap(":/data/insert-webcam.png"));
        p->setHoverPixmap(QPixmap(":/data/insert-overlay-plus.png"));
        p->setToolTip(tr("Add Webcam"));
        p->setProperty("index", i);
        connect(p, SIGNAL(clicked()), this, SLOT(slotAddWebcam()));
        ui.addWebcamLayout->addWidget(p);
        m_webcamButtons.append(p);
    }
}
Ejemplo n.º 3
0
EqControlsDialog::EqControlsDialog( EqControls *controls ) :
	EffectControlDialog( controls ),
	m_controls( controls )
{
	setAutoFillBackground( true );
	QPalette pal;
	pal.setBrush( backgroundRole(), PLUGIN_NAME::getIconPixmap( "EqLayout1BG" ) );
	setPalette( pal );
	setFixedSize( 500, 500 );
	QGridLayout *mainLayout = new QGridLayout( this );

	EqSpectrumView *inSpec = new EqSpectrumView( &controls->m_inFftBands, this );
	mainLayout->addWidget( inSpec, 0, 1, 1, 8 );
	inSpec->setColor( QColor( 238, 154, 120, 80 ) );

	EqSpectrumView *outSpec = new EqSpectrumView( &controls->m_outFftBands, this );
	outSpec->setColor( QColor( 145, 205, 22, 80 ) );
	mainLayout->addWidget( outSpec, 0, 1, 1, 8 );

	m_parameterWidget = new EqParameterWidget( this , controls );
	mainLayout->addWidget( m_parameterWidget, 0, 1, 1, 8 );

	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( 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( 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);

	EqFader *inGainFader = new EqFader( &controls->m_inGainModel, tr( "In Gain" ), this, &controls->m_inPeakL, &controls->m_inPeakR );
	mainLayout->addWidget( inGainFader, 0, 0 );
	inGainFader->setDisplayConversion( false );
	inGainFader->setHintText( tr( "Gain" ), "dBFS");

	EqFader *outGainFader = new EqFader( &controls->m_outGainModel, tr( "Out Gain" ), this, &controls->m_outPeakL, &controls->m_outPeakR );
	mainLayout->addWidget( outGainFader, 0, 9 );
	outGainFader->setDisplayConversion( false );
	outGainFader->setHintText( tr( "Gain" ), "dBFS" );

	// Gain Fader for each Filter exepts the pass filter
	for( int i = 1; i < m_parameterWidget->bandCount() - 1; i++ )
	{
		EqFader *gainFader = new EqFader( m_parameterWidget->getBandModels( i )->gain, tr( "" ), this,
								   m_parameterWidget->getBandModels( i )->peakL, m_parameterWidget->getBandModels( i )->peakR );
		mainLayout->addWidget( gainFader, 2, i+1 );
		mainLayout->setAlignment( gainFader, Qt::AlignHCenter );
		gainFader->setMinimumHeight(80);
		gainFader->resize(gainFader->width() , 80);
		gainFader->setDisplayConversion( false );
		gainFader->setHintText( tr( "Gain") , "dB");
	}
	
	//Control Button and Knobs for each Band
	for( int i = 0; i < m_parameterWidget->bandCount() ; i++ )
	{
		Knob *resKnob = new Knob( knobBright_26, this );
		mainLayout->setRowMinimumHeight( 4, 33 );
		mainLayout->addWidget( resKnob, 5, i + 1 );
		mainLayout->setAlignment( resKnob, Qt::AlignHCenter );
		resKnob->setVolumeKnob(false);
		resKnob->setModel( m_parameterWidget->getBandModels( i )->res );
		if(i > 1 && i < 6) { resKnob->setHintText( tr( "Bandwidth: " ) , tr( " Octave" ) ); }
		else { resKnob->setHintText( tr( "Resonance : " ) , "" ); }

		Knob *freqKnob = new Knob( knobBright_26, this );
		mainLayout->addWidget( freqKnob, 3, i+1 );
		mainLayout->setAlignment( freqKnob, Qt::AlignHCenter );
		freqKnob->setVolumeKnob( false );
		freqKnob->setModel( m_parameterWidget->getBandModels( i )->freq );
		freqKnob->setHintText( tr( "Frequency:" ), "Hz" );

		// adds the Number Active buttons
		PixmapButton *activeNumButton = new PixmapButton( this, NULL );
		activeNumButton->setCheckable(true);
		activeNumButton->setModel( m_parameterWidget->getBandModels( i )->active );
		QString iconActiveFileName = "bandLabel" + QString::number(i+1) + "on";
		QString iconInactiveFileName = "bandLabel" + QString::number(i+1);
		activeNumButton->setActiveGraphic( PLUGIN_NAME::getIconPixmap( iconActiveFileName.toLatin1() ) );
		activeNumButton->setInactiveGraphic( PLUGIN_NAME::getIconPixmap( iconInactiveFileName.toLatin1() ) );
		mainLayout->addWidget( activeNumButton, 1, i+1 );
		mainLayout->setAlignment( activeNumButton, Qt::AlignHCenter );
		activeNumButton->setModel( m_parameterWidget->getBandModels( i )->active );

		// adds the symbols active buttons
		PixmapButton *activeButton = new PixmapButton( this, NULL );
		activeButton->setCheckable(true);
		activeButton->setModel( m_parameterWidget->getBandModels( i )->active );
		switch (i)
		{
		case 0:
			activeButton->setActiveGraphic( PLUGIN_NAME::getIconPixmap( "ActiveHP" ) );
			activeButton->setInactiveGraphic( PLUGIN_NAME::getIconPixmap( "ActiveHPoff" ) );
			break;
		case 1:
			activeButton->setActiveGraphic( PLUGIN_NAME::getIconPixmap( "ActiveLS" ) );
			activeButton->setInactiveGraphic( PLUGIN_NAME::getIconPixmap( "ActiveLSoff" ) );
			break;
		case 6:
			activeButton->setActiveGraphic( PLUGIN_NAME::getIconPixmap( "ActiveHS" ) );
			activeButton->setInactiveGraphic( PLUGIN_NAME::getIconPixmap( "ActiveHSoff" ) );
			break;
		case 7:
			activeButton->setActiveGraphic( PLUGIN_NAME::getIconPixmap( "ActiveLP" ) );
			activeButton->setInactiveGraphic( PLUGIN_NAME::getIconPixmap( "ActiveLPoff" ) );
			break;
		default:
			activeButton->setActiveGraphic( PLUGIN_NAME::getIconPixmap( "ActivePeak" ) );
			activeButton->setInactiveGraphic( PLUGIN_NAME::getIconPixmap( "ActivePeakoff" ) );
		}

		mainLayout->addWidget( activeButton, 7, i+1 );
		mainLayout->setAlignment( activeButton, Qt::AlignHCenter);
		activeButton->setModel( m_parameterWidget->getBandModels( i )->active );

		// Connects the knobs, Faders and buttons with the curve graphic
		QObject::connect( m_parameterWidget->getBandModels( i )->freq , SIGNAL( dataChanged() ), m_parameterWidget, SLOT ( updateHandle() ) );
		if ( m_parameterWidget->getBandModels( i )->gain ) QObject::connect( m_parameterWidget->getBandModels( i )->gain, SIGNAL( dataChanged() ), m_parameterWidget, SLOT ( updateHandle() ));
		QObject::connect( m_parameterWidget->getBandModels( i )->res, SIGNAL( dataChanged() ), m_parameterWidget , SLOT ( updateHandle() ) );
		QObject::connect( m_parameterWidget->getBandModels( i )->active, SIGNAL( dataChanged() ), m_parameterWidget , SLOT ( updateHandle() ) );

		m_parameterWidget->changeHandle( i );
	}

	// adds the buttons for Spectrum analyser on/off
	PixmapButton *inSpecB = new PixmapButton(this, NULL);
	inSpecB->setActiveGraphic( PLUGIN_NAME::getIconPixmap( "ActiveAnalyse" ) );
	inSpecB->setInactiveGraphic( PLUGIN_NAME::getIconPixmap( "ActiveAnalyseoff" ) );
	inSpecB->setCheckable( true );
	inSpecB->setModel( &controls->m_analyseInModel );

	PixmapButton *outSpecB = new PixmapButton(this, NULL);
	outSpecB->setActiveGraphic( PLUGIN_NAME::getIconPixmap( "ActiveAnalyse" ) );
	outSpecB->setInactiveGraphic( PLUGIN_NAME::getIconPixmap( "ActiveAnalyseoff" ) );
	outSpecB->setCheckable( true );
	outSpecB->setModel( &controls->m_analyseOutModel );
	mainLayout->addWidget( inSpecB, 1, 0 );
	mainLayout->addWidget( outSpecB, 1, 9 );
	mainLayout->setAlignment( inSpecB, Qt::AlignHCenter );
	mainLayout->setAlignment( outSpecB, Qt::AlignHCenter );

	//hp filter type
	PixmapButton *hp12Button = new PixmapButton( this , NULL );
	hp12Button->setModel( m_parameterWidget->getBandModels( 0 )->hp12 );
	hp12Button->setActiveGraphic( PLUGIN_NAME::getIconPixmap( "12dB" ) );
	hp12Button->setInactiveGraphic(  PLUGIN_NAME::getIconPixmap( "12dBoff" ) );

	PixmapButton *hp24Button = new PixmapButton( this , NULL );
	hp24Button->setModel(m_parameterWidget->getBandModels( 0 )->hp24 );
	hp24Button->setActiveGraphic( PLUGIN_NAME::getIconPixmap( "24dB" ) );
	hp24Button->setInactiveGraphic(  PLUGIN_NAME::getIconPixmap( "24dBoff" ) );

	PixmapButton *hp48Button = new PixmapButton( this , NULL );
	hp48Button->setModel( m_parameterWidget->getBandModels(0)->hp48 );
	hp48Button->setActiveGraphic( PLUGIN_NAME::getIconPixmap( "48dB" ) );
	hp48Button->setInactiveGraphic(  PLUGIN_NAME::getIconPixmap( "48dBoff" ) );

	//LP filter type
	PixmapButton *lp12Button = new PixmapButton( this , NULL );
	mainLayout->addWidget( lp12Button, 2, 1 );
	lp12Button->setModel( m_parameterWidget->getBandModels( 7 )->lp12 );
	lp12Button->setActiveGraphic( PLUGIN_NAME::getIconPixmap( "12dB" ) );
	lp12Button->setInactiveGraphic(  PLUGIN_NAME::getIconPixmap( "12dBoff" ) );

	PixmapButton *lp24Button = new PixmapButton( this , NULL );
	lp24Button->setModel( m_parameterWidget->getBandModels( 7 )->lp24 );
	lp24Button->setActiveGraphic( PLUGIN_NAME::getIconPixmap( "24dB" ) );
	lp24Button->setInactiveGraphic(  PLUGIN_NAME::getIconPixmap( "24dBoff" ) );

	PixmapButton *lp48Button = new PixmapButton( this , NULL );
	lp48Button->setModel( m_parameterWidget->getBandModels( 7 )->lp48 );
	lp48Button->setActiveGraphic( PLUGIN_NAME::getIconPixmap( "48dB" ) );
	lp48Button->setInactiveGraphic(  PLUGIN_NAME::getIconPixmap( "48dBoff" ) );

	// the curve has to change its appearance
	connect( m_parameterWidget->getBandModels( 0 )->hp12 , SIGNAL ( dataChanged() ), m_parameterWidget, SLOT( updateHandle()));
	connect( m_parameterWidget->getBandModels( 0 )->hp24 , SIGNAL ( dataChanged() ), m_parameterWidget, SLOT( updateHandle()));
	connect( m_parameterWidget->getBandModels( 0 )->hp48 , SIGNAL ( dataChanged() ), m_parameterWidget, SLOT( updateHandle()));

	connect( m_parameterWidget->getBandModels( 7 )->lp12 , SIGNAL ( dataChanged() ), m_parameterWidget, SLOT( updateHandle()));
	connect( m_parameterWidget->getBandModels( 7 )->lp24 , SIGNAL ( dataChanged() ), m_parameterWidget, SLOT( updateHandle()));
	connect( m_parameterWidget->getBandModels( 7 )->lp48 , SIGNAL ( dataChanged() ), m_parameterWidget, SLOT( updateHandle()));

	QVBoxLayout *hpGrpBtnLayout = new QVBoxLayout;
	hpGrpBtnLayout->addWidget( hp12Button );
	hpGrpBtnLayout->addWidget( hp24Button );
	hpGrpBtnLayout->addWidget( hp48Button );

	QVBoxLayout *lpGrpBtnLayout = new QVBoxLayout;
	lpGrpBtnLayout->addWidget( lp12Button );
	lpGrpBtnLayout->addWidget( lp24Button );
	lpGrpBtnLayout->addWidget( lp48Button );

	mainLayout->addLayout( hpGrpBtnLayout, 2, 1,  Qt::AlignCenter );
	mainLayout->addLayout( lpGrpBtnLayout, 2, 8,  Qt::AlignCenter );

	automatableButtonGroup *lpBtnGrp = new automatableButtonGroup(this,tr ( "lp grp" ) );
	lpBtnGrp->addButton( lp12Button );
	lpBtnGrp->addButton( lp24Button );
	lpBtnGrp->addButton( lp48Button );
	lpBtnGrp->setModel( &m_controls->m_lpTypeModel, false);

	automatableButtonGroup *hpBtnGrp = new automatableButtonGroup( this, tr( "hp grp" ) );
	hpBtnGrp->addButton( hp12Button );
	hpBtnGrp->addButton( hp24Button );
	hpBtnGrp->addButton( hp48Button );
	hpBtnGrp->setModel( &m_controls->m_hpTypeModel,false);

	mainLayout->setAlignment( Qt::AlignTop );

	for (int i = 0 ; i < 10; i++)
	{
		mainLayout->setColumnMinimumWidth(i, 50);
	}

	mainLayout->setAlignment( inGainFader, Qt::AlignHCenter );
	mainLayout->setAlignment( outGainFader, Qt::AlignHCenter );
	mainLayout->setRowMinimumHeight( 0,200 );
	mainLayout->setRowMinimumHeight( 1, 40 );
	mainLayout->setRowMinimumHeight(6,15);
	mainLayout->setContentsMargins( 0, 11, 0, 0 );
	mainLayout->setAlignment(inSpec, Qt::AlignCenter );
	mainLayout->setAlignment(outSpec, Qt::AlignCenter );

	QLabel *freqLabel = new QLabel( this );
	freqLabel->setText("- " + tr( "Frequency")+ " -" );
	freqLabel->move( 217 , 377 );

	QLabel *resLabel1 = new QLabel( this );
	resLabel1->setText("- " + tr( "Resonance")+ " -" );
	resLabel1->move( 62 , 444 );

	QLabel *resLabel2 = new QLabel( this );
	resLabel2->setText("- " + tr( "Resonance")+ " -" );
	resLabel2->move( 365 , 444 );

	QLabel *bandWidthLabel = new QLabel( this );
	bandWidthLabel->setText("- " + tr( "Bandwidth")+ " -" );
	bandWidthLabel->move( 215 , 444 );

	setLayout(mainLayout);
}
Ejemplo n.º 4
0
Archivo: lb302.cpp Proyecto: uro5h/lmms
lb302SynthView::lb302SynthView( Instrument * _instrument, QWidget * _parent ) :
	InstrumentView( _instrument, _parent )
{
	// GUI
	m_vcfCutKnob = new Knob( knobBright_26, this );
	m_vcfCutKnob->move( 75, 130 );
	m_vcfCutKnob->setHintText( tr( "Cutoff Freq:" ), "" );
	m_vcfCutKnob->setLabel( "" );

	m_vcfResKnob = new Knob( knobBright_26, this );
	m_vcfResKnob->move( 120, 130 );
	m_vcfResKnob->setHintText( tr( "Resonance:" ), "" );
	m_vcfResKnob->setLabel( "" );

	m_vcfModKnob = new Knob( knobBright_26, this );
	m_vcfModKnob->move( 165, 130 );
	m_vcfModKnob->setHintText( tr( "Env Mod:" ), "" );
	m_vcfModKnob->setLabel( "" );

	m_vcfDecKnob = new Knob( knobBright_26, this );
	m_vcfDecKnob->move( 210, 130 );
	m_vcfDecKnob->setHintText( tr( "Decay:" ), "" );
	m_vcfDecKnob->setLabel( "" );

	m_slideToggle = new LedCheckBox( "", this );
	m_slideToggle->move( 10, 180 );

/*	m_accentToggle = new LedCheckBox( "", this );
	m_accentToggle->move( 10, 200 );
	m_accentToggle->setDisabled(true);*/ // accent removed pending real implementation - no need for non-functional buttons

	m_deadToggle = new LedCheckBox( "", this );
	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);


	m_slideDecKnob = new Knob( knobBright_26, this );
	m_slideDecKnob->move( 210, 75 );
	m_slideDecKnob->setHintText( tr( "Slide Decay:" ), "" );
	m_slideDecKnob->setLabel( "");

	m_distKnob = new Knob( knobBright_26, this );
	m_distKnob->move( 210, 190 );
	m_distKnob->setHintText( tr( "DIST:" ), "" );
	m_distKnob->setLabel( tr( ""));


	// Shapes
	// move to 120,75
	const int waveBtnX = 10;
	const int waveBtnY = 96;
	PixmapButton * sawWaveBtn = new PixmapButton( this, tr( "Saw wave" ) );
	sawWaveBtn->move( waveBtnX, waveBtnY );
	sawWaveBtn->setActiveGraphic( embed::getIconPixmap(
						"saw_wave_active" ) );
	sawWaveBtn->setInactiveGraphic( embed::getIconPixmap(
						"saw_wave_inactive" ) );
	ToolTip::add( sawWaveBtn,
			tr( "Click here for a saw-wave." ) );

	PixmapButton * triangleWaveBtn =
		new PixmapButton( this, tr( "Triangle wave" ) );
	triangleWaveBtn->move( waveBtnX+(16*1), waveBtnY );
	triangleWaveBtn->setActiveGraphic(
		embed::getIconPixmap( "triangle_wave_active" ) );
	triangleWaveBtn->setInactiveGraphic(
		embed::getIconPixmap( "triangle_wave_inactive" ) );
	ToolTip::add( triangleWaveBtn,
			tr( "Click here for a triangle-wave." ) );

	PixmapButton * sqrWaveBtn = new PixmapButton( this, tr( "Square wave" ) );
	sqrWaveBtn->move( waveBtnX+(16*2), waveBtnY );
	sqrWaveBtn->setActiveGraphic( embed::getIconPixmap(
					"square_wave_active" ) );
	sqrWaveBtn->setInactiveGraphic( embed::getIconPixmap(
					"square_wave_inactive" ) );
	ToolTip::add( sqrWaveBtn,
			tr( "Click here for a square-wave." ) );

	PixmapButton * roundSqrWaveBtn =
		new PixmapButton( this, tr( "Rounded square wave" ) );
	roundSqrWaveBtn->move( waveBtnX+(16*3), waveBtnY );
	roundSqrWaveBtn->setActiveGraphic( embed::getIconPixmap(
					"round_square_wave_active" ) );
	roundSqrWaveBtn->setInactiveGraphic( embed::getIconPixmap(
					"round_square_wave_inactive" ) );
	ToolTip::add( roundSqrWaveBtn,
			tr( "Click here for a square-wave with a rounded end." ) );

	PixmapButton * moogWaveBtn =
		new PixmapButton( this, tr( "Moog wave" ) );
	moogWaveBtn->move( waveBtnX+(16*4), waveBtnY );
	moogWaveBtn->setActiveGraphic(
		embed::getIconPixmap( "moog_saw_wave_active" ) );
	moogWaveBtn->setInactiveGraphic(
		embed::getIconPixmap( "moog_saw_wave_inactive" ) );
	ToolTip::add( moogWaveBtn,
			tr( "Click here for a moog-like wave." ) );

	PixmapButton * sinWaveBtn = new PixmapButton( this, tr( "Sine wave" ) );
	sinWaveBtn->move( waveBtnX+(16*5), waveBtnY );
	sinWaveBtn->setActiveGraphic( embed::getIconPixmap(
						"sin_wave_active" ) );
	sinWaveBtn->setInactiveGraphic( embed::getIconPixmap(
						"sin_wave_inactive" ) );
	ToolTip::add( sinWaveBtn,
			tr( "Click for a sine-wave." ) );

	PixmapButton * exponentialWaveBtn =
		new PixmapButton( this, tr( "White noise wave" ) );
	exponentialWaveBtn->move( waveBtnX+(16*6), waveBtnY );
	exponentialWaveBtn->setActiveGraphic(
		embed::getIconPixmap( "exp_wave_active" ) );
	exponentialWaveBtn->setInactiveGraphic(
		embed::getIconPixmap( "exp_wave_inactive" ) );
	ToolTip::add( exponentialWaveBtn,
			tr( "Click here for an exponential wave." ) );


	PixmapButton * whiteNoiseWaveBtn =
		new PixmapButton( this, tr( "White noise wave" ) );
	whiteNoiseWaveBtn->move( waveBtnX+(16*7), waveBtnY );
	whiteNoiseWaveBtn->setActiveGraphic(
		embed::getIconPixmap( "white_noise_wave_active" ) );
	whiteNoiseWaveBtn->setInactiveGraphic(
		embed::getIconPixmap( "white_noise_wave_inactive" ) );
	ToolTip::add( whiteNoiseWaveBtn,
			tr( "Click here for white-noise." ) );

	PixmapButton * blSawWaveBtn =
		new PixmapButton( this, tr( "Bandlimited saw wave" ) );
	blSawWaveBtn->move( waveBtnX+(16*9)-8, waveBtnY );
	blSawWaveBtn->setActiveGraphic(
		embed::getIconPixmap( "saw_wave_active" ) );
	blSawWaveBtn->setInactiveGraphic(
		embed::getIconPixmap( "saw_wave_inactive" ) );
	ToolTip::add( blSawWaveBtn,
			tr( "Click here for bandlimited saw wave." ) );

	PixmapButton * blSquareWaveBtn =
		new PixmapButton( this, tr( "Bandlimited square wave" ) );
	blSquareWaveBtn->move( waveBtnX+(16*10)-8, waveBtnY );
	blSquareWaveBtn->setActiveGraphic(
		embed::getIconPixmap( "square_wave_active" ) );
	blSquareWaveBtn->setInactiveGraphic(
		embed::getIconPixmap( "square_wave_inactive" ) );
	ToolTip::add( blSquareWaveBtn,
			tr( "Click here for bandlimited square wave." ) );

	PixmapButton * blTriangleWaveBtn =
		new PixmapButton( this, tr( "Bandlimited triangle wave" ) );
	blTriangleWaveBtn->move( waveBtnX+(16*11)-8, waveBtnY );
	blTriangleWaveBtn->setActiveGraphic(
		embed::getIconPixmap( "triangle_wave_active" ) );
	blTriangleWaveBtn->setInactiveGraphic(
		embed::getIconPixmap( "triangle_wave_inactive" ) );
	ToolTip::add( blTriangleWaveBtn,
			tr( "Click here for bandlimited triangle wave." ) );

	PixmapButton * blMoogWaveBtn =
		new PixmapButton( this, tr( "Bandlimited moog saw wave" ) );
	blMoogWaveBtn->move( waveBtnX+(16*12)-8, waveBtnY );
	blMoogWaveBtn->setActiveGraphic(
		embed::getIconPixmap( "moog_saw_wave_active" ) );
	blMoogWaveBtn->setInactiveGraphic(
		embed::getIconPixmap( "moog_saw_wave_inactive" ) );
	ToolTip::add( blMoogWaveBtn,
			tr( "Click here for bandlimited moog saw wave." ) );


	m_waveBtnGrp = new automatableButtonGroup( this );
	m_waveBtnGrp->addButton( sawWaveBtn );
	m_waveBtnGrp->addButton( triangleWaveBtn );
	m_waveBtnGrp->addButton( sqrWaveBtn );
	m_waveBtnGrp->addButton( roundSqrWaveBtn );
	m_waveBtnGrp->addButton( moogWaveBtn );
	m_waveBtnGrp->addButton( sinWaveBtn );
	m_waveBtnGrp->addButton( exponentialWaveBtn );
	m_waveBtnGrp->addButton( whiteNoiseWaveBtn );
	m_waveBtnGrp->addButton( blSawWaveBtn );
	m_waveBtnGrp->addButton( blSquareWaveBtn );
	m_waveBtnGrp->addButton( blTriangleWaveBtn );
	m_waveBtnGrp->addButton( blMoogWaveBtn );

	setAutoFillBackground( true );
	QPalette pal;
	pal.setBrush( backgroundRole(), PLUGIN_NAME::getIconPixmap(
			"artwork" ) );
	setPalette( pal );
}
Ejemplo n.º 5
0
TripleOscillatorView::TripleOscillatorView( Instrument * _instrument,
        QWidget * _parent ) :
    InstrumentView( _instrument, _parent )
{
    setAutoFillBackground( true );
    QPalette pal;
    pal.setBrush( backgroundRole(),
                  PLUGIN_NAME::getIconPixmap( "artwork" ) );
    setPalette( pal );

    const int mod_x = 66;
    const int mod1_y = 58;
    const int mod2_y = 75;
    const int osc_y = 109;
    const int osc_h = 52;

    // TODO: clean rewrite using layouts and all that...
    PixmapButton * pm_osc1_btn = new PixmapButton( this, NULL );
    pm_osc1_btn->move( mod_x, mod1_y );
    pm_osc1_btn->setActiveGraphic( PLUGIN_NAME::getIconPixmap(
                                       "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" ) );

    PixmapButton * am_osc1_btn = new PixmapButton( this, NULL );
    am_osc1_btn->move( mod_x + 35, mod1_y );
    am_osc1_btn->setActiveGraphic( PLUGIN_NAME::getIconPixmap(
                                       "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" ) );

    PixmapButton * mix_osc1_btn = new PixmapButton( this, NULL );
    mix_osc1_btn->move( mod_x + 70, mod1_y );
    mix_osc1_btn->setActiveGraphic( PLUGIN_NAME::getIconPixmap(
                                        "mix_active" ) );
    mix_osc1_btn->setInactiveGraphic( PLUGIN_NAME::getIconPixmap(
                                          "mix_inactive" ) );
    ToolTip::add( mix_osc1_btn, tr( "Mix output of oscillator 1 & 2" ) );

    PixmapButton * sync_osc1_btn = new PixmapButton( this, NULL );
    sync_osc1_btn->move( mod_x + 105, mod1_y );
    sync_osc1_btn->setActiveGraphic( PLUGIN_NAME::getIconPixmap(
                                         "sync_active" ) );
    sync_osc1_btn->setInactiveGraphic( PLUGIN_NAME::getIconPixmap(
                                           "sync_inactive" ) );
    ToolTip::add( sync_osc1_btn, tr( "Synchronize oscillator 1 with "
                                     "oscillator 2" ) );

    PixmapButton * fm_osc1_btn = new PixmapButton( this, NULL );
    fm_osc1_btn->move( mod_x + 140, mod1_y );
    fm_osc1_btn->setActiveGraphic( PLUGIN_NAME::getIconPixmap(
                                       "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" ) );

    m_mod1BtnGrp = new automatableButtonGroup( this );
    m_mod1BtnGrp->addButton( pm_osc1_btn );
    m_mod1BtnGrp->addButton( am_osc1_btn );
    m_mod1BtnGrp->addButton( mix_osc1_btn );
    m_mod1BtnGrp->addButton( sync_osc1_btn );
    m_mod1BtnGrp->addButton( fm_osc1_btn );



    PixmapButton * pm_osc2_btn = new PixmapButton( this, NULL );
    pm_osc2_btn->move( mod_x, mod2_y );
    pm_osc2_btn->setActiveGraphic( PLUGIN_NAME::getIconPixmap(
                                       "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" ) );

    PixmapButton * am_osc2_btn = new PixmapButton( this, NULL );
    am_osc2_btn->move( mod_x + 35, mod2_y );
    am_osc2_btn->setActiveGraphic( PLUGIN_NAME::getIconPixmap(
                                       "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" ) );

    PixmapButton * mix_osc2_btn = new PixmapButton( this, NULL );
    mix_osc2_btn->move( mod_x + 70, mod2_y );
    mix_osc2_btn->setActiveGraphic( PLUGIN_NAME::getIconPixmap(
                                        "mix_active" ) );
    mix_osc2_btn->setInactiveGraphic( PLUGIN_NAME::getIconPixmap(
                                          "mix_inactive" ) );
    ToolTip::add( mix_osc2_btn, tr("Mix output of oscillator 2 & 3" ) );

    PixmapButton * sync_osc2_btn = new PixmapButton( this, NULL );
    sync_osc2_btn->move( mod_x + 105, mod2_y );
    sync_osc2_btn->setActiveGraphic( PLUGIN_NAME::getIconPixmap(
                                         "sync_active" ) );
    sync_osc2_btn->setInactiveGraphic( PLUGIN_NAME::getIconPixmap(
                                           "sync_inactive" ) );
    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 );
    fm_osc2_btn->setActiveGraphic( PLUGIN_NAME::getIconPixmap(
                                       "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" ) );

    m_mod2BtnGrp = new automatableButtonGroup( this );

    m_mod2BtnGrp->addButton( pm_osc2_btn );
    m_mod2BtnGrp->addButton( am_osc2_btn );
    m_mod2BtnGrp->addButton( mix_osc2_btn );
    m_mod2BtnGrp->addButton( sync_osc2_btn );
    m_mod2BtnGrp->addButton( fm_osc2_btn );


    for( int i = 0; i < NUM_OF_OSCILLATORS; ++i )
    {
        int knob_y = osc_y + i * osc_h;

        // setup volume-knob
        Knob * vk = new Knob( knobStyled, this );
        vk->setVolumeKnob( true );
        vk->setFixedSize( 28, 35 );
        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 );
        frk->move( 140, knob_y );
        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 );
        pok->move( 188, knob_y );
        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 );
        spdk->move( 217, knob_y );
        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;

        PixmapButton * sin_wave_btn = new PixmapButton( this, NULL );
        sin_wave_btn->move( 128, btn_y );
        sin_wave_btn->setActiveGraphic( PLUGIN_NAME::getIconPixmap(
                                            "sin_shape_active" ) );
        sin_wave_btn->setInactiveGraphic( PLUGIN_NAME::getIconPixmap(
                                              "sin_shape_inactive" ) );
        ToolTip::add( sin_wave_btn,
                      tr( "Use a sine-wave for "
                          "current oscillator." ) );

        PixmapButton * triangle_wave_btn =
            new PixmapButton( this, NULL );
        triangle_wave_btn->move( 143, btn_y );
        triangle_wave_btn->setActiveGraphic(
            PLUGIN_NAME::getIconPixmap( "triangle_shape_active" ) );
        triangle_wave_btn->setInactiveGraphic(
            PLUGIN_NAME::getIconPixmap( "triangle_shape_inactive" ) );
        ToolTip::add( triangle_wave_btn,
                      tr( "Use a triangle-wave "
                          "for current oscillator." ) );

        PixmapButton * saw_wave_btn = new PixmapButton( this, NULL );
        saw_wave_btn->move( 158, btn_y );
        saw_wave_btn->setActiveGraphic( PLUGIN_NAME::getIconPixmap(
                                            "saw_shape_active" ) );
        saw_wave_btn->setInactiveGraphic( PLUGIN_NAME::getIconPixmap(
                                              "saw_shape_inactive" ) );
        ToolTip::add( saw_wave_btn,
                      tr( "Use a saw-wave for "
                          "current oscillator." ) );

        PixmapButton * sqr_wave_btn = new PixmapButton( this, NULL );
        sqr_wave_btn->move( 173, btn_y );
        sqr_wave_btn->setActiveGraphic( PLUGIN_NAME::getIconPixmap(
                                            "square_shape_active" ) );
        sqr_wave_btn->setInactiveGraphic( PLUGIN_NAME::getIconPixmap(
                                              "square_shape_inactive" ) );
        ToolTip::add( sqr_wave_btn,
                      tr( "Use a square-wave for "
                          "current oscillator." ) );

        PixmapButton * moog_saw_wave_btn =
            new PixmapButton( this, NULL );
        moog_saw_wave_btn->move( 188, btn_y );
        moog_saw_wave_btn->setActiveGraphic(
            PLUGIN_NAME::getIconPixmap( "moog_saw_shape_active" ) );
        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." ) );

        PixmapButton * exp_wave_btn = new PixmapButton( this, NULL );
        exp_wave_btn->move( 203, btn_y );
        exp_wave_btn->setActiveGraphic( PLUGIN_NAME::getIconPixmap(
                                            "exp_shape_active" ) );
        exp_wave_btn->setInactiveGraphic( PLUGIN_NAME::getIconPixmap(
                                              "exp_shape_inactive" ) );
        ToolTip::add( exp_wave_btn,
                      tr( "Use an exponential "
                          "wave for current oscillator." ) );

        PixmapButton * white_noise_btn = new PixmapButton( this, NULL );
        white_noise_btn->move( 218, btn_y );
        white_noise_btn->setActiveGraphic(
            PLUGIN_NAME::getIconPixmap( "white_noise_shape_active" ) );
        white_noise_btn->setInactiveGraphic(
            PLUGIN_NAME::getIconPixmap( "white_noise_shape_inactive" ) );
        ToolTip::add( white_noise_btn,
                      tr( "Use white-noise for "
                          "current oscillator." ) );

        PixmapButton * uwb = new PixmapButton( this, NULL );
        uwb->move( 233, btn_y );
        uwb->setActiveGraphic( PLUGIN_NAME::getIconPixmap(
                                   "usr_shape_active" ) );
        uwb->setInactiveGraphic( PLUGIN_NAME::getIconPixmap(
                                     "usr_shape_inactive" ) );
        ToolTip::add( uwb, tr( "Use a user-defined "
                               "waveform for current oscillator." ) );

        automatableButtonGroup * wsbg =
            new automatableButtonGroup( this );

        wsbg->addButton( sin_wave_btn );
        wsbg->addButton( triangle_wave_btn );
        wsbg->addButton( saw_wave_btn );
        wsbg->addButton( sqr_wave_btn );
        wsbg->addButton( moog_saw_wave_btn );
        wsbg->addButton( exp_wave_btn );
        wsbg->addButton( white_noise_btn );
        wsbg->addButton( uwb );

        m_oscKnobs[i] = OscillatorKnobs( vk, pk, ck, flk, frk, pok,
                                         spdk, uwb, wsbg );
    }
}