コード例 #1
0
void SamplePlayerNodeTestApp::processDrag( Vec2i pos )
{
	if( mGainSlider.hitTest( pos ) )
		mGain->setValue( mGainSlider.mValueScaled );
	else if( mPanSlider.hitTest( pos ) )
		mPan->setPos( mPanSlider.mValueScaled );
	else if( mLoopBeginSlider.hitTest( pos ) )
		mSamplePlayerNode->setLoopBeginTime( mLoopBeginSlider.mValueScaled );
	else if( mLoopEndSlider.hitTest( pos ) )
		mSamplePlayerNode->setLoopEndTime( mLoopEndSlider.mValueScaled );
	else if( pos.y > getWindowCenter().y )
		seek( pos.x );
}
コード例 #2
0
ファイル: ex_synth.cpp プロジェクト: SaiSrini/Shooter
bool Group::get_pan_if_changed(float *pan)
{
   *pan = pan_slider.get_cur_value() / 100.0 - 1.0;
   bool changed = (last_pan != *pan);
   last_pan = *pan;
   return changed;
}
コード例 #3
0
ファイル: ex_synth.cpp プロジェクト: SaiSrini/Shooter
bool Group::get_gain_if_changed(float *gain)
{
   *gain = gain_slider.get_cur_value() / 100.0;
   bool changed = (last_gain != *gain);
   last_gain = *gain;
   return changed;
}
コード例 #4
0
ファイル: VoiceTestApp.cpp プロジェクト: CinimodStudio/Cinder
void VoiceTestApp::setupUI()
{
	mPlayButton = Button( false, "start" );
	mPlayButton.mBounds = Rectf( 0, 0, 200, 60 );
	mWidgets.push_back( &mPlayButton );

	mTestSelector.mSegments.push_back( "basic" );
	mTestSelector.mSegments.push_back( "basic stereo" );
	mTestSelector.mSegments.push_back( "file 2" );
	mTestSelector.mSegments.push_back( "scope" );
	mWidgets.push_back( &mTestSelector );

	mVolumeSlider.mTitle = "Volume";
	mVolumeSlider.mMax = 1;
	mVolumeSlider.set( mVoice->getVolume() );
	mWidgets.push_back( &mVolumeSlider );

//	mEnableSineButton.mIsToggle = true;
//	mEnableSineButton.mTitleNormal = "sine disabled";
//	mEnableSineButton.mTitleEnabled = "sine enabled";
//	mEnableSineButton.mBounds = Rectf( 0, 70, 200, 120 );
//	mWidgets.push_back( &mEnableSineButton );


	getWindow()->getSignalMouseDown().connect( [this] ( MouseEvent &event ) { processTap( event.getPos() ); } );
	getWindow()->getSignalMouseDrag().connect( [this] ( MouseEvent &event ) { processDrag( event.getPos() ); } );
	getWindow()->getSignalTouchesBegan().connect( [this] ( TouchEvent &event ) { processTap( event.getTouches().front().getPos() ); } );
	getWindow()->getSignalTouchesMoved().connect( [this] ( TouchEvent &event ) {
		for( const TouchEvent::Touch &touch : getActiveTouches() )
			processDrag( touch.getPos() );
	} );

	gl::enableAlphaBlending();
}
コード例 #5
0
ファイル: VoiceTestApp.cpp プロジェクト: CinimodStudio/Cinder
void VoiceTestApp::setup()
{
	mVolumeSlider.set( DEFAULT_VOLUME );

	setupBasic();

	PRINT_GRAPH( audio::master() );

	setupUI();
}
コード例 #6
0
ファイル: SampleTestApp.cpp プロジェクト: Drakesinger/Cinder
void SamplePlayerNodeTestApp::processDrag( ivec2 pos )
{
	if( mGainSlider.hitTest( pos ) )
		mGain->setValue( mGainSlider.mValueScaled );
	else if( mPanSlider.hitTest( pos ) ) {
#if TEST_STEREO_INPUT_PANNING
		mPan->getParamPos()->applyRamp( mPanSlider.mValueScaled, 0.6f );
#else
		mPan->setPos( mPanSlider.mValueScaled );
#endif
	}
	else if( mLoopBeginSlider.hitTest( pos ) )
		mSamplePlayerNode->setLoopBeginTime( mLoopBeginSlider.mValueScaled );
	else if( mLoopEndSlider.hitTest( pos ) )
		mSamplePlayerNode->setLoopEndTime( mLoopEndSlider.mValueScaled );
	else if( mTriggerDelaySlider.hitTest( pos ) ) {
	}
	else if( pos.y > getWindowCenter().y )
		seek( pos.x );
}
コード例 #7
0
ファイル: ex_synth.cpp プロジェクト: SaiSrini/Shooter
float Group::get_phase() const
{
   return phase_slider.get_cur_value() / 100.0 - PI;
}
コード例 #8
0
ファイル: ex_synth.cpp プロジェクト: SaiSrini/Shooter
float Group::get_frequency() const
{
   return freq_slider.get_cur_value();
}
コード例 #9
0
ファイル: DeviceTestApp.cpp プロジェクト: ffimusic/Cinder
void DeviceTestApp::processDrag( ivec2 pos )
{
    if( mGainSlider.hitTest( pos ) )
        mGain->getParam()->applyRamp( mGainSlider.mValueScaled, 0.025f );
}
コード例 #10
0
ファイル: DeviceTestApp.cpp プロジェクト: ffimusic/Cinder
void DeviceTestApp::setupUI()
{
    mInputDeviceNodeUnderrunFade = mInputDeviceNodeOverrunFade = mOutputDeviceNodeClipFade = 0;
    mViewYOffset = 0;

    mPlayButton = Button( true, "stopped", "playing" );
    mWidgets.push_back( &mPlayButton );

    mRecordButton = Button( false, "record" );
    mWidgets.push_back( &mRecordButton );

    mTestSelector.mSegments.push_back( "sinewave" );
    mTestSelector.mSegments.push_back( "noise" );
    mTestSelector.mSegments.push_back( "input (pulled)" );
    mTestSelector.mSegments.push_back( "I/O (clean)" );
    mTestSelector.mSegments.push_back( "I/O (processed)" );
    mTestSelector.mSegments.push_back( "I/O and sine" );
    mTestSelector.mSegments.push_back( "send" );
    mTestSelector.mSegments.push_back( "send stereo" );
    mWidgets.push_back( &mTestSelector );

#if defined( CINDER_COCOA_TOUCH )
    mPlayButton.mBounds = Rectf( 0, 0, 120, 60 );
    mRecordButton.mBounds = Rectf( 130, 0, 190, 34 );
    mTestSelector.mBounds = Rectf( getWindowWidth() - 190, 0, getWindowWidth(), 180 );
#else
    mPlayButton.mBounds = Rectf( 0, 0, 200, 60 );
    mRecordButton.mBounds = Rectf( 210, 0, 310, 40 );
    mTestSelector.mBounds = Rectf( getWindowCenter().x + 110, 0, (float)getWindowWidth(), 180 );
#endif

    mGainSlider.mBounds = Rectf( mTestSelector.mBounds.x1, mTestSelector.mBounds.y2 + 10, mTestSelector.mBounds.x2, mTestSelector.mBounds.y2 + 50 );
    mGainSlider.mTitle = "GainNode";
    mGainSlider.set( mGain->getValue() );
    mWidgets.push_back( &mGainSlider );

    mOutputSelector.mTitle = "Output Devices";
    mOutputSelector.mBounds = Rectf( mTestSelector.mBounds.x1, getWindowCenter().y + 40, (float)getWindowWidth(), (float)getWindowHeight() );
    if( mOutputDeviceNode ) {
        for( const auto &dev : audio::Device::getOutputDevices() ) {
            if( dev == mOutputDeviceNode->getDevice() )
                mOutputSelector.mCurrentSectionIndex = mOutputSelector.mSegments.size();
            mOutputSelector.mSegments.push_back( dev->getName() );
        }
    }
    mWidgets.push_back( &mOutputSelector );

    mInputSelector.mTitle = "Input Devices";
    mInputSelector.mBounds = mOutputSelector.mBounds - vec2( mOutputSelector.mBounds.getWidth() + 10, 0 );
    if( mOutputDeviceNode ) {
        for( const auto &dev : audio::Device::getInputDevices() ) {
            if( dev == mInputDeviceNode->getDevice() )
                mInputSelector.mCurrentSectionIndex = mInputSelector.mSegments.size();
            mInputSelector.mSegments.push_back( dev->getName() );
        }
    }
    mWidgets.push_back( &mInputSelector );

    Rectf textInputBounds( 0, getWindowCenter().y + 40, 200, getWindowCenter().y + 70  );
    mSamplerateInput.mBounds = textInputBounds;
    mSamplerateInput.mTitle = "samplerate";
    mSamplerateInput.setValue( audio::master()->getSampleRate() );
    mWidgets.push_back( &mSamplerateInput );

    textInputBounds += vec2( 0, textInputBounds.getHeight() + 24 );
    mFramesPerBlockInput.mBounds = textInputBounds;
    mFramesPerBlockInput.mTitle = "frames per block";
    mFramesPerBlockInput.setValue( audio::master()->getFramesPerBlock() );
    mWidgets.push_back( &mFramesPerBlockInput );

    textInputBounds += vec2( 0, textInputBounds.getHeight() + 24 );
    mNumInChannelsInput.mBounds = textInputBounds;
    mNumInChannelsInput.mTitle = "num inputs";
    if( mInputDeviceNode )
        mNumInChannelsInput.setValue( mInputDeviceNode->getNumChannels() );
    mWidgets.push_back( &mNumInChannelsInput );

    textInputBounds += vec2( 0, textInputBounds.getHeight() + 24 );
    mNumOutChannelsInput.mBounds = textInputBounds;
    mNumOutChannelsInput.mTitle = "num outputs";
    if( mOutputDeviceNode )
        mNumOutChannelsInput.setValue( mOutputDeviceNode->getNumChannels() );
    mWidgets.push_back( &mNumOutChannelsInput );

    textInputBounds += vec2( 0, textInputBounds.getHeight() + 24 );
    mSendChannelInput.mBounds = textInputBounds;
    mSendChannelInput.mTitle = "send channel";
    mSendChannelInput.setValue( 2 );
    mWidgets.push_back( &mSendChannelInput );

    vec2 xrunSize( 80, 26 );
    mUnderrunRect = Rectf( 0, mPlayButton.mBounds.y2 + 10, xrunSize.x, mPlayButton.mBounds.y2 + xrunSize.y + 10 );
    mOverrunRect = mUnderrunRect + vec2( xrunSize.x + 10, 0 );
    mClipRect = mOverrunRect + vec2( xrunSize.x + 10, 0 );

    getWindow()->getSignalMouseDown().connect( [this] ( MouseEvent &event ) {
        processTap( event.getPos() );
    } );
    getWindow()->getSignalMouseDrag().connect( [this] ( MouseEvent &event ) {
        processDrag( event.getPos() );
    } );
    getWindow()->getSignalTouchesBegan().connect( [this] ( TouchEvent &event ) {
        processTap( event.getTouches().front().getPos() );
    } );
    getWindow()->getSignalTouchesMoved().connect( [this] ( TouchEvent &event ) {
        for( const TouchEvent::Touch &touch : getActiveTouches() )
            processDrag( touch.getPos() );
    } );

#if defined( CINDER_COCOA_TOUCH )
    getSignalKeyboardWillShow().connect( [this] { timeline().apply( &mViewYOffset, -100.0f, 0.3f, EaseInOutCubic() );	} );
    getSignalKeyboardWillHide().connect( [this] { timeline().apply( &mViewYOffset, 0.0f, 0.3f, EaseInOutCubic() ); } );
#endif

    gl::enableAlphaBlending();
}
コード例 #11
0
void SamplePlayerNodeTestApp::setupUI()
{
	const float padding = 10.0f;

	auto buttonRect = Rectf( padding, padding, 200, 60 );
	mEnableSamplePlayerNodeButton.mIsToggle = true;
	mEnableSamplePlayerNodeButton.mTitleNormal = "player off";
	mEnableSamplePlayerNodeButton.mTitleEnabled = "player on";
	mEnableSamplePlayerNodeButton.mBounds = buttonRect;
	mWidgets.push_back( &mEnableSamplePlayerNodeButton );

	buttonRect += Vec2f( buttonRect.getWidth() + padding, 0 );
	mStartPlaybackButton.mIsToggle = false;
	mStartPlaybackButton.mTitleNormal = "start";
	mStartPlaybackButton.mBounds = buttonRect;
	mWidgets.push_back( &mStartPlaybackButton );

	buttonRect += Vec2f( buttonRect.getWidth() + padding, 0 );
	buttonRect.x2 -= 30;
	mLoopButton.mIsToggle = true;
	mLoopButton.mTitleNormal = "loop off";
	mLoopButton.mTitleEnabled = "loop on";
	mLoopButton.setEnabled( mSamplePlayerNode->isLoopEnabled() );
	mLoopButton.mBounds = buttonRect;
	mWidgets.push_back( &mLoopButton );

	buttonRect += Vec2f( buttonRect.getWidth() + padding, 0 );
	mAsyncButton.mIsToggle = true;
	mAsyncButton.mTitleNormal = "async off";
	mAsyncButton.mTitleEnabled = "async on";
	mAsyncButton.mBounds = buttonRect;
	mWidgets.push_back( &mAsyncButton );

	buttonRect = Rectf( padding, buttonRect.y2 + padding, padding + buttonRect.getWidth(), buttonRect.y2 + buttonRect.getHeight() + padding );
	mRecordButton.mIsToggle = true;
	mRecordButton.mTitleNormal = "record off";
	mRecordButton.mTitleEnabled = "record on";
	mRecordButton.mBounds = buttonRect;
	mWidgets.push_back( &mRecordButton );

	buttonRect += Vec2f( buttonRect.getWidth() + padding, 0 );
	mWriteButton.mIsToggle = false;
	mWriteButton.mTitleNormal = "write to file";
	mWriteButton.mBounds = buttonRect;
	mWidgets.push_back( &mWriteButton );

	buttonRect += Vec2f( buttonRect.getWidth() + padding, 0 );
	mAutoResizeButton.mIsToggle = true;
	mAutoResizeButton.mTitleNormal = "auto resize off";
	mAutoResizeButton.mTitleEnabled = "auto resize on";
	mAutoResizeButton.mBounds = buttonRect;
	mWidgets.push_back( &mAutoResizeButton );

	Vec2f sliderSize( 200, 30 );
	Rectf selectorRect( getWindowWidth() - sliderSize.x - padding, padding, getWindowWidth() - padding, sliderSize.y * 3 + padding );
	mTestSelector.mSegments.push_back( "BufferPlayerNode" );
	mTestSelector.mSegments.push_back( "FilePlayerNode" );
	mTestSelector.mSegments.push_back( "recorder" );
	mTestSelector.mBounds = selectorRect;
	mWidgets.push_back( &mTestSelector );

	Rectf sliderRect( selectorRect.x1, selectorRect.y2 + padding, selectorRect.x2, selectorRect.y2 + padding + sliderSize.y );
//	Rectf sliderRect( getWindowWidth() - 200.0f, kPadding, getWindowWidth(), 50.0f );
	mGainSlider.mBounds = sliderRect;
	mGainSlider.mTitle = "GainNode";
	mGainSlider.set( mGain->getValue() );
	mWidgets.push_back( &mGainSlider );

	sliderRect += Vec2f( 0, sliderRect.getHeight() + padding );
	mPanSlider.mBounds = sliderRect;
	mPanSlider.mTitle = "Pan";
	mPanSlider.set( mPan->getPos() );
	mWidgets.push_back( &mPanSlider );

	sliderRect += Vec2f( 0, sliderRect.getHeight() + padding );
	mLoopBeginSlider.mBounds = sliderRect;
	mLoopBeginSlider.mTitle = "Loop Begin";
	mLoopBeginSlider.mMax = (float)mSamplePlayerNode->getNumSeconds();
	mLoopBeginSlider.set( (float)mSamplePlayerNode->getLoopBeginTime() );
	mWidgets.push_back( &mLoopBeginSlider );

	sliderRect += Vec2f( 0, sliderRect.getHeight() + padding );
	mLoopEndSlider.mBounds = sliderRect;
	mLoopEndSlider.mTitle = "Loop End";
	mLoopEndSlider.mMax = (float)mSamplePlayerNode->getNumSeconds();
	mLoopEndSlider.set( (float)mSamplePlayerNode->getLoopEndTime() );
	mWidgets.push_back( &mLoopEndSlider );

	Vec2f xrunSize( 80, 26 );
	mUnderrunRect = Rectf( padding, getWindowHeight() - xrunSize.y - padding, xrunSize.x + padding, getWindowHeight() - padding );
	mOverrunRect = mUnderrunRect + Vec2f( xrunSize.x + padding, 0 );
	mRecorderOverrunRect = mOverrunRect + Vec2f( xrunSize.x + padding, 0 );

	getWindow()->getSignalMouseDown().connect( [this] ( MouseEvent &event ) { processTap( event.getPos() ); } );
	getWindow()->getSignalMouseDrag().connect( [this] ( MouseEvent &event ) { processDrag( event.getPos() ); } );
	getWindow()->getSignalTouchesBegan().connect( [this] ( TouchEvent &event ) { processTap( event.getTouches().front().getPos() ); } );
	getWindow()->getSignalTouchesMoved().connect( [this] ( TouchEvent &event ) {
		for( const TouchEvent::Touch &touch : getActiveTouches() )
			processDrag( touch.getPos() );
	} );

	gl::enableAlphaBlending();
}
コード例 #12
0
EditorImportTextureOptions::EditorImportTextureOptions() {


	updating=false;
	format = memnew( OptionButton );

	format->add_item("Uncompressed",EditorTextureImportPlugin::IMAGE_FORMAT_UNCOMPRESSED);
	format->add_item("Compress Lossless (PNG)",EditorTextureImportPlugin::IMAGE_FORMAT_COMPRESS_DISK_LOSSLESS);
	format->add_item("Compress Lossy (WebP)",EditorTextureImportPlugin::IMAGE_FORMAT_COMPRESS_DISK_LOSSY);
	format->add_item("Compress (VRAM)",EditorTextureImportPlugin::IMAGE_FORMAT_COMPRESS_RAM);


	add_margin_child("Texture Format",format);

	quality_vb = memnew( VBoxContainer );

	HBoxContainer *quality_hb = memnew(HBoxContainer);
	HSlider *hs = memnew( HSlider );
	hs->set_h_size_flags(SIZE_EXPAND_FILL);
	hs->set_stretch_ratio(0.8);
	quality_hb->add_child(hs);
	quality_hb->set_h_size_flags(SIZE_EXPAND_FILL);
	SpinBox *sb = memnew( SpinBox );
	sb->set_h_size_flags(SIZE_EXPAND_FILL);
	sb->set_stretch_ratio(0.2);
	quality_hb->add_child(sb);
	sb->share(hs);
	hs->set_min(0);
	hs->set_max(1.0);
	hs->set_step(0.01);
	hs->set_val(0.7);
	quality=hs;
	quality_vb->add_margin_child("Texture Compression Quality (WebP):",quality_hb);

	add_child(quality_vb);

	flags = memnew( Tree );
	flags->set_hide_root(true);
	TreeItem *root = flags->create_item();



	const char ** fname=flag_names;

	while( *fname ) {

		TreeItem*ti = flags->create_item(root);
		ti->set_cell_mode(0,TreeItem::CELL_MODE_CHECK);
		ti->set_text(0,*fname);
		ti->set_editable(0,true);
		items.push_back(ti);
		fname++;
	}

	add_margin_child("Texture Options",flags,true);

	notice_for_2d = memnew( Label );
	notice_for_2d->set_text("NOTICE: You are not forced to import textures for 2D projects. Just copy your .jpg or .png files to your project, and change export options later. Atlases can be generated on export too.");
	notice_for_2d->set_custom_minimum_size(Size2(0,50));
	notice_for_2d->set_autowrap(true);
	add_child(notice_for_2d);
	notice_for_2d->hide();

}
コード例 #13
0
ファイル: VoiceTestApp.cpp プロジェクト: CinimodStudio/Cinder
void VoiceTestApp::processDrag( Vec2i pos )
{
	if( mVolumeSlider.hitTest( pos ) )
		mVoice->setVolume( mVolumeSlider.mValueScaled );
}