Невозможно открыть любой звуковой файл в pygame.mixer - PullRequest
0 голосов
/ 13 января 2019

Я работал над проектом Pygame, связанным со звуком, используя pygame.mixer, и я столкнулся с проблемой, которую не могу решить. Я не могу открыть какой-либо звуковой файл, который я пробовал (.mp3 и .midi).

Я использую Python 3 на PyCharm 2018.3. Моя Pygame в основном обновлена ​​(версия 1.9.3). Я попытался использовать полный путь, я сделал pygame.init(), mixer.init(), и я полностью застрял.

Это мой код:

import pygame
from pygame import mixer

pygame.init()
mixer.init(44100, 16, 2, 4096)

f = mixer.Sound("output.midi")
f.play()

print(bool(mixer.get_busy()))
while mixer.get_busy():
    pass

Это ошибка (... в файле покрывает фактическую трассировку):

Traceback (most recent call last):
  File "/home/.../note.py", line 27, in <module>
    f = mixer.Sound("output.midi")
pygame.error: Unable to open file 'output.midi'

Предполагается, что программа откроет файл .midi, созданный в другой части программы (который я закомментировал), и воспроизведет его до его завершения. Вместо этого я просто получаю сообщение об ошибке, и звук не воспроизводится.

Ответы [ 2 ]

0 голосов
/ 01 июля 2019

Конечно, вы можете воспроизводить MIDI-файлы с помощью pygame. Расширение MIdI-файла .mid (не .midi, как в вашем коде). Это работает для меня:

import pygame

def play_MIDI_pygame(midi_file):
    freq = 44100                               # audio CD quality
    bitsize = -16                              # unsigned 16 bit
    channels = 2                               # 1 is mono, 2 is stereo
    buffer = 1024                              # number of samples
    clock = pygame.time.Clock()
    pygame.mixer.init(freq, bitsize, channels, buffer)
    pygame.mixer.music.set_volume(0.8)         # volume 0 to 1.0

    pygame.mixer.music.load(midi_file)         # read the midi file
    pygame.mixer.music.play()                  # play the music
    while pygame.mixer.music.get_busy():       # check if playback has finished
        clock.tick(30)

midi_file = 'myMidi.mid'
play_MIDI_pygame(midi_file)
0 голосов
/ 13 января 2019

MIDI-файл не является "звуковым файлом"; это в основном цифровые ноты. Вам понадобится MIDI-синтезатор, чтобы генерировать из него звук.

И MP3 сжимается по алгоритму; это не последовательность звуковых сэмплов.

Из документации PyGame.Mixer :

Звук можно загрузить из аудиофайла OGG или из несжатого WAV.

Короче говоря, вы используете не тот инструмент для работы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...