Интересный Python #13: играем "Имперский марш"
В прошлых постах было слишком много слов «работаем». Поэтому сегодняшний пост будет про то, как играть. Причём играть не что-то там, а музыку. Причём музыку не какую-то там, а «Имперский марш» из «Звёздных войн». Так что, товарищи Дарты Вейдеры, отвлекитесь на пару минут от удушения очередного офицера и насладитесь чудесными звуками.
Для воспроизведения звуков будем использовать модуль winsound из стандартной библиотеки Python. Устанавливать ничего не нужно, он уже идёт в комплекте с интерпретатором.
В нём есть функция Beep(), с помощью которой можно воспроизвести звук заданной частоты и заданной длительности.
Важно: модуль работает только под Windows. Господа линуксоиды, сегодня вы в пролёте :(
Дальше в посте будет много кода в виде скриншотов. Забрать его в виде текста можно здесь.
Также понадобится модуль time, с помощью которого будем создавать паузы.
Каждой ноте соответствует определённая частота звука, выраженная в герцах. Таблицу можно увидеть здесь или здесь.
Составим список необходимых нот:
Ключ - это название ноты, а значение - это частота.
Запишем мелодию в виде набора нот.
1/4, 3/16 и прочее - это длительность каждой ноты.
Нам понадобятся 2 функции: одна для воспроизведения конкретной ноты, а вторая - для воспроизведения всей мелодии.
Воспроизводим ноту
Воспроизводим мелодию
Наслаждаемся результатами
Оригинальный темп мелодии - 103 BPM.
Забрать полный код в текстовом виде можно здесь.
Программирование на python
686 постов11.9K подписчиков
Правила сообщества
Публиковать могут пользователи с любым рейтингом. Однако!
Приветствуется:
• уважение к читателям и авторам
• конструктивность комментариев
• простота и информативность повествования
• тег python2 или python3, если актуально
• код публиковать в виде цитаты, либо ссылкой на специализированный сайт
Не рекомендуется:
• допускать оскорбления и провокации
• распространять вредоносное ПО
• просить решить вашу полноценную задачу за вас
• нарушать правила Пикабу