В Pygame для работы с аудио предназначены модули pygame.mixer и pygame.mixer.music. Модули похожи, однако pygame.mixer в первую очередь адаптирован для добавления и настройки звуковых эффектов в игре. В то время как pygame.mixer.music – для добавления фоновой музыки.
Функция pygame.mixer.music.load() загружает потоковое аудио, т. е. не грузит файл целиком, а делает это отдельными порциями. В результате можно проигрывать только один файл за раз. Однако можно ставить файлы в очередь функцией queue(). Поддерживает в том числе формат mp3 (но не в Ubuntu).
С другой стороны, в pygame.mixer ключевым является класс Sound. Он позволяет загружать, проигрывать и выполнять ряд других действий с файлами форматов wav или ogg. При создании экземпляра Sound в конструктор передается имя файла.
В примере ниже подгружается фоновая музыка: pygame.mixer.music.load(). Функция не возвращает никакого «музыкального» объекта, поэтому результат ее вызова не присваивается переменной.
Уроки Python / Как воспроизвести аудио PyAudio
С помощью функции music.play() файл начинает проигрываться. Если требуется зациклить композицию, то в play() передается число -1. Положительный аргумент указывает на количество повторов + одно дополнительное. То есть, если надо проиграть композицию 2 раза, то в функцию передается число 1.
В программе при нажатии на клавишу 1 клавиатуры музыка ставится на паузу: music.pause(). Клавиша 2 уменьшает громкость в два раза: music.set_volum(0.5). Нажатие 3 возвращает громкость на прежний уровень. Функция unpause() вызывается на случай, если до этого музыка была выключена (клавишей 1).
В примере создаются два объекта типа Sound. У них есть свой метод play(). В данном случае файлы проигрываются при клике левой и правой кнопками мыши. Объекты Sound могут проигрываться одновременно, так как обычно принадлежат разным каналам. Если требуется более тонкое управление звуками, дополнительно используют класс Channel.
Программа ниже в процессе выполнения интерпретатором python3.6 может выбросить ошибку, в 3.8 – все нормально. На официальном сайте pygame.org рекомендуется использовать Pygame с версией Питона от 3.7.7.
import pygame as pg import sys pg.init() sc = pg.display.
set_mode((400, 300)) pg.mixer.music.load(‘Beethoven.ogg’) pg.mixer.
music.play() sound1 = pg.mixer.Sound(‘boom.wav’) sound2 = pg.mixer.
Sound(‘one.ogg’) while 1: for i in pg.event.get(): if i.type == pg.
QUIT: sys.exit() elif i.type == pg.KEYUP: if i.key == pg.K_1: pg.mixer.
music.pause() # pygame.mixer.music.stop() elif i.key == pg.K_2: pg.mixer.music.
unpause() # pygame.mixer.music.play() pg.mixer.music.set_volume(0.5) elif i.key == pg.K_3: pg.mixer.
music.unpause() # pygame.mixer.music.play() pg.mixer.music.set_volume(1) elif i.type == pg.
MOUSEBUTTONUP: if i.button == 1: sound1.play() elif i.button == 3: sound2.play() pg.time.
delay(20)
Если закомментировать вызовы функций pause() и unpause() и раскомментировать stop() и play(), то результат будет схож. Разница в том, что при использовании комбинации stop-play файл начнет проигрываться сначала, а при pause-unpause продолжится с места останова.
КАК ВОСПРОИЗВОДИТЬ ЗВУКИ НА PYTHON? МУЗЫКА. ЭФФЕКТЫ.
Если у вас нет файлов wav или ogg для тестов, можете найти немного в каталоге data модуля pygame.examples. Модуль находится в папке библиотеки pygame, адрес которой можно посмотреть так:
>>> import pygame >>> pygame.__file__ ‘/home/. /pygame/__init__.py’
Практическая работа
Добавьте фоновую музыку и звук столкновения в игру из практической работы предыдущего урока.
Окно игры должно закрываться только после того, как звук столкновения полностью проиграется. В зависимости от решения вам может понадобиться метод get_length() объекта типа Sound. Метод возвращает продолжительность звука, выраженную в секундах (тип float).
Курс с примерами решений практических работ:
pdf-версия
X Скрыть Наверх
Pygame. Введение в разработку игр на Python
Источник: younglinux.info
Добавляем звук в игровой процесс. Модули mixer и music
Однако, смотрите, нажимая клавишу, звук появляется с задержкой. Это из-за того, что нужно выполнить команду pre_init() миксера до инициализации самого Pygame:
pygame.mixer.pre_init(44100, -16, 1, 512) # важно вызвать до pygame.init()
Теперь, при воспроизведении звуковых эффектов задержек не будет. Также вы можете заметить, что класс Sound не содержит методов для пауз. Дело в том, что весь этот функционал выносится на уровень канала или миксера в целом. Что это за каналы? Смотрите, когда мы запускаем воспроизведение из класса Sound, то автоматически создается канал, в котором происходит обработка звука.
И уже на уровне канала существуют методы для пауз, остановок, затухания звучания и т.п. Это сделано для возможности одновременного воспроизведения нескольких звуковых дорожек: каждый звук работает в своем отдельном канале. А для получения ссылки на канал достаточно записать команду:
ch = s.play()
То есть, метод play возвращает ссылку на канал, в котором происходит воспроизведение. И далее, уже через переменную ch можно вызывать методы канала, например:
ch.pause()
Если же мы хотим поставить на паузу все каналы, то следует вызвать такую же функцию на уровне всего микшера:
pygame.mixer.pause()
По аналогии работают остальные методы и функции микшера.
Добавление звуковых эффектов в игру
Теперь, когда мы в целом разобрались с работой звука в Pygame, давайте добавим звуковые эффекты в нашу игру с шариками. Смотрите, здесь вначале идет инициализация микшера:
pygame.mixer.pre_init(44100, -16, 1, 512) # важно прописать до pygame.init()
так, чтобы не было задержек при воспроизведения звука. Далее, мы загружаем и проигрываем фоновый звук, зациклив воспроизведение:
pygame.mixer.music.load(‘sounds/bird.mp3’) pygame.mixer.music.play(-1)
Затем, формируем звуковой эффект для ловли шара:
s_catch = pygame.mixer.Sound(‘sounds/catch.ogg’)
И в функции collideBalls проигрываем этот звук, если шар попадает в телегу:
def collideBalls(): global game_score for ball in balls: if t_rect.collidepoint(ball.rect.center): s_catch.
play() game_score += ball.score ball.kill()
Запускаем игру и теперь у нас все работает со звуковыми эффектами. По аналогии можно добавить и другие звуки, но это вы уже сможете сделать самостоятельно.
Ссылка на эту программу в начале страницы и каждый из вас сможет внимательно ее изучить и изменять по своему усмотрению.
Источник: proproprogs.ru
Как воспроизводить звук в Python
Воспроизведение звука с помощью скрипта Python — простая задача, потому что этот язык содержит множество модулей для использования скрипта для воспроизведения или записи звука. Используя эти модули, вы можете воспроизводить аудиофайлы, такие как mp3, wav и другие типы аудиофайлов. Вы должны сначала установить звуковой модуль, прежде чем использовать модуль в скрипте. Из этого туториала Вы узнаете, как установить различные типы модулей Python для воспроизведения звука.
Воспроизвести звук с помощью playsound
В звук module — это самый простой модуль для воспроизведения звука. Этот модуль работает как на Python 2, так и на Python 3, и протестирован для воспроизведения только файлов wav и mp3. Он содержит только один метод с именем playsound (), с одним аргументом для Linux, чтобы взять имя аудиофайла для воспроизведения.
Монтаж:
Выполните следующую команду pip3, чтобы установить этот модуль в Python 3:
$ pip3 install playsound
Пример: воспроизведение файлов wav и mp3 с помощью playsound
В следующем скрипте имя файла в формате wav сначала будет приниматься в качестве входных данных, и файл будет воспроизводиться с использованием playsound () метод. Затем будет введено имя файла mp3 и воспроизведено тем же способом.
#!/ usr / bin / env python3
# Импортировать модуль playsound
от звука импортного звука
# Введите существующее имя файла в формате wav
wavFile = input («Введите имя файла в формате wav:»)
# Воспроизвести файл wav
playsound (wavFile)
# Введите существующее имя файла в формате mp3
mp3File = input («Введите имя файла в формате mp3:»)
# Воспроизвести mp3 файл
playsound (mp3File)
Выход:
Если оба файла существуют, звуковой файл начнет воспроизводиться.
Воспроизведение звука с помощью pydub
В Pydub модуль поддерживает как Python 2, так и Python 3. Этот модуль имеет множество полезных функций, помимо звуковых модулей Python. Модуль pydub поддерживает разные типы аудиофайлов. Этот модуль можно использовать для разделения сегментов любого аудиофайла или добавления сегментов к аудиофайлам. Вы также можете добавить простой эффект поверх звука.
Этот модуль напрямую зависит от двух других модулей, называемых ffmpeg а также libavcodec-extra. Перед установкой модуля pydub вы должны сначала установить эти модули.
Монтаж:
Выполните следующие команды, чтобы установить пакет pydub для Python:
$ sudo apt-get install ffmpeg libavcodec-extra
$ pip3 установить pydub
Пример-1: Воспроизведение локальных файлов wav и mp3
Этот модуль использует form_file () метод для воспроизведения файла wav и form_mp3 () метод воспроизведения mp3 файла. В играть() здесь используется метод для воспроизведения файлов wav и mp3:
#!/ usr / bin / env python3
из pydub импортировать AudioSegment
из Pydub.воспроизведение импорт воспроизведение
# Введите существующее имя файла в формате wav
wavFile = input («Введите имя файла в формате wav:»)
# загружаем файл в pydub
sound = AudioSegment.from_file (wavFile)
print («Воспроизведение файла wav…»)
# воспроизвести файл
играть (звук)
# Введите существующее имя файла в формате mp3
mp3File = input («Введите имя файла mp3:»)
# загружаем файл в pydub
music = AudioSegment.from_mp3 (mp3File)
print («Воспроизведение mp3-файла…»)
# воспроизвести файл
воспроизводить музыку)
Выход:
Если существуют имена файлов wav и mp3, то звук будет воспроизводиться, и появится следующий вывод:
Пример-2: загрузка и воспроизведение файлов wav и mp3 с URL-адреса
В следующем примере показано, как любой файл wav или mp3 можно воспроизвести после загрузки файла с допустимого URL-адреса. Модуль urllib используется в скрипте для загрузки звукового файла.
#!/ usr / bin / env python3
# Импортировать необходимые модули
из pydub импортировать AudioSegment
из Pydub.воспроизведение импорт воспроизведение
импортировать urllib
# Установить имя файла в формате wav
filename = «служебный звонок.wav «
# Скачать wav файл с url
print («загрузка файла wav…»)
urllib.запрос.urlretrieve («http: // soundbible.com / grab.php?id = 2218 , имя файла)
# загружаем файл в pydub
sound = AudioSegment.from_file (имя файла)
print («Воспроизведение файла wav…»)
# воспроизвести файл
играть (звук)
# Установить имя файла mp3
filename = «птицы.mp3 «
# Скачать mp3 файл
print («скачивание mp3-файла…»)
urllib.запрос.urlretrieve («http: // soundbible.com / grab.php?id = 2207 , имя файла)
# загружаем файл в pydub
birdsound = AudioSegment.from_mp3 (имя файла)
print («Воспроизведение mp3-файла…»)
# Воспроизвести результат
играть (птичий звук)
print («Готово.»)
Звуковой файл начнет воспроизводиться после завершения загрузки, и появится следующий результат:
Воспроизвести звук с помощью tksnack
В tksnack модуль зависит от другого модуля с именем tkinter, чтобы активировать тк объект в сценарии. tksnack команды можно использовать после инициализации тк объект. Вы должны установить оба ткинкер а также tksnack пакеты для Python 3.
Монтаж:
$ sudo apt-get install python3-tk
$ sudo apt-get install python3-tksnack
Пример: воспроизведение файла wav с помощью tksnack
В следующем скрипте модуль tkSnack инициализируется с помощью объекта tkinter, а следующий играть() метод используется для воспроизведения файла wav. Здесь блокировка аргумент указывает, что звук будет воспроизводиться асинхронно.
#!/ usr / bin / env python3
# Импортировать необходимые модули
импортный tkinter
импорт tkSnack
импорт ОС
# Инициализировать объект tk для использования tksnack
корень = tkinter.Тк ()
tkSnack.initializeSnack (корень)
# Определить объект tksnack
звук = tkSnack.Звук()
# Введите существующее имя файла в формате wav
wavFile = input («Введите имя файла в формате wav:»)
если ос.дорожка.существует (wavFile):
# Прочитать файл
звук.читать (wavFile)
# Воспроизвести звук
звук.играть (блокировка = 1)
еще:
# Распечатать сообщение, если путь к файлу не существует
print («Wav файл не существует.»)
Выход:
Звук начнет воспроизводиться, если файл wav существует, и появится следующий результат:
Воспроизведение звука с помощью simpleaudio
В simpleaudio модуль — это пакет Python 3, который может воспроизводить звуковые файлы. Этот модуль в основном предназначен для воспроизведения файлов wav и массивов NumPy. Перед использованием этого модуля вам необходимо установить пакет. Этот звуковой пакет напрямую зависит от другого пакета, называемого libasound2-dev. Вам нужно будет установить libasound2-dev пакет, а затем вы можете установить simpleaudio упаковка.
Монтаж:
Выполните следующую команду, чтобы установить пакеты:
$ sudo apt-get install libasound2-dev
$ pip3 установить simpleaudio
Пример: воспроизведение файла wav с помощью simpleaudio
В следующем скрипте любое имя файла в формате wav будет приниматься в качестве входных данных. Если файл существует, скрипт воспроизведет звуковой файл; в противном случае скрипт отобразит сообщение об ошибке.
#!/ usr / bin / env python3
# Импортировать звуковой модуль simpleaudio
импортировать simpleaudio как sa
# Введите имя существующего wav файла
wavFile = input («Введите имя файла в формате wav:»)
# Воспроизвести звук, если файл wav существует
пытаться:
# Определить объект для воспроизведения
w_object = sa.WaveObject.from_wave_file (wavFile)
# Определить объект для управления воспроизведением
p_object = w_object.играть()
print («Играет звук…»)
p_object.wait_done ()
print («Готово.»)
# Вывести сообщение об ошибке, если файл не существует
кроме FileNotFoundError:
print («Файл Wav не существует»)
Звуковой файл будет воспроизведен, и после воспроизведения звука появится следующий результат:
Базовое использование четырех модулей Python для воспроизведения звука объясняется в этом руководстве с использованием ряда примеров. Задача воспроизведения звука показана только в этом руководстве, но вы можете записывать, редактировать и выполнять различные задачи, связанные со звуком, с помощью скрипта Python.
Игры
Командная строка — не только ваш главный союзник при использовании Linux — она также может быть источником развлечений, потому что вы можете использ.
Игры
Если вам нравится играть в игры на Linux с помощью геймпада вместо стандартной системы ввода с клавиатуры и мыши, для вас есть несколько полезных прил.
Игры
Если вам нравится играть в игры на Linux, скорее всего, вы использовали приложения и утилиты, такие как Wine, Lutris и OBS Studio, для улучшения игров.
Свежие статьи об операционных системах. Множество интересных гайдов и полезных советов. Почувствуйте себя своим в мире современных технологий
Источник: ru.phen375questions.com