簡體   English   中英

Python Pygame.midi 得到音符八度

[英]Python Pygame.midi get note octave

有一個代碼可以讀取在 midi 上按下的音符:

import pygame.midi

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))
            note = number_to_note(note_number)

if __name__ == '__main__':
    pygame.midi.init()
    my_input = pygame.midi.Input(1)
    readInput(my_input)

它說的是音符,但我如何得到音符的八度音階? 例如:不只是 A#,而是 A4#

你只需要用你的筆記做一些算術:

note = number%12
octave = (number - note) / 12
return str(octave) + notes[note]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM