Как добавить жанр музыки в на python
Перейти к содержимому

Как добавить жанр музыки в на python

Стрелялка с Pygame №8: звук и музыка

Восьмая часть проекта «Стрелялка с Pygame». Если пропустили, обязательно вернитесь и начните с первой части.
В этом уроке в игре появятся музыка и звуки.

В этой серии уроков будет создана полноценная игра на языке Python с помощью библиотеки Pygame. Она будет особенно интересна начинающим программистам, которые уже знакомы с основами языка и хотят углубить знания, а также узнать, что лежит в основе создания игр.

Сила звука

Хороший звук (музыка и звуковые эффекты) — это один из самых эффективных способов добавить в игру «энергии». Это неофициальный термин из геймдизайна, который применяется по отношению к элементам, делающим игры более веселыми и захватывающими. Его часто называют «чувством игры» (game feel).

Как и в случае с графикой, найти подходящие звуки может быть непросто. OpenGameArt — отличное место для поиска аудио-ассетов, но в этот раз попробуем другой подход — создать звуковые эффекты самостоятельно.

Создание собственных звуков

Для этого будет использоваться инструмент под названием Bfxr. Он выглядит следующим образом:

Создание собственных звуков

Но не стоит пугаться этого многообразия слайдеров и жаргонизмов. Кнопки слева случайным образом генерируют звук выбранного типа. Попробуйте нажать «Shoot» несколько раз. Сгенерированные звуки сохранятся в списке ниже.

Для Стрелялки нужны звуки «выстрела» и «взрыва». После получения подходящего звука, нужно нажать на кнопку «Export Wav» (НЕ «Save to Disk»).

Дальше необходимо создать папку «snd» (как и для изображений) и переместить WAV-файлы туда. Можете использовать, например, эти звуки:

Обратите внимание, что здесь два звука взрыва. Можно сделать так, чтобы они воспроизводились случайным образом, и таким образом добавить разнообразия в игру.

Теперь нужна музыка. Ее можно поискать на OpenGameArt или использовать следующую:

Обратите внимание, что автор указал «Attribution Instructions» (модель атрибуции). Это условия, которые выбрал музыкант, чтобы лицензировать свое произведение. Это значит, что его нужно упомянуть. Для этого достаточно скопировать и вставить текст со страницы в верхнюю часть программы.

Добавление звука в игру

Теперь можно добавлять звуки в игру. Во-первых, нужно указать, в какой папке они находятся:

Дальше файлы необходимо загрузить. Это стоит сделать в том же месте, где загружалась графика. Сначала звук выстрелов:

Теперь, когда звук загружен и присвоен переменной shoot_sound , на него можно ссылаться. Важно, чтобы он воспроизводился каждый раз, когда игрок стреляет, поэтому его нужно добавить в метод shoot() :

Это все, что требуется. Стрелять теперь будет приятнее!

Дальше нужны звуки взрывов. Загрузим оба и добавим их в список:

Для воспроизведения взрывов нужно будет случайным образом выбирать один и включать его при разрушении астероида.

Музыка

Наконец, необходимо добавить фоновую музыку, которая сделает игру более эмоциональной. Здесь необходим другой подход, потому что музыка играет непрерывно.

Сначала загружаем файл:

Музыка довольно громкая, поэтому, чтобы она не перекрывала звуки, необходимо опустить ее максимальную громкость до 40%.

Чтобы музыка играла, нужно просто выбрать в каком месте кода она будет стартовать. В случае Стрелялки это будет позиция перед началом игрового цикла.

Параметр loops определяет, как часто трек будет повторяться. Если установить значение на -1 , то он будет воспроизводиться бесконечно.

Игра теперь ощущается совсем по-другому. Геймплей не поменялся, но с музыкой и звуками все воспринимается живее. Осталось поэкспериментировать с разными звуками и понять, какие подходят лучше.

Классификация аудио / звуков с помощью python

В данном посте приведу относительно простой способ классифицировать звукозаписи с помощью python. Как и для любой задачи классификации, в первую очередь понадобится из аудиозаписи извлечь фичи, для этого воспользуемся библиотекой librosa. Звук — весьма сложная структура, не спроста задача распознавания голоса решена по сути только гигантами вроде гугла, яндекса, да и то не идеально. Хоти они явно не ограничены в вычислительных ресурсах.
В общем примерная суть всех фич заключается в том, что звук — это спектрограммы, т.е. если все данные закидывать как фичи, то классификатору будет очень тяжело. Поэтому мы из различных спектрограмм будем брать только некоторые характеристики в виде среднего, дисперсии, минимальных, максимальных значений итд.

Подробнее о каждом спектре можно прочитать здесь: github.com/subho406/Audio-Feature-Extraction-using-Librosa/blob/master/Song%20Analysis.ipynb
Здесь же представлю упрощённую версию:

Далее для классификации можно использовать любой алгоритм градиентного бустинга, буть то lightgbm, xgboost или catboost.
Предположим, что в одной папке лежат все аудиозаписи из одного класса, а в другой папке аудиозаписи из второго класса. Прочитаем их, вычислим фичи и запустим обучение.

Стоит отметить, что почему-то библиотека librosa медленно читает файл. Поэтому предложу альтернативный метод из библиотеки scipy:

Как добавить жанр музыки в на python

Hello fellow learner! Today we are going to learn how to play music in Python using a few simple lines of code.

Method 1: The playsound module

The playsound library is a cross platform module that can play audio files. This doesn’t have any dependencies, simply install the library using the pip command and you are ready to go!

To play the music we just have to use the playsound function and pass the music file path as a parameter. The library works for both mp3 and wav files.

The code for the same is shown below:

The music is played once in the background and then the program is ready for the next part of code to be executed.

Method 2: The pydub Library

The pydub library works only with .wav file format. By using this library we can play, split, merge, edit our .wav audio files.

For the library to work we import two functions namely AudioSegment and play module from playdub.playback module.

Then we simply load the song in .wav format and play the song. The code for the same is shown below:

Method 3: Using the snack sound kit

The snack sound kit can be used to play audio files in almost all the formats inclusing WAV, AU, AIFF, MP3, CSL, SD, SMP, and NIST/Sphere.

This library needs the GUI module Tkinter in order to play sounds. So we are required to import tkinter module before importing snack sound kit.

Playing audio files through snack sound kit involves creating a Tk window and initialize it. Then sound function is called and read function to load the music.

Finally to play the music we use the play function. The code for the same is shown below:

The Output Music

The music below will be the output background music which will be played in each method.

Conclusion

Today we learned playing music in python using simple lines of code and various libraries. Awesome!

Try out the codes yourself and play amazing music in Python. Thank you for reading! Happy coding!

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *