GAME(53)
-
작곡 프로그램 개발 일지 25
불편한 사항에 대해서 논의를 해 본 결과, 샘플을 미리 만들어두고 클릭을 하면 코드 진행이 딱 하고 들어가는게 있으면 어떨까라는 의견이 나왔다. 일단 생각을 해 보면 구현이 가능하다. C코드를 찍는다고 하면 1트랙에 도 2트랙에 레 3트랙에 미 이런식으로 만들어서 넣어주면 되니까. 하지만 구조적으로 한 트랙에 동시에 다른 음이 들어올수가 없으니까 '화음' 을 처리하기에 상당히 고전적인 모습이다. 일단 저런식으로 화음을 넣는다고 하고 다시 수정을 해야할 모습이다. 구조상 화음에 상당히 문제점이 많다. 그러기에 구조를 변경해야 할지 좀 고민해봤다 이런식으로 세로는 음을 쌓고 가로로 진행되는 모습이다. List로 처리를 하면 되겠지 또, 드래그에 관한 지적이 발생하였다... 솔찍히 인정한다 왜냐하면 -2옥타브..
2023.11.17 -
작곡 프로그램 개발 일지 24
흠! 어제의 이론대로면 가능할것 같았는데 실패하였다. 일단 계속 디버깅을 통해서 타고들어갔는데, 심각한 문제를 발견 생각지도 못한 델타타임을 변환해 주는 함수가 잘못되었던것... 지금까지 두자릿수를 넘지 않은 델타타임을 적용해서 눈치를 못챘다;; 여기서 거꾸로(MSB 부터 LSB) 델타타임을 쌓았는데 Reverse를 안해주어서 계속 거꾸로 들어가서 이벤트를 이상하게 인식하는 문제였다. 그러면 array로 변환하기 위해서 Getbyte함수를 써서.... 근데 또 생각해보면 BitConverter.GetBytes는 시스템 엔디안 방식에 따라 다르게 나온다고 되어있으니, convertDelta를 넣으면 리틀 엔디안방식에서는 거꾸로 나올것이고 빅 엔디안 방식에서는 그대로 나올것. 그렇다면 빅 엔디안일때 Reve..
2023.11.16 -
작곡 프로그램 개발 일지 23
아직도 감기가 안나았다...새로운 증상 발현..(귓구녕이 아프다..!?) 하지만 이제 나와야 함!! 5일동안 땡땡이를 쳤기 때문. 내가 없는동안 피드백을 받았다... ㅠㅠ 바로 드럼에 관련된 부분 및 드래그 시스템인데 내가 원하는 드럼이 나올때까지 드래그하는 일이 발생! 드럼은 도레미 단위가 아니니까... 근데 생각을 좀 해보면 Midi 악기 수는 127이고, 노트 수도 127이라는것을 알 수 있다. 이것을 연관지어서 '드럼 악기' 선택창을 만들 수 있을 것 같다. (그러면 '드럼' 일때 즉 채널이 9일때는 악기를 음계로 사용하는 조건을 넣어놔야 하나..) 암튼 대충 해결된것같고.. 그 다음 midi파일을 읽어서 화면에 띄우는 기능을 어떻게 해야하는지. 일단 처음 16짜리 NoteInfo 배열을 만들고 ..
2023.11.15 -
작곡 프로그램 개발 일지 22
약을 다 털어 먹었는데 아직도 감기가 낫지를 않는다.. 의사선생님이 이상하다고 하셨다.. 그래서 코로나를 의심했지만 역시 아니였고 도대체 머냐 진짜... 암튼 병원에 갔다와서 작업을 시작한다!!! 자 그래서 어제 한것을 마무리 하자면 Note On의 Deltatime은 결국 칸의 위치를 결정할 수 있고... Note Off의 Deltatime은 한 노트의 길이를 알 수 있다. 즉 이것을 4*4 칸으로 변환시키려면? 일단 한 노트의 길이는 쉬우니까... 위치를 먼저 봐 보자면, Note On의 Deltatime을 가지고 누적시키는 행위를 해야할것. 그렇다면 4*4 칸에서 나의 위치는 이전 이벤에 누적된 카운팅과 (4) 나의 On이벤트의 Deltatime을 칸 하나의 단위로 바꾼것 + 1 (3) 이 두개의 ..
2023.11.13 -
작곡 프로그램 개발 일지 21
어제는 열이 나서 푹 쉬었고 오늘은 목이 너무 아프지만 열이 내렸으니까 머리가 멀쩡한 관계로 작업을 해봅시다.. 이제 Midi file을 읽어서 화면에 뿌려주는 작업이 필요한데 0x00, 0x90, 0x3C, 0x00, 0x1E, 0x3C, 0x78, 0x78, 0x3C, 0x00, 0x00, 0x3C, 0x78, 0x78, 0x3C, 0x00 이런 구조는 Running State로 처리를 한다.. 바이트를 아끼기 위해서 이전 상태 바이트를 저장해놓는것 여기 이렇게 설명이 나온다! 그렇다면 이 함수에 이전 이벤트의 정보가 들어와야 한다는 뜻. 그래서 알고리즘을 생각해 본다면.. 이전 이벤트가 있으면 현재 이벤트 타입을 이전 이벤트의 타입으로 설정하고 없으면 이벤트 타입을 읽어온다. 하지만? 이렇게 할 때..
2023.11.12 -
작곡 프로그램 개발 일지 20
악기선택창 완성! 예외사항으로 채널이 9 일때만 드럼으로 고정해둠. 이제 서버에 곡을 저장하고 그것을 불러와야한다. 곡 저장은 되었다고 가정하고 Midi 파일을 다시 읽어서 화면에 띄우는 작업이 필요. 전에 보았던 강의를 기반으로 다시 만들어보자!! (한달이 되었으니 기억이 잘 나지는 않지만) 자 생각을 좀 해보면.. Midi File의 구조는 Chunk라는 단위로 되어있고 Chunk는 Type , Length , Data로 되어있다. 따라서 이렇게 읽으면 될것. 이렇게 만들었는데, 이런 구조로 가면 불편해지는 상황 발생.. 이렇게 변경! 미디 이벤트 처리는 대충 이렇게 가는데.... 0x00, 0x90, 0x3C, 0x00, 0x1E, 0x3C, 0x78, 0x78, 0x3C, 0x00, 0x00, 0..
2023.11.09