您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > openframeworks-Sound-中文
openFrameworks声音部分SoundopenFrameworks对于播放声音有着很好的支持.通过使用ofSoundPlayer这个类中的方法loadSound进行音频文件的加载(i.e.mp3,wav)然后调用play进行播放.使用ofSoundStream你可以产生出声音或者通过麦克风来获取外界的声音.播放声音把音频房间放在data目录中,然后通过ofSoundPlayer进行相关的操作.classtestApp:publicofBaseApp{public:ofSoundPlayermy_sound;ofSoundPlayermy_singer;}testApp.htestApp.cppvoidtestApp::setup(){my_sound.loadSound(clong.mp3);}voidtestApp::keyReleased(intkey){my_sound.play();}多个文件的播放ofSoundPlayer可以同时播放好几个音频文件通过multiplay这个方法.调用setMultiPlay(bool)进行multiplay开或关.如下面的例子,你可以尝试按下空格键进行操作观察.voidtestApp::setup(){ofBackground(33,33,33);my_sound.loadSound(clong.mp3);my_singer.loadSound(violet.mp3);my_sound.setMultiPlay(true);my_singer.setMultiPlay(true);}voidtestApp::keyReleased(intkey){my_sound.play();}音量和声音位移panning改变音量大小通过使用my_sound.setVolume(float).0.0代表无声音,1.0表示最多音量.让声音从左到右过渡,使用my_sound.setPan(float).-1.0表示只播放左边的喇叭,1.0代表播放右边的喇叭.voidtestApp::mouseReleased(intx,inty,intbutton){if(button==0){my_sound.setPan(-1.0);}else{my_sound.setPan(1.0);}}暂停暂停通过下面来调用my_sound.setPaused(bool).voidtestApp::keyReleased(intkey){if(key=='p'){my_sound.setPaused(true);}}循环循环设置my_sound.setLoop(bool).voidtestApp::keyReleased(intkey){if(key=='l'){my_sound.setLoop(true);}}改变速率通过my_sound.setSpeed(float)你可以改变音频的播放速率.靠近0.0会播放的非常慢,数值越高,播放越快.voidtestApp::keyReleased(intkey){if(key=='n'){my_sound.setSpeed(0.1f);}elseif(key=='g'){my_sound.setSpeed(40.0f);}}设置播放位置使用my_sound.setPosition(float)你可以像唱片机那样设置播放位置.0.0表示开始.1.0代表结束位置.voidtestApp::update(){my_sound.setPosition((float)ofGetMouseX()/ofGetWidth());}ofSoundPlayervoidloadSound(stringfileName,boolstream=false)voidunloadSound()voidplay()voidstop()voidsetVolume(floatvol)voidsetPan(floatvol)voidsetSpeed(boolspeed)voidsetPaused(boolpaused)voidsetLoop(boolloop)voidsetMultiPlay(boolmp)voidsetPosition(floatpos)辅助功能HelpersvoidofSoundStopAll()voidofSoundSetVolume(floatvol)这2个方法对所有音频起作用产生声音使用ofSoundStream类你可以产生声音或从麦克风等外部设备获取声音.从OF-007开始有一个新的方法是audioIn.这个方法可以周期性的对输入设备(如麦克风)进行音频采样.产生声音得到麦克风中的生硬在setup(...)中使用audioIn(..)方法,如下所示.voidtestApp::setup(){my_sstream.setup(this,0,2,44100,256,4);}testApp.htestApp.cppclasstestApp:publicofBaseApp{public:ofSoundStreammy_sstream;voidaudioIn(float*input,intbufferSize,intnChannels);}roxlu
本文标题:openframeworks-Sound-中文
链接地址:https://www.777doc.com/doc-4453588 .html