전체 글 23

가우스적분

가우스분포(정규분포)라는 함수 e-x2를 -∞~∞에서 적분한다. 가우스는 오만 데에 다 나오냐? 이것도 가우스 저것도 가우스. 망할 수학자 과학자들 작명센스 시발. $$ \int_{-\infty}^\infty \operatorname{d}\!x \!\cdot\! e^{-x^2} \quad = \quad \sqrt{2\pi\over 2}$$ $$ \left( \textcolor{gg}{\int_{-\infty}^\infty \operatorname{d}\!x \!\cdot\! e^{-x^2}} \right)^2 $$ $$ \int_{-\infty}^\infty \operatorname{d}\!y \!\cdot\! e^{-y^2} = \int_{-\infty}^\infty \operatorname{d}\!x..

수학/나머지 2020.06.15

표준 미디 파일 1.0 / 트랙 청크

표준 미디 파일 1.0 청크 상세설명 트랙 청크 (track chunk) 트랙청크(MTrk 형식)는 실제 노래 데이터가 저장되는 곳이다. 각 트랙청크는 단순히 미디이벤트와 비(non)미디이벤트들(델타타임값이 선행하는)의 스트림이다. 아래 나오는 트랙청크의 형식은 미디파일의 세 형식 모두에서 같다. 트랙청크의 구조는 이렇다. [트랙청크] = [청크유형] [길이] [형식] [트랙이벤트](한개이상) 트랙이벤트의 구조는 매우 간단하다. [트랙이벤트] = [델타타임] [이벤트] [델타타임] [델타타임]은 가변길이량으로 저장되며, 다음 이벤트 전까지의(※??? 이전~현재가 아니고???) 시간량을 나타낸다. 트랙의 첫 이벤트가 트랙의 맨 처음에 발생하거나 두 이벤트가 동시에 발생할 경우 델타타임 0이 쓰인다.(※`그..

나머지/midiSpec 2020.03.09

표준 미디 파일 1.0 / 0, 1, 2형식 파일

표준 미디 파일 1.0 표준 미디 파일 1.0 / 헤더청크 / 형식 값뜻 0다중채널 트랙 한 개가 있는 파일. 1동시적 트랙(이나 미디출력) 한 개 이상의 시퀀스가 있는 파일. 2독립적 단일트랙 패턴 한 개 이상이 나열된 파일. ※헤더청크 문서에서 복붙해온 표. 청크 상세설명 0, 1, 2형식 파일(formats 0, 1, and 2) 0형식 파일에는 헤더청크 뒤에 트랙청크 하나가 따른다. 가장 호환성 좋은 데이터표현법이며, 신디사이저에서 소리를 내야 하지만 `sound effect boxes나 믹서 등 다른 것과 주로 관련된 프로그램에서 트랙 하나짜리 간단한 플레이어에 매우 유용하다. 이런 단순한 프로그램으로 작업하려면 지금 쓰이는 프로그램이 트랙 기반인 경우라도 이 따위 형식은 만들어봄직하다. 한편,..

나머지/midiSpec 2020.03.08

미디 1.0 상세명세 / 채널 보이스 메시지

미디 1.0 상세명세 채널 보이스 메시지(Channel Voice Message) 음표 끄기0x8n(0~119) 음표 켜기0x9n `Poly Key Pressure0xAn 컨트롤바꾸기0xBn 프로그램바꾸기0xCn `Channel Pressure0xDn 피치밴드0xEn ※이 표 뭔뜻인지 알려줄 천사 구함. 2렬은 대충 상태바이튼데…. 3렬은 도덕책??? 미디 악기 사이에 전송되는 정보는 대부분 채널 보이스 메시지이다. 이 메시지는 음표 켜기, 음표 끄기, 프로그램 바꾸기, 피치 휠 바꾸기, `after-touch pressure, 컨트롤러 바꾸기를 모두 포함한다. 이 용어들은 아래에서 정의되었다. 음표켜기메시지 하나는 3바이트로 구성되며 전송에 960마이크로초(천분의 0.96초)가 필요하다. 음표들이 동시..

나머지/midiSpec 2020.03.07

미디 1.0 상세명세 / 데이터 유형 (상태바이트, 데이터바이트)

미디 1.0 상세명세 데이터 유형(data type) 미디를 통해 전달되는 바이트에는 상태바이트와 데이터바이트 두 가지 종류가 있다. 상태 바이트(status byte) 상태바이트는 최상위 비트가 1로 설정된 8비트짜리 수이다. 상태바이트는 메시지 유형, 즉 뒤따르는 데이터바이트의 쓰임새를 식별하는 역할을 한다. 수신기에 새로 들어오는 상태바이트(실시간메시지 빼고)는 수신기가 상태를 새로 취하도록 명한다. 이전 메시지가 불완전하더라도 그런다. 진행중상태(Running Status) 보이스메시지와 모드메시지 전용. 한 상태바이트를 받아 처리한 수신기는 다른 상태바이트를 받기 전까지 계속 그 상태로 남아있는다. 따라서 같은 상태바이트가 반복되면 상태바이트를 마음대로 빠뜨리고 데이터바이트만 보내도 된다. 그러..

나머지/midiSpec 2020.03.07

표준 미디 파일 1.0 / 헤더 청크

표준 미디 파일 1.0 청크 상세설명 헤더 청크 (header chunk) 파일 시작 부분의 헤더청크는 파일의 데이터에 관한 기본적 정보를 서술한다. 다음은 완전한 청크의 구조이다. [헤더청크] = [청크유형] [길이] [형식] [트랙청크수] [분할값] [청크유형] 앞서 말했듯 [청크유형]은 'MThd'라는 아스키 네 글자이다. [길이] [길이]는 32비트로 표현된 숫자 6이다 (높은 바이트 먼저). 데이터 섹션에는 상위 바이트 순으로 저장된 16비트짜리 단어 세 개가 들어있다. [형식] [형식]은 파일 전반의 구조를 결정한다. [형식]에는 세 값만이 정의돼있다. 값뜻 0다중채널 트랙 한 개가 있는 파일. 1동시적 트랙(이나 미디출력) 한 개 이상의 시퀀스가 있는 파일. 2독립적 단일트랙 패턴 한 개 이..

나머지/midiSpec 2020.03.06

표준 미디 파일 1.0 / 가변길이량

표준 미디 파일 1.0 / 시퀀스, 트랙, 청크: 파일 블럭 구조 가변길이량(variable-length quantity) 본 문서에서는 바이트에서 최하위 비트를 0번째 비트라 하고, 최상위 비트를 7번째 비트라 한다. 미디파일의 몇몇 수는 가변길이량이라는 꼴로 표현된다. 이 수들은 한 바이트당 일곱 비트로 표현되며 최상위 비트가 먼저다. 마지막 말고 모든 바이트는 7째 비트를 설정하고, 마지막 바이트의 7째 비트는 비운다. 수가 0~127이면 정확히 한 바이트로 표현된다. 가변길이량으로 표현된 숫자의 예시들이 몇 개 있다. 가변길이량 예시 표현할 수(16진)표현할 수(2진)가변길이식(2진)가변길이식(16진) 0 0 0 0 0 0 0 0 00000000 00000000 00000000 00000000 0..

나머지/midiSpec 2020.03.05

미디 1.0 상세명세 / 메시지 유형

미디 1.0 상세명세 데이터 형식(메시지) 메시지 유형 메시지는 주로 ★채널메시지와 ★시스템메시지 두 부류로 나뉜다. 채널 메시지 채널메시지의 ★네 비트는 상태바이트에 써서 메시지를 열여섯 미디채널 중 한 채널에 위치시키고, ★네 비트는 메시지를 정의하는 데 쓰인다. (표2 참조) 따라서 채널메시지는 상태바이트로 인코딩된 채널번호에 맞는 채널번호를 가진 시스템의 수신기를 위하려는 것이다. 악기는 미디메시지를 여러 채널에서 받을 수 있다. 무슨 프로그램 번호가 켜져있는가 또는 무슨 모드로 실행하는가 등의 주요 명령어를 받는 채널을 "기본채널"이라 한다. 여러 채널(기본채널 포함)에서 실행(performance) 데이터를 받도록 악기를 설정할 수 있다. 이를 "보이스채널"이라 한다. 이런 다중채널의 상황에 ..

나머지/midiSpec 2020.03.04

미디 1.0 상세명세 / 데이터 형식 (메시지)

미디 1.0 상세명세 데이터 형식 상태바이트 하나와 뒤따르는 하나 내지 두 데이터바이트로 구성된 여러 바이트짜리 "메시지"를 통해 미디 통신은 달성된다. 실시간 및 독점 메시지는 예외이다. ※메타메시지는 미디메시지가 아니다. 미디를 장착한 악기에는 통상적으로 수신기(receiver, 받개)와 송신기(transmitter, 보내개)가 포함된다. 수신기와 송신기 중 하나만 있는 악기도 간혹 있다. 수신기는 미디 형식의 메시지를 받아서 미디명령을 수행한다. 이는 `opto-isolator 하나와 `Universal Asynchronous Receiver/Transmitter (UART), 원하는 기능을 수행하는 데 필요한 기타 하드웨어로 구성된다. 송신기는 미디형식의 메시지를 발생시키고 UART와 `line ..

나머지/midiSpec 2020.03.03