vibedView::vibedView( Instrument * _instrument, QWidget * _parent ) : InstrumentView( _instrument, _parent ) { setAutoFillBackground( true ); QPalette pal; pal.setBrush( backgroundRole(), PLUGIN_NAME::getIconPixmap( "artwork" ) ); setPalette( pal ); 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_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_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_randomKnob = new Knob( knobBright_26, this ); m_randomKnob->move( 194, 187 ); m_randomKnob->setHintText( tr( "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->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." ) ); m_harmonic = new nineButtonSelector( PLUGIN_NAME::getIconPixmap( "button_-2_on" ), PLUGIN_NAME::getIconPixmap( "button_-2_off" ), PLUGIN_NAME::getIconPixmap( "button_-1_on" ), PLUGIN_NAME::getIconPixmap( "button_-1_off" ), PLUGIN_NAME::getIconPixmap( "button_f_on" ), PLUGIN_NAME::getIconPixmap( "button_f_off" ), PLUGIN_NAME::getIconPixmap( "button_2_on" ), PLUGIN_NAME::getIconPixmap( "button_2_off" ), PLUGIN_NAME::getIconPixmap( "button_3_on" ), PLUGIN_NAME::getIconPixmap( "button_3_off" ), PLUGIN_NAME::getIconPixmap( "button_4_on" ), PLUGIN_NAME::getIconPixmap( "button_4_off" ), PLUGIN_NAME::getIconPixmap( "button_5_on" ), PLUGIN_NAME::getIconPixmap( "button_5_off" ), PLUGIN_NAME::getIconPixmap( "button_6_on" ), PLUGIN_NAME::getIconPixmap( "button_6_off" ), PLUGIN_NAME::getIconPixmap( "button_7_on" ), PLUGIN_NAME::getIconPixmap( "button_7_off" ), 2, 21, 127, 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( PLUGIN_NAME::getIconPixmap( "button_1_on" ), PLUGIN_NAME::getIconPixmap( "button_1_off" ), PLUGIN_NAME::getIconPixmap( "button_2_on" ), PLUGIN_NAME::getIconPixmap( "button_2_off" ), PLUGIN_NAME::getIconPixmap( "button_3_on" ), PLUGIN_NAME::getIconPixmap( "button_3_off" ), PLUGIN_NAME::getIconPixmap( "button_4_on" ), PLUGIN_NAME::getIconPixmap( "button_4_off" ), PLUGIN_NAME::getIconPixmap( "button_5_on" ), PLUGIN_NAME::getIconPixmap( "button_5_off" ), PLUGIN_NAME::getIconPixmap( "button_6_on" ), PLUGIN_NAME::getIconPixmap( "button_6_off" ), PLUGIN_NAME::getIconPixmap( "button_7_on" ), PLUGIN_NAME::getIconPixmap( "button_7_off" ), PLUGIN_NAME::getIconPixmap( "button_8_on" ), PLUGIN_NAME::getIconPixmap( "button_8_off" ), PLUGIN_NAME::getIconPixmap( "button_9_on" ), PLUGIN_NAME::getIconPixmap( "button_9_off" ), 0, 21, 39, this); m_graph = new Graph( this ); m_graph->setWindowTitle( tr( "Impulse Editor" ) ); m_graph->setForeground( PLUGIN_NAME::getIconPixmap( "wavegraph4" ) ); 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." ) ); // 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 ) ) ); showString( 0 ); m_sinWaveBtn = new PixmapButton( this, tr( "Sine wave" ) ); m_sinWaveBtn->move( 212, 24 ); m_sinWaveBtn->setActiveGraphic( embed::getIconPixmap( "sin_wave_active" ) ); m_sinWaveBtn->setInactiveGraphic( embed::getIconPixmap( "sin_wave_inactive" ) ); ToolTip::add( m_sinWaveBtn, tr( "Use a sine-wave for " "current oscillator." ) ); connect( m_sinWaveBtn, SIGNAL (clicked () ), this, SLOT ( sinWaveClicked() ) ); m_triangleWaveBtn = new PixmapButton( this, tr( "Triangle wave" ) ); m_triangleWaveBtn->move( 212, 41 ); m_triangleWaveBtn->setActiveGraphic( embed::getIconPixmap( "triangle_wave_active" ) ); m_triangleWaveBtn->setInactiveGraphic( embed::getIconPixmap( "triangle_wave_inactive" ) ); ToolTip::add( m_triangleWaveBtn, tr( "Use a triangle-wave " "for current oscillator." ) ); connect( m_triangleWaveBtn, SIGNAL ( clicked () ), this, SLOT ( triangleWaveClicked( ) ) ); m_sawWaveBtn = new PixmapButton( this, tr( "Saw wave" ) ); m_sawWaveBtn->move( 212, 58 ); m_sawWaveBtn->setActiveGraphic( embed::getIconPixmap( "saw_wave_active" ) ); m_sawWaveBtn->setInactiveGraphic( embed::getIconPixmap( "saw_wave_inactive" ) ); ToolTip::add( m_sawWaveBtn, tr( "Use a saw-wave for " "current oscillator." ) ); connect( m_sawWaveBtn, SIGNAL (clicked () ), this, SLOT ( sawWaveClicked() ) ); m_sqrWaveBtn = new PixmapButton( this, tr( "Square wave" ) ); m_sqrWaveBtn->move( 212, 75 ); m_sqrWaveBtn->setActiveGraphic( embed::getIconPixmap( "square_wave_active" ) ); m_sqrWaveBtn->setInactiveGraphic( embed::getIconPixmap( "square_wave_inactive" ) ); ToolTip::add( m_sqrWaveBtn, tr( "Use a square-wave for " "current oscillator." ) ); connect( m_sqrWaveBtn, SIGNAL ( clicked () ), this, SLOT ( sqrWaveClicked() ) ); m_whiteNoiseWaveBtn = new PixmapButton( this, tr( "White noise wave" ) ); 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." ) ); connect( m_whiteNoiseWaveBtn, SIGNAL ( clicked () ), this, SLOT ( noiseWaveClicked() ) ); 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." ) ); connect( m_usrWaveBtn, SIGNAL ( clicked () ), this, SLOT ( usrWaveClicked() ) ); m_smoothBtn = new PixmapButton( this, tr( "Smooth" ) ); m_smoothBtn->move( 79, 129 ); m_smoothBtn->setActiveGraphic( PLUGIN_NAME::getIconPixmap( "smooth_active" ) ); m_smoothBtn->setInactiveGraphic( PLUGIN_NAME::getIconPixmap( "smooth_inactive" ) ); m_smoothBtn->setChecked( false ); ToolTip::add( m_smoothBtn, tr( "Click here to smooth waveform." ) ); connect( m_smoothBtn, SIGNAL ( clicked () ), this, SLOT ( smoothClicked() ) ); m_normalizeBtn = new PixmapButton( this, tr( "Normalize" ) ); m_normalizeBtn->move( 96, 129 ); m_normalizeBtn->setActiveGraphic( PLUGIN_NAME::getIconPixmap( "normalize_active" ) ); m_normalizeBtn->setInactiveGraphic( PLUGIN_NAME::getIconPixmap( "normalize_inactive" ) ); m_normalizeBtn->setChecked( false ); ToolTip::add( m_normalizeBtn, tr( "Click here to normalize waveform." ) ); connect( m_normalizeBtn, SIGNAL ( clicked () ), this, SLOT ( normalizeClicked() ) ); }
bitInvaderView::bitInvaderView( Instrument * _instrument, QWidget * _parent ) : InstrumentView( _instrument, _parent ) { setAutoFillBackground( true ); QPalette pal; pal.setBrush( backgroundRole(), PLUGIN_NAME::getIconPixmap( "artwork" ) ); setPalette( pal ); m_sampleLengthKnob = new Knob( knobDark_28, this ); m_sampleLengthKnob->move( 6, 201 ); m_sampleLengthKnob->setHintText( tr( "Sample Length" ), "" ); m_graph = new Graph( this, Graph::NearestStyle, 204, 134 ); m_graph->move(23,59); // 55,120 - 2px border m_graph->setAutoFillBackground( true ); m_graph->setGraphColor( QColor( 255, 255, 255 ) ); 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") ); m_graph->setPalette( pal ); m_sinWaveBtn = new PixmapButton( this, tr( "Sine wave" ) ); m_sinWaveBtn->move( 131, 205 ); 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." ) ); m_triangleWaveBtn = new PixmapButton( this, tr( "Triangle wave" ) ); m_triangleWaveBtn->move( 131 + 14, 205 ); m_triangleWaveBtn->setActiveGraphic( embed::getIconPixmap( "triangle_wave_active" ) ); m_triangleWaveBtn->setInactiveGraphic( embed::getIconPixmap( "triangle_wave_inactive" ) ); ToolTip::add( m_triangleWaveBtn, tr( "Click here for a triangle-wave." ) ); m_sawWaveBtn = new PixmapButton( this, tr( "Saw wave" ) ); m_sawWaveBtn->move( 131 + 14*2, 205 ); 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." ) ); m_sqrWaveBtn = new PixmapButton( this, tr( "Square wave" ) ); m_sqrWaveBtn->move( 131 + 14*3, 205 ); 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." ) ); m_whiteNoiseWaveBtn = new PixmapButton( this, tr( "White noise wave" ) ); 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." ) ); 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." ) ); m_smoothBtn = new PixmapButton( this, tr( "Smooth" ) ); 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." ) ); m_interpolationToggle = new LedCheckBox( "Interpolation", this, tr( "Interpolation" ), LedCheckBox::Yellow ); m_interpolationToggle->move( 131, 221 ); m_normalizeToggle = new LedCheckBox( "Normalize", this, tr( "Normalize" ), LedCheckBox::Green ); m_normalizeToggle->move( 131, 236 ); connect( m_sinWaveBtn, SIGNAL (clicked () ), this, SLOT ( sinWaveClicked() ) ); connect( m_triangleWaveBtn, SIGNAL ( clicked () ), this, SLOT ( triangleWaveClicked() ) ); connect( m_sawWaveBtn, SIGNAL (clicked () ), this, SLOT ( sawWaveClicked() ) ); connect( m_sqrWaveBtn, SIGNAL ( clicked () ), this, SLOT ( sqrWaveClicked() ) ); connect( m_whiteNoiseWaveBtn, SIGNAL ( clicked () ), this, SLOT ( noiseWaveClicked() ) ); connect( m_usrWaveBtn, SIGNAL ( clicked () ), this, SLOT ( usrWaveClicked() ) ); connect( m_smoothBtn, SIGNAL ( clicked () ), this, SLOT ( smoothClicked() ) ); connect( m_interpolationToggle, SIGNAL( toggled( bool ) ), this, SLOT ( interpolationToggled( bool ) ) ); connect( m_normalizeToggle, SIGNAL( toggled( bool ) ), this, SLOT ( normalizeToggled( bool ) ) ); }
WatsynView::WatsynView( Instrument * _instrument, QWidget * _parent ) : InstrumentView( _instrument, _parent ) { setAutoFillBackground( true ); QPalette pal; pal.setBrush( backgroundRole(), PLUGIN_NAME::getIconPixmap( "artwork" ) ); setPalette( pal ); // knobs... lots of em makeknob( a1_volKnob, 130, A1ROW, tr( "Volume" ), "%", "aKnob" ) makeknob( a2_volKnob, 130, A2ROW, tr( "Volume" ), "%", "aKnob" ) makeknob( b1_volKnob, 130, B1ROW, tr( "Volume" ), "%", "bKnob" ) makeknob( b2_volKnob, 130, B2ROW, tr( "Volume" ), "%", "bKnob" ) makeknob( a1_panKnob, 154, A1ROW, tr( "Panning" ), "", "aKnob" ) makeknob( a2_panKnob, 154, A2ROW, tr( "Panning" ), "", "aKnob" ) makeknob( b1_panKnob, 154, B1ROW, tr( "Panning" ), "", "bKnob" ) makeknob( b2_panKnob, 154, B2ROW, tr( "Panning" ), "", "bKnob" ) makeknob( a1_multKnob, 178, A1ROW, tr( "Freq. multiplier" ), "/8", "aKnob" ) makeknob( a2_multKnob, 178, A2ROW, tr( "Freq. multiplier" ), "/8", "aKnob" ) makeknob( b1_multKnob, 178, B1ROW, tr( "Freq. multiplier" ), "/8", "bKnob" ) makeknob( b2_multKnob, 178, B2ROW, tr( "Freq. multiplier" ), "/8", "bKnob" ) makeknob( a1_ltuneKnob, 202, A1ROW, tr( "Left detune" ), tr( " cents" ), "aKnob" ) makeknob( a2_ltuneKnob, 202, A2ROW, tr( "Left detune" ), tr( " cents" ), "aKnob" ) makeknob( b1_ltuneKnob, 202, B1ROW, tr( "Left detune" ), tr( " cents" ), "bKnob" ) makeknob( b2_ltuneKnob, 202, B2ROW, tr( "Left detune" ), tr( " cents" ), "bKnob" ) makeknob( a1_rtuneKnob, 226, A1ROW, tr( "Right detune" ), tr( " cents" ), "aKnob" ) makeknob( a2_rtuneKnob, 226, A2ROW, tr( "Right detune" ), tr( " cents" ), "aKnob" ) makeknob( b1_rtuneKnob, 226, B1ROW, tr( "Right detune" ), tr( " cents" ), "bKnob" ) makeknob( b2_rtuneKnob, 226, B2ROW, tr( "Right detune" ), tr( " cents" ), "bKnob" ) makeknob( m_abmixKnob, 4, 3, tr( "A-B Mix" ), "", "mixKnob" ) makeknob( m_envAmtKnob, 88, 3, tr( "Mix envelope amount" ), "", "mixenvKnob" ) maketsknob( m_envAttKnob, 88, A1ROW, tr( "Mix envelope attack" ), " ms", "mixenvKnob" ) maketsknob( m_envHoldKnob, 88, A2ROW, tr( "Mix envelope hold" ), " ms", "mixenvKnob" ) maketsknob( m_envDecKnob, 88, B1ROW, tr( "Mix envelope decay" ), " ms", "mixenvKnob" ) makeknob( m_xtalkKnob, 88, B2ROW, tr( "Crosstalk" ), "", "xtalkKnob" ) // let's set volume knobs a1_volKnob -> setVolumeKnob( true ); a2_volKnob -> setVolumeKnob( true ); b1_volKnob -> setVolumeKnob( true ); b2_volKnob -> setVolumeKnob( true ); m_abmixKnob -> setFixedSize( 31, 31 ); // button groups next. // graph select buttons PixmapButton * a1_selectButton = new PixmapButton( this, NULL ); a1_selectButton -> move( 4, 121 ); a1_selectButton -> setActiveGraphic( PLUGIN_NAME::getIconPixmap( "a1_active" ) ); a1_selectButton -> setInactiveGraphic( PLUGIN_NAME::getIconPixmap( "a1_inactive" ) ); ToolTip::add( a1_selectButton, tr( "Select oscillator A1") ); PixmapButton * a2_selectButton = new PixmapButton( this, NULL ); a2_selectButton -> move( 44, 121 ); a2_selectButton -> setActiveGraphic( PLUGIN_NAME::getIconPixmap( "a2_active" ) ); a2_selectButton -> setInactiveGraphic( PLUGIN_NAME::getIconPixmap( "a2_inactive" ) ); ToolTip::add( a2_selectButton, tr( "Select oscillator A2") ); PixmapButton * b1_selectButton = new PixmapButton( this, NULL ); b1_selectButton -> move( 84, 121 ); b1_selectButton -> setActiveGraphic( PLUGIN_NAME::getIconPixmap( "b1_active" ) ); b1_selectButton -> setInactiveGraphic( PLUGIN_NAME::getIconPixmap( "b1_inactive" ) ); ToolTip::add( b1_selectButton, tr( "Select oscillator B1") ); PixmapButton * b2_selectButton = new PixmapButton( this, NULL ); b2_selectButton -> move( 124, 121 ); b2_selectButton -> setActiveGraphic( PLUGIN_NAME::getIconPixmap( "b2_active" ) ); b2_selectButton -> setInactiveGraphic( PLUGIN_NAME::getIconPixmap( "b2_inactive" ) ); ToolTip::add( b2_selectButton, tr( "Select oscillator B2") ); m_selectedGraphGroup = new automatableButtonGroup( this ); m_selectedGraphGroup -> addButton( a1_selectButton ); m_selectedGraphGroup -> addButton( a2_selectButton ); m_selectedGraphGroup -> addButton( b1_selectButton ); m_selectedGraphGroup -> addButton( b2_selectButton ); WatsynInstrument * w = castModel<WatsynInstrument>(); m_selectedGraphGroup -> setModel( &w -> m_selectedGraph); // A-modulation button group PixmapButton * amod_mixButton = new PixmapButton( this, NULL ); amod_mixButton -> move( 4, 50 ); amod_mixButton -> setActiveGraphic( PLUGIN_NAME::getIconPixmap( "amix_active" ) ); amod_mixButton -> setInactiveGraphic( PLUGIN_NAME::getIconPixmap( "amix_inactive" ) ); ToolTip::add( amod_mixButton, tr( "Mix output of A2 to A1" ) ); PixmapButton * amod_amButton = new PixmapButton( this, NULL ); 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" ) ); 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" ) ); 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" ) ); m_aModGroup = new automatableButtonGroup( this ); m_aModGroup -> addButton( amod_mixButton ); m_aModGroup -> addButton( amod_amButton ); m_aModGroup -> addButton( amod_rmButton ); m_aModGroup -> addButton( amod_pmButton ); // B-modulation button group PixmapButton * bmod_mixButton = new PixmapButton( this, NULL ); bmod_mixButton -> move( 44, 50 ); bmod_mixButton -> setActiveGraphic( PLUGIN_NAME::getIconPixmap( "bmix_active" ) ); bmod_mixButton -> setInactiveGraphic( PLUGIN_NAME::getIconPixmap( "bmix_inactive" ) ); ToolTip::add( bmod_mixButton, tr( "Mix output of B2 to B1" ) ); PixmapButton * bmod_amButton = new PixmapButton( this, NULL ); 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" ) ); 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" ) ); 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" ) ); m_bModGroup = new automatableButtonGroup( this ); m_bModGroup -> addButton( bmod_mixButton ); m_bModGroup -> addButton( bmod_amButton ); m_bModGroup -> addButton( bmod_rmButton ); m_bModGroup -> addButton( bmod_pmButton ); // graph widgets pal = QPalette(); pal.setBrush( backgroundRole(), PLUGIN_NAME::getIconPixmap("wavegraph") ); // a1 graph a1_graph = new Graph( this, Graph::LinearStyle, 224, 105 ); a1_graph->move( 4, 141 ); a1_graph->setAutoFillBackground( true ); a1_graph->setGraphColor( QColor( 0x43, 0xb2, 0xff ) ); ToolTip::add( a1_graph, tr ( "Draw your own waveform here by dragging your mouse on this graph." ) ); a1_graph->setPalette( pal ); // a2 graph a2_graph = new Graph( this, Graph::LinearStyle, 224, 105 ); a2_graph->move( 4, 141 ); a2_graph->setAutoFillBackground( true ); a2_graph->setGraphColor( QColor( 0x43, 0xb2, 0xff ) ); ToolTip::add( a2_graph, tr ( "Draw your own waveform here by dragging your mouse on this graph." ) ); a2_graph->setPalette( pal ); // b1 graph b1_graph = new Graph( this, Graph::LinearStyle, 224, 105 ); b1_graph->move( 4, 141 ); b1_graph->setAutoFillBackground( true ); b1_graph->setGraphColor( QColor( 0xfc, 0x54, 0x31 ) ); ToolTip::add( b1_graph, tr ( "Draw your own waveform here by dragging your mouse on this graph." ) ); b1_graph->setPalette( pal ); // b2 graph b2_graph = new Graph( this, Graph::LinearStyle, 224, 105 ); b2_graph->move( 4, 141 ); b2_graph->setAutoFillBackground( true ); b2_graph->setGraphColor( QColor( 0xfc, 0x54, 0x31 ) ); ToolTip::add( b2_graph, tr ( "Draw your own waveform here by dragging your mouse on this graph." ) ); b2_graph->setPalette( pal ); // misc pushbuttons // waveform modifications m_loadButton = new PixmapButton( this, tr( "Load waveform" ) ); 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" ) ); 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" ) ); 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" ) ); 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" ) ); 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" ) ); 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" ) ); // waveforms m_sinWaveButton = new PixmapButton( this, tr( "Sine wave" ) ); 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" ) ); 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" ) ); 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" ) ); 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" ) ); connect( m_sinWaveButton, SIGNAL( clicked() ), this, SLOT( sinWaveClicked() ) ); connect( m_triWaveButton, SIGNAL( clicked() ), this, SLOT( triWaveClicked() ) ); connect( m_sawWaveButton, SIGNAL( clicked() ), this, SLOT( sawWaveClicked() ) ); connect( m_sqrWaveButton, SIGNAL( clicked() ), this, SLOT( sqrWaveClicked() ) ); connect( m_normalizeButton, SIGNAL( clicked() ), this, SLOT( normalizeClicked() ) ); connect( m_invertButton, SIGNAL( clicked() ), this, SLOT( invertClicked() ) ); connect( m_smoothButton, SIGNAL( clicked() ), this, SLOT( smoothClicked() ) ); connect( m_phaseLeftButton, SIGNAL( clicked() ), this, SLOT( phaseLeftClicked() ) ); connect( m_phaseRightButton, SIGNAL( clicked() ), this, SLOT( phaseRightClicked() ) ); connect( m_loadButton, SIGNAL( clicked() ), this, SLOT( loadClicked() ) ); connect( a1_selectButton, SIGNAL( clicked() ), this, SLOT( updateLayout() ) ); connect( a2_selectButton, SIGNAL( clicked() ), this, SLOT( updateLayout() ) ); connect( b1_selectButton, SIGNAL( clicked() ), this, SLOT( updateLayout() ) ); connect( b2_selectButton, SIGNAL( clicked() ), this, SLOT( updateLayout() ) ); updateLayout(); }