Eli의 여백

바쁜 나날들 사이에서 생각났던 이런저런 것들을 적어봅니다.

프로그래밍

BMS구동기 v0.4

Eli♪ 2016. 2. 13. 14:01

작동모습

 


현재까지 완료된 것

irrklang으로 소리 재생

계산된 시간에 따라 BMS의 음원을 재생(일단 간격은 ms단위)

 

다음단계 계획

싱크가 맞으면서 wav와 ogg까지 커버되는 음원 재생 라이브러리를 찾는다.

 

일때문에 바빠서 이제서야 다시 기록한다.

일단 시간축을 dictionary로 생성하고 element의 key를 time, value를 list of string (음원파일이름이 있는)으로 줬다. 그리고 BMS파일 읽은거에서 time에 맞춰서 list of string에 추가하는 식이다. 나중에 재생할 때는 timer를 돌리면서 시계처럼 한칸한칸씩 다음 key로 넘어가면 해당 시간에 재생되어야 할 list of string이 나오는데 for loop으로 재생을 돌리는 것이다.

 

문제는 이게 싱크가 안맞는다는거다. Reference로 잡은 ruv-it같은 경우에는 렉걸리더라도 싱크가 안맞는 경우는 없었다. timer를 일부러 정확한걸로 썼음에도 불구하고 irrklang의 실행속도가 느린건지 아니면 그외의 다른 부분이 느려진건지 모르겠지만, 어쨌거나 재생되는 소리는 간혹 이상하게 들리는 경우가 발생했다. 한 번 나야되는 소리가 두 번 난다던지, 듣기로도 재생속도가 느려진 것이 체감될정도로 느려졌다가 다시 정상속도로 돌아온다던지 하는 현상이 발생했다.

 

Ruv-it의 라이브러리를 열어보니 한개는 열었는데 안열리고 다른 하나는 mp3재생용 라이브러리인것 같았다. 다시 이전에 찾아봤던 것들을 보니 C++로 개발한 사람은 FMOD를 썼고, youtube에 올라온 proof of concept는 그냥 wmp를 썼다.

ruv-it : 링크 (이사람은 왜 여기로 링크하라 하는지 모르겠지만... 여튼 위쪽 다운로드 탭 들어가면 받을 수 있다.)

C++개발 : 링크

proof of concept : 링크

 

이걸봐서 ruv-it은 mp3가 안되는 라이브러리를 썼던 걸 알 수 있고, FMOD는 다 되고(하지만 C++용 라이브러리이고), proof of concept는 wmp인데 ogg가 안될것같은 느낌이 들었다.

 

일단은 일이 바빠서 이정도로만 쓰고 다음단계로는 wmp의 proof of concept를 따라해보는 것을 해보는 게 좋을 것 같다.

역시나 github에는 push해놨다.

'프로그래밍' 카테고리의 다른 글

MATLAB으로 머신러닝 입문(?)  (0) 2019.12.13
GitLab 설정  (0) 2018.04.07
BMS구동기 v0.3  (1) 2016.01.24
BMS구동기 v0.2  (0) 2016.01.24
BMS구동기 v0.1  (0) 2016.01.24