작곡 프로그램 개발 일지 21

2023. 11. 12. 21:42GAME/Unity

어제는 열이 나서 푹 쉬었고 오늘은 목이 너무 아프지만 열이 내렸으니까 머리가 멀쩡한 관계로 작업을 해봅시다..

 

이제 Midi file을 읽어서 화면에 뿌려주는 작업이 필요한데 

0x00, 0x90, 0x3C, 0x00, 0x1E, 0x3C, 0x78, 0x78, 0x3C, 0x00, 0x00, 0x3C, 0x78, 0x78, 0x3C, 0x00 이런 구조는 Running State로 처리를 한다.. 바이트를 아끼기 위해서 이전 상태 바이트를 저장해놓는것

여기 이렇게 설명이 나온다!

그렇다면 이 함수에 이전 이벤트의 정보가 들어와야 한다는 뜻.

 

 

그래서 알고리즘을 생각해 본다면.. 

이전 이벤트가 있으면 현재 이벤트 타입을 이전 이벤트의 타입으로 설정하고

없으면 이벤트 타입을 읽어온다.

 

하지만? 이렇게 할 때의 문제점은 계속해서 이전 이벤트만 되는 문제 발생 그래서 돌다리도 두들겨 보고 건넌다는 느낌으로 이벤트를 먼저 체크 할 필요가 있음.

 

쓰읍 이게 맞는지는 모르겠으나 지금 생각나는것은 이러함 ... 잘 되는 것 같다.!

 

이제 변환 과정이 필요하다.

 

내가 쓰고 있는 Track의 구조이다. TrackChunk to Track을 해야함!

어떻게 하지?

 

일단... 기본적으로 Event에 정보들이 있으니까.. Event에 접근해서 정보를 뺴와서 어떻게 하면 좋을것같은데

 

일단 LoadMidi라는 함수를 만들어서 

 

악기 정보만 적용,,,

 

이제 NoteBlock을 적용해야 하는데..어케하지..?ㅎㅎ 

조금 생각을 해 보자면 

 

한 노트의 정보는 대충 이런식의 한묶음임 

 

하지만 이벤트는 두개의 이벤트로 나타냄. Note On, Note Off. 

 

그래서 시작과 끝을 처리하면 될것같은디... 

 

이제 Deltatime을 Beat로 변경해야 한다. 현재 시스템상 한 칸은 0.5박 즉 

 

이렇게?? 하면 될것같은데 흠.. 일단 내일 좀더 연구를 해 보아야겠다.

 

Running Status Velocity 0 처리 아직 안했고

deltatime을 Beat로 변환했지만 현재 자신의 위치를 알아야 한다는 점도 있다

 

 

'GAME > Unity' 카테고리의 다른 글

작곡 프로그램 개발 일지 22  (0) 2023.11.13
작곡 프로그램 개발 일지 20  (0) 2023.11.09
타워디펜스 개발 1  (0) 2023.11.09