미디 템포 메시지는 다른 트랙에 어떻게 적용됩니까?

StackOverflow https://stackoverflow.com/questions/1080297

  •  22-08-2019
  •  | 
  •  

문제

내가 추측 할 수있는 상당히 간단한 질문이지만 어디서나 결정적인 답변을 찾을 수 없습니다.

배경 : 첫 번째 트랙에 템포 컨트롤이있는 멀티 트랙 미디 파일이 있습니다. 다른 트랙의 절대 _tick 카운트를 "초"로 변환해야합니다 (MIDI 파일의 시작에서 분수 초 오프셋).

파일에 대한 PPQN (pulseperquarternote)을 기준으로 절대 _tick을 초에 템포 (Quarter Per Quarter Note)를 기준으로 절대 _tick를 초로 관련시키는 공식이 있습니다.

문제는 : 첫 번째 트랙 (트랙 0)의 템포 변경이 다른 모든 트랙에 적용됩니까?

그렇다면 다른 트랙을 구문 분석하는 동안 (예 : Note_on 및 Note_off 메시지가있는 트랙 4)는 트랙 0의 템포 변경을 병렬로 향하게해야합니다. 맞습니까?

감사,

표시

도움이 되었습니까?

해결책

요컨대, 그렇습니다. 첫 번째 트랙에는 전체 배열에 적용되는 타이밍 정보가 포함되어 있으므로 각 트랙에 동일하게 이러한 메시지를 적용합니다. 순수한 시각. 모든 이벤트는 진드기에서 오프셋을 사용하므로 먼저 Tempo Change 메시지를 추출하고 절대 시간으로 변환 한 다음 다른 트랙에서 읽을 때 해당 타임 라인에 따라 이러한 메시지를 적용합니다.

로부터 미디 광신자의 기술 세뇌 센터:

형식 0 파일에서 템포 변경은 하나의 MTRK 전체에 흩어져 있습니다. 형식 1에서, 첫 번째 MTRK는 "템포 맵"을 생성 할 수있는 일부 장치에서 읽을 수 있도록 템포 (및 시간 서명) 이벤트로만 구성되어야합니다. 이 MTRK에 MIDI 이벤트를 배치하지 않는 것이 가장 좋습니다. 형식 2에서 각 MTRK는 하나 이상의 초기 템포 (및 시간 서명) 이벤트로 시작해야합니다.

즉, 일부 시퀀서는이 규칙을 위반하고 타이밍 정보와 함께 첫 번째 트랙에 실제 MIDI 이벤트를 배치합니다. 표준은 이와 관련하여 그렇게 구체적이지 않기 때문입니다. 귀하의 프로그램은 이러한 방식으로 형식화 된 Wild에서 MIDI 파일을 만나기 때문에 두 경우를 처리해야합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top