Eli의 여백

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

BMS구동기 4

BMS구동기 v0.4

작동모습 현재까지 완료된 것 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으로 재생을 돌리는 것이다. 문제는 이게 싱크가..

프로그래밍 2016.02.13

BMS구동기 v0.3

결과물 화면 현재까지 완료된 것 monogame으로 ogg 재생 안되던 문제를 외부 dll으로 해결 자체 작곡한 샘플 BMS를 넣음 (저작권이 나한테 있으므로 문제될 게 없다.) Garbage collection을 이해 다음단계 계획 이제 마음껏 wav ogg mp3를 재생시킬 수 있으니 BMS를 실제로 처음부터 끝까지 시간계산해서 소리나게 하는 것 하.. 여기까지 오는데 미친듯한 삽질을 많이 했다. monogame에서 wav나 ogg를 재생하려면 content.mgcb를 직접 열어서 일일이 wav는 wav importer로, ogg는 mp3 importer를 지정해주고 파일도 수작업 했어야 됐었다. 게다가 이렇게 하면 모든 음원이 xnb라는 자기네 자체 파일형식으로 컴파일이 되는데, 이 컴파일을 명시적..

프로그래밍 2016.01.24

BMS구동기 v0.2

결과물 모습 현재까지 완료된 것 BPM 읽기 regular expression을 이용한 종류별(소리, 노트, BGA별) crop 메인 클래스와 BMS읽는 클래스를 개별 파일로 분리 차후 해결과제 라인별로 읽으면서 데이터 정리 나중에 BMS 에디터도 개발하긴 하겠지만 (BMSE로 만들었을 때 uBMplay를 돌리면 윈10에서는 안돌아간다), 어차피 지금은 사람들이 BMSE로 제작하기 때문에 각 항목이 나오는 순서가 정해져 있다. 하지만 개발자인 야네 우라오씨는 (야네가 성이고 우라오가 이름이다) 포맷에 관해 별도의 순서를 지정하고 있지 않기 때문에(링크), 기존 BMS와의 호환성을 확인하는 차원에서 그냥 순차적으로 읽으면서 속도를 증가시키는 방향으로 다시 짤 것 같다. 일단 BMS파일 자체에는 용량이 그렇..

프로그래밍 2016.01.24

BMS구동기 v0.1

결과물 사진 사용한 것 Visual studio 2015, community edition (CE) monogame (C#기반이다) GitHub for visual studio (extension) 현재까지 완료된 사항 키를 누르면 하위 폴더에 포함된 사운드 재생 키를 누르면 하위 폴더에 포함된 BMS 읽기 키를 누르면 line by line으로 읽은 BMS 출력 Visual studio와 GitHub를 연동 차후 해결과제 읽은 BMS파일을 가지고 regular expression을 이용해서 노트 순서와 시간 계산 원래는 private repository가 되는 GitLab하고 연동하려고 했는데 잘 안되어서 어쩔 수 없이 코드가 공개되는 GitHub랑 연동한다. 이 코드를 숨기는 것보다 내가 개발하는 것..

프로그래밍 2016.01.24