티스토리 뷰

Processing

[kinect with processing] kick with point Cloud

생각많은 소심남 2013. 7. 14. 02:30

지난 포스트에서 예고한대로 지난 포스트에서 만든 결과물을 가지고 조금더 응용을 해보도록 하겠습니다. 그때도 말했던 것처럼 3d 버튼을 눌렀을 때 효과음이 나오게 하려고 합니다. 그중에서도 kick 소리가 나게끔 하면 뭔가 좀 실제로 치는 느낌이 들지 않을까 싶네요.


 자 우선 음원을 재생할 수 있는 라이브러리인 minim에 대해서 간단히 다뤄보겠습니다. minim은 기본적으로 음원을 다룰 수 있는 프로세싱 내장 라이브러리입니다. 이걸로 음원 직접 만들 수 있고, 음원을 분석해서 파형으로도 나타낼 수 있습니다. 여기에는 우리가 많이 이용하는 mp3 나 wav 규격이나, 흔하지는 않지만 무손실 무압축 포맷인 aiff 규격까지 지원합니다. 자 그럼 일단 test 음원을 가지고 하나 테스트해보겠습니다.

 일단 기본적으로 고려해야 될 것은 프로세싱의 스케치 상에서 이 음원을 재생시킬 player가 있어야 하겠고요. 또 음원의 동작도 필요할 겁니다. 혹은 음원의 재생이 종료되었을 때 어떤식으로 반응할 건지도 고려해봐야 합니다. 일단 다음과 같은 기본 코드가 있다고 합시다.



여기서 밑줄쳐진 부분이 자신이 재생할 음원입니다. 그리고 이 음원은 지금 열려있는 스케치파일과 같은 폴더내에 있어야 합니다. 즉 이런식으로 있어야 한다는 것이지요.



그러면 실행시 다음과 같이 재생되게 됩니다. 


여기서 사실 stop의 동작에 대해서 보여주지 않고는 있지만 이 옵션은 음원이 종료될때 수행되는 과정으로써 앞의 setup과정에서 호출한 player와 minim들을 정상적으로 종료시켜주는 역할을 하게 됩니다. 물론 없어도 동작에 큰 영향이 있지는 않겠지만 뭔가 안전빵이 있으면 좋긴 하겠지요.


자 그럼 이제는 음원 재생을 할 수 있으니까 실제로 이전에 만든 프로젝트에 적용해보도록 하겠습니다.

그럼 라이브러리와 자료형 선언은 다음과 같이 정의되어야 할 겁니다.



그리고 setup에서는 이전 예제와 마찬가지로 player와 음원을 불러오는 과정이 필요합니다.


자 이제 고민해봐야 될게 어떻게 음원을 재생시키냐는 겁니다. 당연히 우리의 생각으로는 3d 버튼을 눌렀을 때 소리가 나고 땠을 때는 소리가 나지 않게끔 해야 합니다. 그런데 사실 스위치를 프로그래밍 상에서 어떻게 구현해야 될까 고민할 수 있는데 방법은 아예 on/off로만 된 자료형을 써서 제어를 하게끔 하면 되는 거지요. 이에 필요할 자료형이 바로 boolean입니다. 

그래서 전역적으로 박스를 건드렸는지 안건드렸는지를 확인할 변수를 선언해줍니다. 당연히 처음에는 들어가 있지 않으므로 false로 초기화를 해주는게 좋겠지요. 



그런데 여기서 주목해야 될 것은 변수의 이름입니다. 왜 이름에 Past라는 말이 들어가 있을까요? 그건 바로 누를때만 재생되게끔 하기 위해서입니다. 우리가 전구를 켜는 스위치도 우리가 계속 누르고 있어야 켜지는게 아니라 한번 누르면 켜지고 또 한번 누르면 꺼지는 형식으로 되어 있지요. 그런 방식으로 보통 토글이라고 합니다. 그래서 그걸 구현해보려고 하는 겁니다. 그럼 당연히 실제로 건드렸을 때도 뭔가가 반응해야 되겠지요. 지난 포스트에서는 opacity값을 통해서 box의 alpha 값을 변화시켰는데 이번에도 그걸 사용하면 다음과 같이 표현할 수 있습니다.


참고로 이 여기에 삽입된 0이란 값은 정확한 값이 아니기 때문에 직접 print를 써서 변수를 확인해봐야 합니다. 그래서 아무것도 없을 때에 맞춰서 값을 정해야 합니다. 저같은 경우는 아무것도 없는 상태가 opacity = 69 라는 값이 나와서 이 값보다 클때 true로 되게끔 선언했습니다.

이렇게 하면 손이나 무엇인가가 박스에 닿기만 하면 위의 InboxNow 변수는 true로 나타날 겁니다. 자 그럼 위에서 새롭게 만든 변수 두개의 조건을 버무려서 재생 조건을 만들 수 있습니다. 또한 정지조건도 만들 수 있겠지요.


자 이렇게 하면 끝입니다. 한번 결과를 봅시다. 





여기다가 앞에서 배운 예제를 조금만 더 응용해보면 배경음악도 깔 수 있습니다.



키넥트가 동시에 돌아가서 소리가 좀 늘어지기는 하지만 실제로 직접해보면 동시에 소리가 나는 걸 확인할 수 있을 겁니다.

뭐 이런식으로 응용해볼 수 있습니다.


댓글