2017-05-04 8 views
0

나는 cc를 보낼 수있는 장치에서 들어오는 cc 메시지를 읽고 nrpn 메시지로 다른 장치로 보낼 수있는 프로그램을 작성하고 있습니다. 파이 게임에서 CC 메시지를 보내는 방법을 알고 있지만 nrpn을 보내는 방법에 대해 내 마음을 감쌀 수는 없습니다. 나는 Vriareon 코드를 보았고 어디에도 미디에 액세스하지 못했습니다. 누구든지 이것이 어떻게 행해지는지를 보여줄 수 있습니까?pygame midi로 NRPN 메시지를 보내는 방법

감사합니다.

+0

된 NRPN은 CC들 * *이있다. –

+0

수정하십시오. 내가 이해하지 못하는 것은 제어 메시지에 사용할 번호입니다. CC 번호가 17 인 경우 다음과 같이 할 수 있습니다. "self.midi_out.write_short (0xb0, 17, 123)". NRPN이 "0:15"처럼 보이면 올바른 NRPN을 어떻게 처리합니까? – PKore

답변

0

NRPN 메시지 CC 메시지입니다.

그러나 NRPN 번호는 CC 번호와 다릅니다. MIDI specification 말한다 :

99 (비 - 등록 컨트롤러 번호 6 (데이터 입력), 콘트롤러 번호 96 (데이터 단위) (97) (데이터 감소), 98 (미등록 파라미터 번호 LSB)와 함께

매개 변수 번호 MSB), 100 (등록 된 매개 변수 번호 LSB) 및 101 (등록 된 매개 변수 번호 MSB)은 MIDI를 통해 사용 가능한 컨트롤러 수를 확장합니다. 매개 변수 데이터는 먼저 제어기 98 및 99 또는 100 및 101을 사용하여 편집 할 매개 변수 번호를 선택하고 제어기 번호 6, 96 또는 97을 사용하여 해당 매개 변수의 데이터 값을 조정하여 전송됩니다.

변경하려면

B0 07 xx 

는, NRPN을 변경하려면 먼저 NRPN을 선택합니다 : :

B0 63 mm 
B0 62 ll 

을 그리고 현재 선택된 NRPN 재치를 변경 볼륨 같은 컨트롤러 (7), 단일 메시지를 보낼 것입니다 H 데이터 입력 제어기 :

B0 06 mm 
B0 26 ll (optional, for 14-bit values) 

그래서 NRPN 0으로 설정 : 값이 42 (1)로 할 수있다 :

self.midi_out.write_short(0xb0, 0x63, 0) 
self.midi_out.write_short(0xb0, 0x62, 1) 
self.midi_out.write_short(0xb0, 0x06, 42) 
+0

그 상세한 대답을 가져 주셔서 감사합니다! 죄송합니다. 내가 cc 메시지를 보내면 cc에 하나의 숫자를 사용하고 그 값에 대해 하나의 숫자를 사용하고 파이 게임의 write_short 메소드를 사용하여이를 할 수 있습니다. 파이 게임 코드에서 NRPN 변경 메시지는 어떻게 생깁니 까? 파이 게임의 write() 메소드를 사용하고 이러한 모든 값을 메시지 배열에 포함시킬 수 있습니까? – PKore

+0

이들은 보낼 바이트입니다. –

+0

이것을 이해하는 데 어려움을 겪고 있다는 점에 유감입니다. 코드에서 어떻게 보이는지 모르겠다. 어쩌면 나는 그것이 내게 더 합리적 일 것이라고 예를 볼 수있다. 나는 "env 2 공격, NRPN - 0 : 1, 0 - 127"형식의 nrpns를 제공하는 데이터 차트에서 작업하고 있습니다. "0 : 1"이라는 표기법이 NRPN에서 읽은 정보로 어떻게 변환되는지 모르겠습니다. 다른 하나는 write_short() 메서드를 사용할 때 3 개의 매개 변수를 보내는 것입니다. 그것은 nrpn 메시지가 몇 가지 더 많은 매개 변수를 필요로하고 그것이 모두 어떻게 보일지 모르겠지만 보인다. – PKore