본문 바로가기

프로그래밍

MIDI 포맷에 대해 알아보자.araboza 일단 MIDI는 악보의 컴퓨터버전이라고 생각하면 좋다.제목, 작곡가같은 음악이랑은 별로 상관없는 메타데이터도 들어있고,실질적으로 연주가 어떻게 되는지, 즉 악보에서 음표에 해당하는 정보도 들어있다.예를들어, 악기에서 '도' 건반을 어느 순간에 누르고, 언제 뗴어야하는지같은 정보가 들어있는 셈이다. 확장자는 보통 .mid인데, 이런 파일을 어떻게 읽어낼수 있을까.당연하게도, 어떻게 생긴지 알아서 어떻게 읽어야 원하는 정보를 얻을수 있는지 배워야한다. 일단 MIDI는 크게 1개의 헤더 청크와 n개의 트랙 청크로 이루어져있다. 왜 이런 구조가 되었느냐 생각해보자.트랙 청크는 실질적인 MIDI파일의 내용물을 담고 있다. 즉, 어떤 건반이 언제 눌러져야하는지, 실질적인 음표에 해당하는 정보를 담고있는 오선지와도 .. 더보기
블로그에 소스코드를 입력하는 방법, colorScripter 이용하기 12345#include int main(){ printf("hello?");}cs이런거 블로그에서 많이 보셨을겁니다. 근데 보통의 블로그에서는 syntaxHighlighter를 선호합니다만,설치나 절차가 굉장히 번거롭습니다. 이걸 간단하게 끝내주는 사이트가 있습니다.https://colorscripter.com/ 들어간 다음, 1. 언어를 선택한다2.코드를 입력한다 3. 오른쪽 아래 클립보드 복사를 누른다4.블로그에 ctrl+V 한다. 참 쉽죠? 더보기
중괄호 위치에 따른 코딩 스타일 출처: 위키피디아 brace placementstyleswhile (x == y) { something(); somethingelse(); } K&R and variants: 1TBS, Stroustrup, Linux kernel, BSD KNFwhile (x == y) { something(); somethingelse(); } Allmanwhile (x == y) { something(); somethingelse(); } GNUwhile (x == y) { something(); somethingelse(); } Whitesmithswhile (x == y) { something(); somethingelse(); } Horstmannwhile (x == y) { something(); someth.. 더보기
비트? 바이트? 비트(bit)와 바이트(byte)에 대해서 설명하겠습니다. 컴퓨터는 전기기 흐르거나, 흐르지 않거나를 이용해서 정보를 저장합니다.흐르면 1 아니면 0이런식이죠. 중학교때 이진수를 배웁니다.1001를 이진수로 읽어봅시다. 사실 안읽으셔도 되요.요점은 숫자를 1과 0으로 저장한다라는 점입니다. 컴퓨터에는 아주 많은 1과 0으로 된 칸이 있습니다.각 칸은 0을 나타내거나, 1을 나타냅니다.이 한 칸을, 비트라고합니다. 보다시피. 비트는 너무 작은 단위입니다.겨우 0,1 두가지밖에 못나타내니까요.그래서 다른 묘안을 떠올렸습니다.8개를 묶어서 생각하면 어떨까?이렇게 하면, 이진수로 8자리입니다. 대략 256가지를 표현하는겁니다.이 단위가 바이트입니다.사실, 이 바이트라는 단위도 상당히 작은편입니다.그래서 1024.. 더보기
아스키 코드 표 컴퓨터가 다룰수 있는건 오직 이진수 숫자 뿐입니다.그렇지만 우리는 숫자 말고 다른 것들을 표현하는 경우가 많습니다.그래서 글자를 표현하기 위해 아스키코드를 씁니다.A는 65, D는 68이런식으로 각 문자별로 숫자를 매기어 표현하는 겁니다.65라는 숫자를 문자로 읽으면, 그에 대응하는 A로 읽는 식인거죠.이 각 문자에 대응하는 숫자 표를 아스키 코드라고 합니다.다만 아스키 코드는 영어 문자만 표현합니다. 전 세계어를 모두 숫자에 대응시킨 유니코드라는 녀석도 있습니다.아스키코드로 표현한 문자는 1바이트, 유니코드는 2바이트입니다.유니코드가 아스키 코드보다 필요한 크기가 큰 이유는 전세계어를 표현하기 위해서 조금 더 많은 크기를 차지합니다. 더보기
[프로그래밍] 자료형, 변수 컴퓨터하면 무엇이 떠오르시나요?컴퓨터에서는 수많은 숫자들을 다룹니다.게임에서 생각해 봅시다. 현재 HP,MP, 경험치, 그 외의 스탯이 거의 전부 숫자로 표현됩니다.그렇다면 이 숫자를 어떻게 보관하기 해야 할까요? 자. 우리가 6974라는 숫자를 저장하고싶다고 가정합시다. 그러려면 이 6974를 저장하기 딱 맞는 상자가 있으면 되겠군요!이 상자를 변수라고 합니다. 어라, 그래놓고 보니까 이번엔 6974892라는 훨씬 긴 숫자를 저장하고싶어졌습니다. 근데 집어넣어보려고 하니까 안들어갑니다. 어랍쇼?(이런 현상을 오버플로라고 합니다.)네. 넣어버리니까, 잘리고 말았습니다.(숫자가 잘려 버리면서, 원래 넣으려고 했던 숫자가 아니고, 이상한 숫자가 됩니다.) 그렇다면, 좀더 걸맞게 큰 상자를 쓰면 넣을수가 있겠.. 더보기