Lovetoken

저는 개발 취향을 가진 데이터 분석가 Jr. 입니다.

Navigation
 » Home
 » About Me
 » Github

R에서 소리, 음원 재생하기 - tuneR, beepr package

30 Apr 2016 » R



코드 수행시간이 비교적 길었던 R 스크립트가 있었다.
Run 이후 마냥 기다리긴 귀찮고, 딴짓을 하기엔 코드 수행시간이 그렇게도 길지 않은 코드여서
코드 수행이 끝났다는 알람을 줄 수 있는 방법을 찾고 싶었는데, 알람의 방법은 크게 2가지 정도를 원했었다.

  1. 문자나 메일을 받는 방법
  2. 비프음 등의 소리를 재생 👈

시켜 코드 수행이 끝났다는 걸 알려주는 것 이다.
첫 번째 “문자나 메일을 받는 방법” 은 구체적인 방법을 찾기 힘들었는데, 두 번째 “비프음 등의 소리를 재생” 방법을 알아본 결과 패키지를 이용한 아주 간단한 방법이 있었다.
지금까지 알게 된 방법들을 간단히 정리해본다.



beepr package 를 이용해 비프음 재생시키기

비프음을 재생시키기 위한 단 한 개의 함수를 제공해 주는 패키지가 있다. (역시 심플하고 가벼운 것이 최고다 😄)
패키지 명칭도 “beepr” 이다.
제공되는 함수는 beep() 이다. 즉 beepr::beep() 로 내가 원하는 비프음을 재생시킬 수 있었다.

install.packages("beepr")
library(beepr)

beepr package 설치 및 로드하고

beep()

를 직접 실행시켜 보면 마치 전자레인지 가동이 종료될 때의 “ping!” 소리가 난다 🎵🎵

beep() 함수에서 제공되는 사운드는 아래처럼 11개가 있다.
기호에 맞게 sound 인자를 조정해 사용하면 된다.

  1. ping
  2. coin
  3. fanfare
  4. complete
  5. treasure
  6. ready
  7. shotgun
  8. mario
  9. wilhelm
  10. facebook
  11. sword



만약 특정 음원 파일을 재생시키고 싶다면 tuneR package

소리재생에 관련된 포괄적인 패키지를 찾아본적도 있는데, 그 패키지 안에는 특정 음원 파일을 재생시키는 기능도 있을것이라 생각했다.
나는 tuneR 패키지가 눈에 띄었는데 이 패키지 에서 자신이 가지고 있는 음원 파일을 재생시키는 기능을 가진 play() 함수가 있다. (더 정확히 말하면 Wave class 의 객체만을 실행시키는 함수이다.)

그 전에 특정 음원 파일을 읽어들여 정보를 보관할 객체를 준비해야 할 필요가 있다. 음원 포맷이 mp3 이라면 readMP3() 와 같은 함수가 이를 도와준다.

install.packages("tuneR")
library(tuneR)

역시 tuneR 패키지를 설치하고 사용할 준비를 한다.

mp3 <- readMP3("test.wav")
play(mp3)

위의 코드는 워킹디렉토리에 있는 “Test.mp3” 파일을 불러온 후 R에서 재생시키는 코드이다.



두 패키지의 차이점

위에 비프음을 재생시키는 beepr 패키지와 다르게 tuneR 패키지의 play() 함수는 기본적으로 외부 플레이어를 이용한다는 점에서 차이점이 있다.
따라서 beep() 는 R내에서 이용하는데 쉽지만 tuneR 패키지와 조합한 play() 함수는 활성화되는 프로그램이 R 에서 외부 플레이어 애플리케이션으로 넘어가 버린다. 그리고 beepr 과 달리 tuneR 은 운영체계별로 사용법이 상이하다.