', { cookie_domain: 'auto', cookie_flags: 'max-age=0;domain=.tistory.com', cookie_expires: 7 * 24 * 60 * 60 // 7 days, in seconds }); Midi 해석 대신 DXF 포맷 해석해보기 :: MakerLee's Workspace
728x90

연말에 잡다한 일이 많다보니 좀 늦었습니다. 


지난 글에 박정식님이 DXF 포맷을 사용해보는 게 어떻겠냐고 아이디어를 주셨는데요. 










musicboxmanics(링크)는 뮤직 박스 관련된 잘 만들어진 커뮤니티 겸 쇼핑몰입니다. 









홈페이지에 악보 편집 기능이 있어 midi 파일을 올려 뮤직박스 악보를 편집하는 것도 가능하고 다른 사람이 올린 악보를 사용하는 것도 가능합니다. 









이 악보를 다른 포멧으로 변환하는 것도 가능한데 midi나 mp3 같은 사운드 포맷도 가능하고 출력용 pdf 포맷도 됩니다. 









이번에 볼 것은 이 DXF 포맷인데요. 

DXF 포맷은 Autodesk 사의 AUTOCAD 용 도면 프로그램 포맷입니다. 













파일을 에디터로 열어보면 이런 모습입니다. 

HEX 코드로 가득해서 눈으로 봐선 뭔지도 몰랐던 MIDI 포맷보다는 그래도 뭔가 언어같다는 느낌을 주고 있습니다. 










DXF 포맷에 대한 레퍼런스를 찾아 열심히 몇시간동안 공부를 했습니다.











하지만 다시 찾아보니 Autodesk 한국어 페이지(링크)에서 한글로 된 설명이 있네요





한나절 내내 읽어보니 DXF 파일은 내부에서 헤더와 클래스, 블럭과 테이블 등으로 나뉘어 지고

그 안에서 각종 변수로 이것저것 정의한다는 것을 알 수 있었습니다.

치수의 정밀도라던가, 인치단위인지 mms 단위인지, 도면의 방향과 크기 등을 선언하고

각종 치수에 대한 변수를 저장하고 뭐 그런것들입니다. 









하지만 그딴건 여기엔 전혀 쓸데없지요..







이렇게 저장된 오르골 악보의 DXF 파일을 설계 프로그램에서 열어보면 대충 이런 모습입니다. 

그러면 대략 도면에서 선과 원을 그리는 코드가 있으며, 그중에서 우리에게 필요한 건 원을 그리는 코드뿐이라는 추측이 가능합니다. 











원을 그리는 코드는 그 이름 그대로 CIRCLE 입니다. 











에디터에서는 위와 같이 보이는데요. 






주석을 달면 대략 위와 같습니다. 

이중에서도 중요한 것은 원의 중심점 X,Y 좌표 뿐이죠. 










40(반지름) 의 아랫줄에 있는 반지름값 0.0345를 0.5로 고쳐 보았습니다. 








원래 도면에서는 이런 모습이었습니다. 









반지름값을 고친 모습입니다. 






이것으로 DXF 포맷을 대략적으로 해석해 보았습니다. 

이것도 전체적으로 이해하기에는 좀 어려운 점이 있지만 그래도 MIDI 파일에 비교하면 훨씬 읽기 쉽습니다. 

그리고 전체 구조를 이해할 필요 없이 그냥 CIRCLE의 중심점만 찾으면 되기 때문에 아두이노에서 해석하기에는 엄청 편할 것 같습니다. 




728x90

+ Recent posts