play MIDI files in python?

后端 未结 4 909

I\'m looking for a method to play midi files in python. It seems python does not support MIDI in its standard library. After I searched, I found some python midi librarys su

相关标签:
4条回答
  • 2020-12-31 02:08

    Just to add a minimal example (via DaniWeb):

    # conda install -c cogsci pygame
    import pygame
    
    def play_music(midi_filename):
      '''Stream music_file in a blocking manner'''
      clock = pygame.time.Clock()
      pygame.mixer.music.load(midi_filename)
      pygame.mixer.music.play()
      while pygame.mixer.music.get_busy():
        clock.tick(30) # check if playback has finished
        
    midi_filename = 'FishPolka.mid'
    
    # mixer config
    freq = 44100  # audio CD quality
    bitsize = -16   # unsigned 16 bit
    channels = 2  # 1 is mono, 2 is stereo
    buffer = 1024   # number of samples
    pygame.mixer.init(freq, bitsize, channels, buffer)
    
    # optional volume 0 to 1.0
    pygame.mixer.music.set_volume(0.8)
    
    # listen for interruptions
    try:
      # use the midi file you just saved
      play_music(midi_filename)
    except KeyboardInterrupt:
      # if user hits Ctrl/C then exit
      # (works only in console mode)
      pygame.mixer.music.fadeout(1000)
      pygame.mixer.music.stop()
      raise SystemExit
    
    0 讨论(0)
  • 2020-12-31 02:13

    The pygame module can be used to play midi files.

    http://www.pygame.org/docs/ref/music.html

    See the example here:

    http://www.daniweb.com/software-development/python/code/216979

    a whole bunch of options available at:

    http://wiki.python.org/moin/PythonInMusic

    and also here which you can modify to suit your purpose: http://xenon.stanford.edu/~geksiong/code/playmus/playmus.py

    0 讨论(0)
  • 2020-12-31 02:16

    pretty_midi can generate the waveform for you, you can then play it with e.g. IPython.display.Audio

    from IPython.display import Audio
    from pretty_midi import PrettyMIDI
    
    sf2_path = 'path/to/sf2'  # path to sound font file
    midi_file = 'music.mid'
    
    music = PrettyMIDI(midi_file=midi_file)
    waveform = music.fluidsynth(sf2_path=sf2_path)
    Audio(waveform, rate=44100)
    
    0 讨论(0)
  • 2020-12-31 02:21

    Use pygame to play your midi file. Examples are here or here

    0 讨论(0)
提交回复
热议问题