시각화/프로세싱

▶Processing :: 프로세싱의 오디오기능 - Minim라이브러리

비주얼라이즈 2014. 11. 20. 19:21




▶Processing :: 프로세싱의 오디오기능 - Minim라이브러리



이번에 살펴볼 것은 프로세싱에서의 오디오기능입니다. 어려운것은 아니고 가장 기초적인것인데, 어떤 메커니즘인지 정리해둘 필요가 있을 것 같았습니다. 









먼저 이번 예제에서 사용할 audio샘플을 함께 첨부하겠습니다.



오디오샘플.zip




 따르르릉하고 짧게 울리는 벨소리이며 wav형식이며, 프로세싱작업 파일 내 data폴더에 넣어두시면 됩니다.









프로세싱 실행후 가장 먼저, 이번예제에서 적용해볼 Minim라이브러리를 로드해줍니다.





그다음으로 살펴볼 것은 setup부분입니다. 뒤에서 볼 수 있겠지만, bell클래스는 bell(x, y, r, filename)의 형태로 이루어져있습니다.

따라서 이번 예제에서 벨은 화면 중심에서(width/2, height/2) 반지름이64인(64)형태로 그려지고, 벨이 눌렸을 때 나는 소리는 (a.wav)파일으로 부터 나오게됩니다.






void draw()역시 간단한 구조로 이루어져있습니다. 배경색상은 검정(0)으로 설정되었고, 그 아래로는 bell클래스의 display()와 jiggle()이 실행되도록 구성되어있습니다.



이번 예제에서는 벨을 마우스로 클릭 했을때, 오디오가 울리도록 하는 것을 목표로 하는 데요~ 여기에서는 mousePressed()로 마우스의 클릭을 판별한 후, 마우스 클릭당시, 마우스의 x좌표와 y좌표가 bell.contains()조건문에 합당하면 벨이 울리도록 설정되어있습니다.





가장 핵심이라고 할 수 있는 Bell 클래스 부분입니다.

여기서 '딩동'이라는 AudioSnippet객체를 생성해줍니다.






jiggle()부분은 벨이 울릴때(클릭되었을 때) 움직임을 표현해주는 부분입니다. '만약 딩동이 재생되고있다면'의 조건문으로 이루어져있습니다. 만약 참이라면 x, y값은 +1, -1사이의 랜덤값이 더해집니다. r값은 constrain()기능으로 효과를 적용하게 됩니다. constrain은 '제한하다'라는 뜻이기도 한데요. 프로세싱에서는 최소, 최대값을 제한해주는 역할을 합니다. 따라서 위 코드에서의 constrain()은 10과 100사이에서 제한이 되게 됩니다.






바로 이 부분이 벨을 울리는 부분입니다. 조건문이 사용되었습니다. '만약 딩동이 울리지 않고있다면'의 조건문인데요. 참이면 딩동.rewind()를 이용하여 파일을 되감아줍니다. 그다음으로 play()기능으로 재생하게됩니다. 즉, 이렇게 rewind()와 play()를 사용하게되면 항상 처음에서 다시시작하도록 할 수 있습니다.






불린불린 기능입니다. 이 기능은 마우스 롤오버에 사용됩니다. 여기서 역시 조건문이 사용되고있는데, 만약 변수로 받은 인자인 mx, my와 x, y의 거리가 r보다 작으면 참을 돌려주고, 그렇지 않다면 거짓을 돌려줍니다. 이 기능으로 마우스가 벨 위에서 눌려야지만 작동하도록 할 수 있는 것입니다.








마지막으로 벨을 화면상에 그려주는 부분입니다. 여기에서는 mx, my값을 활용하여 마우스가 롤오버되었을 때 벨의 색상이 변하도록하는 설정이 되어있습니다.