개인 프로젝트/악보영상 midi 변환기

대강 이제 된다. 그런데 한 트랙내에서 동시에 인식하는건 구현을 안해놔서 이상하게 들린다. 완벽하게 왼손 오른손 박자가 맞는 것도 아니고.. 어쨌든 되긴 된다. 지금 상태에서는 이렇게 실행을 시켜주면 트랙별로의 hex코드를 출력해주고 이를 hxd로 midi 안에 집어넣어주는 형식. 더 만들긴 귀찮다. 아래는 원본 영상 그리고 이건 프로그램으로 만들어진 악보. 갈수록 이상해지긴 한다. 뒷부분에 갈수록 화음이 많아지는데 이는 아직 midi로 넣는법을 잘... gui로도 만들어보고 싶었고 , openCV를 통해서 영상인식을 해보고 싶기도 했는데..(지금은 팟플레이어에서 1frame씩 캡쳐한 이미지를 통해서 인식) 이 프로젝트는 아마도 여기서 끝날 듯하다. 그래도 이런 결과물을 냈다는 것이 뿌듯하긴 하다. 사실..
자... 그래서 이제는 두번째 Track Chunk를 분석해야 된다. 사실 이게 핵심. 사실 이 트랙청크는 너무나도 복잡하고 분석 할 부분이 많은 녀석이다. 하지만 내가 필요한 것은 별로 없다. 악보프로그램을 만드는 것이 아니기 때문에.. 나는 피아노 건반이 내려오는 영상으로 대강의 악보를 만들어 연주만 할 수 있으면 문제가 되지 않기 때문이다. 여러번의 삽질을 통해 알아낸 결과, Muse Score라는 악보 프로그램은 midi파일이 정상적이지 않아도(약간의 binary 문제가 있어도) 이를 수정해주는 능력이 있다는 것을 알아냈다. 따라서 이번 포스팅은 핵심부분만 설명할 것이다. 사실 이것도 상당한 양이 된다. 핵심부분은 다음과 같다. 1) Track Chunk의 구조와 delta time 구하기 2) ..
이 글은 https://ehclub.co.kr/3361?category=762014 블로그에서 많은 것을 배워 다시 한번 정리를 해본 글 임을 밝힙니다. [도전 프로젝트] 와 연계지어 하는 또다른 프로젝트. midi의 구조를 분석해서 실제 midi를 생성하는 과정에서 midi 의 구조는 꼭 알아야 될 것 같았다. 일단 다음 파일은 오늘 분석할 midi 파일이다. midi 파일이 무엇일까? midi은 악보라고 표현할 수 있다. midi 그 자체는 음이 언제시작하고 언제끝나는지, 무슨 악기인지에 대한 정보만 담고 있다. 단, 악기의 소리는 담고 있지 않다. 이런 binary로 표현되어 있어서 용량도 kb 단위이다. midi는 소리를 담고있지 않아서 연주하려면 악기가 필요한데, 그 악기가 바로 midi pla..
이번에는 많이 발전시켜서 가지고 왔다. 연속적인 이미지에 대해서 분리 하는 기능이다. 일단 동영상을 1프레임씩 팟플레이어에서 쪼개주었고 이를 바탕으로 했다. 바뀐 것이 몇가지 있는데 먼저, 공백을 세는 방법의 변화이다. 보통 영상의 첫부분에는 아무것도 없는 피아노만 나오기 때문에 이 깨끗한(?) 이미지로 건반의 경계의 좌표를 얻은 후 이를 저장시켜 후에 이를 이용하는 것이다. 혹시나 모를 미연의 사고를 방지하자는 측면에서.. 그리고 두번째로는 백건이든 흑건이든 어떤 색을 감지했으면 5px 뒤의 색도 검사하는 루틴이다. 건반의 경계가 색과 겹처서 진해지는 현상이 발생해 이상하게 인식하는 경우가 있어서 이런 코드를 추가했다. 마지막으로는 노드를 만들어서 저장하는 기능(?) 이라고 할까. 노드는 Key Pos..
이번에는 지난시간에 있었던 문제점을 해결해보도록 하겠다 . 저번의 문제는 다음 이미지로 압축된다. 여기서 HSV는 전부 HSL로 교체해서 봐야 한다. 오타났다;; 우리 눈에서 보면 초록색이긴 한데 RGB 에서 거리는 23%가 나오고 HSV에서 Hue(색상) 값 차이는 1이 나왔다. 이를 이용해서 문제를 해결하려 한다. 일단 Hue값만 알면 되는데 C#의 Color 클래스는 친절하게도 Hue값을 준다. 그래서 기존에 유클리드 거리로 구했던 것을 단순히 Hue가 1.8 이하일시 색 범위에 있다고 판단하게 하였다. 출력 >> 후... 인식 에러가 떴다. 백건 개수가 561(!) 개가 나왔다. 일단 문제를 파악해보니 백건 그 자체만을 인식할 경우에는 밝기로 확인하는 것이 나을 것 같다는 결론이 나왔다. 90% ..
그냥 하고 싶어졌다. 밖에 말할 이유가 없는 프로젝트. 평소 가끔 피아노를 치곤 하는데... 대강 이런 부류의 동영상들에서 저 색들을 인식해서 midi 파일로 한번 만들어 보고 싶었다. 그래서 무작정 헤딩. 처음 하는 이미지 프로세싱이기도 하고, 원래는 텐서플로우로 한번 뭘 어떻게 해볼까 생각도 해봤지만, 그냥 이미지 프로세싱 라이브러리를 내가 만들기로 했다. 언어는 C#으로. 일단 오늘의 결과물. 이미지에서 건반 위치 추출. 한장 분석에 3ms면 그리 나쁜 시간은 아니라고 본다. 1초 30프레임이라고 따져도 영상 하나 분석하는데 30초 내외로 끝날 듯? 일단 분석 방법은 다음과 같다. 아직 GUI로 만들지는 않았지만, 뭐 아마도 모든 라이브러리 정리가 끝나게 되면 XAML로 만들게 되겠지만. 먼저 영상..
OSOR2
'개인 프로젝트/악보영상 midi 변환기' 카테고리의 글 목록