更新功能(OpenFramework)中的Leap Motion Play声音

Leap motion play sound in update function (openframework)

本文关键字:Leap Motion Play 声音 中的 新功能 OpenFramework 更新      更新时间:2023-10-16

我使用Leap Motion播放乐器音符,我使用棕榈置触发声音播放的声音,但这不是我想要的,棕榈点在更新功能中,声音将播放基于帧速率一遍又一遍地。太快了,我想要像鼠标向上和鼠标向下一样的跳跃运动...当棕榈置更换时,播放声音。这是我的代码

    void ofApp::update(){
        ...
    if (hands[i].palmPosition().z < 50) {
                    isTouch = true;
                        if ((hands[i].palmPosition().x > -240)&& (hands[i].palmPosition().x < -160)) {
                                pianoE.setVolume(1);
                                pianoE.play();
                        }
                        if ((hands[i].palmPosition().x >-120)&& (hands[i].palmPosition().x <-60)) {
                            pianoE.setVolume(1);
                            pianoE.play();
                        }
                        if ((hands[i].palmPosition().x >-20)&& (hands[i].palmPosition().x < 20)) {
                            pianoC.setVolume(1);
                            pianoC.play();
                        }
                        if ((hands[i].palmPosition().x > 90)&& (hands[i].palmPosition().x < 120)) {
                            pianoC.setVolume(1);
                            pianoC.play();
                        }
                        if ((hands[i].palmPosition().x >180)&& (hands[i].palmPosition().x < 240)) {
                            pianoC.setVolume(1);
                            pianoC.play();
                        }
                    }else{
                    isTouch = false;
                }
...
    }

您检查声音isPlaying()是否尚未执行此操作。

,例如

if (hands[i].palmPosition().z < 50) {
                    isTouch = true;
                        if ((hands[i].palmPosition().x > -240)&& (hands[i].palmPosition().x < -160)) {
                                pianoE.setVolume(1);
                                if(!pianoE.isPlaying()) pianoE.play();
                        }
                        if ((hands[i].palmPosition().x >-120)&& (hands[i].palmPosition().x <-60)) {
                            pianoE.setVolume(1);
                            if(!pianoE.isPlaying()) pianoE.play();
                        }
                        if ((hands[i].palmPosition().x >-20)&& (hands[i].palmPosition().x < 20)) {
                            pianoC.setVolume(1);
                            if(!pianoC.isPlaying()) pianoC.play();
                        }
                        if ((hands[i].palmPosition().x > 90)&& (hands[i].palmPosition().x < 120)) {
                            pianoC.setVolume(1);
                            if(!pianoC.isPlaying()) pianoC.play();
                        }
                        if ((hands[i].palmPosition().x >180)&& (hands[i].palmPosition().x < 240)) {
                            pianoC.setVolume(1);
                            if(!pianoC.isPlaying()) pianoC.play();
                        }
                    }else{
                    isTouch = false;
                }