데비안에서 실행중인 RPi로 내 MIDI 출력 장치 (피아노)가있는 포트를 듣고 싶습니다. 나는 pygame.midi를 조사해 봤지만 포트를 경청했지만 어떻게 든 모든 미디 정보를 추출 할 수는 없습니다. 아래의 코드를 찾으십시오 [편집 된 코드 스 니펫]피아노 노트를 파이썬에서 읽는 것
편집 : 고마워요.
데비안에서 실행중인 RPi로 내 MIDI 출력 장치 (피아노)가있는 포트를 듣고 싶습니다. 나는 pygame.midi를 조사해 봤지만 포트를 경청했지만 어떻게 든 모든 미디 정보를 추출 할 수는 없습니다. 아래의 코드를 찾으십시오 [편집 된 코드 스 니펫]피아노 노트를 파이썬에서 읽는 것
편집 : 고마워요.
먼저 키보드에 pygame이있는 장치 ID를 알아야합니다. 이 정보 튜플 내부의 첫 번째 하나는로이 장치를 결정한다는
(0, ('MMSystem', 'Microsoft MIDI Mapper', 0, 1, 0))
(1, ('MMSystem', '6- Saffire 6USB', 1, 0, 0))
(2, ('MMSystem', 'MK-249C USB MIDI keyboard', 1, 0, 0))
(3, ('MMSystem', 'Microsoft GS Wavetable Synth', 0, 1, 0))
당신이 배울 수있는 파이 게임 설명서에서 :
이import pygame.midi
def print_devices():
for n in range(pygame.midi.get_count()):
print (n,pygame.midi.get_device_info(n))
if __name__ == '__main__':
pygame.midi.init()
print_devices()
그것은이 같은 같습니다 나는 알이 작은 기능을 썼다 적합한 입력 장치.
def readInput(input_device):
while True:
if input_device.poll():
event = input_device.read(1)
print (event)
if __name__ == '__main__':
pygame.midi.init()
my_input = pygame.midi.Input(2) #only in my case the id is 2
readInput(my_input)
보여줍니다 :
[[[144, 24, 120, 0], 1321]]
을 는 그럼 무한 루프에 일부 데이터를 읽을 수 있습니다 미디 데이터의리스트 및
두 번째 값은 관심있는 한 우리가 메모로 인쇄 그래서 :.
def number_to_note(number):
notes = ['c', 'c#', 'd', 'd#', 'e', 'f', 'f#', 'g', 'g#', 'a', 'a#', 'b']
return notes[number%12]
def readInput(input_device):
while True:
if input_device.poll():
event = input_device.read(1)[0]
data = event[0]
timestamp = event[1]
note_number = data[1]
velocity = data[2]
print (number_to_note(note_number), velocity)
난이 도움이되기를 바랍니다. 그것은 내 첫 번째 대답이고, 너무 길지 않기를 바랍니다. :)
이것은 너무 길지 않았습니다! 이것은 위대하고 확실한 대답입니다. –
나는 Pyserial http://pyserial.sourceforge.net/shortintro.html을 보았습니다. – That1Guy
나는 MIDI가 연속적이라고 생각하지 않습니다. – ninMonkey
샘플 코드를 게시 할 수 있습니까? 코드없이 문제를 진단하는 것은 정말로 어렵습니다. – adahlin