Использование PyGame для визуализации сигналов звукового диапазона с частотой дискретизации 44100 Гц в реальном времени

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

PyGame — это популярная библиотека для разработки 2D игр на Python. Первоначальная версия PyGame была представлена Питом Шиннерсом в октябре 2000 года, и с тех пор библиотека постепенно завоевала популярность благодаря простоте в использовании, хорошей документации и активному сообществу. Изначально PyGame создавался для работы с ранними версиями Python (в том числе Python 2) и основывался на библиотеке SDL 1. SDL – это кроссплатформенная библиотека на языке C, предоставляющая низкоуровневый доступ к аудиоустройствам, клавиатуре, мыши и графическим функциям через OpenGL, DirectX и др.

Актуальными являются версия 2.x, которые полностью поддерживают Python 3 (начиная с 3.7 и выше) и имеет ряд обновлений, включая улучшенную поддержку OpenGL, аппаратное ускорение, а также возможность работы с вертикальной синхронизацией на мониторах (VSync).

В данной статье рассмотрено необычное применение PyGame – это быстрый вывод графиков, например, потоков данных с частотой дискретизации 44100 Гц со звуковой карты, что может быть необходимо для визуализации звуковых сигналов.

Для такой задачи хорошо подходят следующие функции и возможности PyGame:

  • pygame.display.flip() очень быстро обновляет содержимое экрана после произведённых изменений.

  • С помощью pygame.time.Clock() можно контролировать FPS, что позволяет требовать от системы обновление до 60 кадров и более в секунду, что важно при отображении сигналов в реальном времени.

  •  Новый флаг vsync (например, передаваемый в set_mode с параметром pygame.RESIZABLE или pygame.OPENGL) может использоваться для синхронизации обновления экрана с вертикальной разверткой дисплея.

Основной цикл (обычный в PyGame):

running = True
while running:
    # Обработка событий
    # Генерация шума и обновление данных графика
    # Очистка экрана
    # Отрисовка сетки и графика
    # Подсчет и отображение FPS
    # Обновление экрана
    pygame.display.flip()
    clock.tick(FPS)

pygame.quit()

Исходные коды для PyGame и других графических пакетов можно посмотреть в моей статье: Визуализация данных в реальном времени. Matplotlib, PyQTGraph, pyOpenGL, VisPy, Bokeh и др.

Ниже несколько популярных игр, разработанных с использованием PyGame:

1. "The Battle for Wesnoth"

  • Год выпуска: 2005 (первая версия на PyGame)

  • Игровая аудитория: Стратегия, пошаговая

  • Число установок: Несколько миллионов (включая версии на других языках)

  • Описание: Пошаговая стратегическая игра с элементами фэнтези. Игра имеет открытый исходный код и активно развивается сообществом.

  • Скриншоты: Страница игры на SourceForge

2. "Freedoom"

  • Год выпуска: 2009 (первая версия на PyGame)

  • Игровая аудитория: Экшен, шутер от первого лица

  • Число установок: Несколько сотен тысяч

  • Описание: Свободная версия классического шутера от первого лица Doom. Использует движок, написанный на PyGame.

  • Скриншоты: Официальный сайт Freedoom

3. "PySolFC"

  • Год выпуска: 2003 (первая версия на PyGame)

  • Игровая аудитория: Логические, карточные игры

  • Число установок: Несколько сотен тысяч

  • Описание: Коллекция карточных пасьянсов. Игра имеет множество режимов и уровней сложности.

  • Скриншоты: PySolFC на GitHub

4. "Save the Date"

  • Год выпуска: 2013

  • Игровая аудитория: Инди, визуальная новелла

  • Число установок: Несколько десятков тысяч

  • Описание: Интерактивная визуальная новелла с элементами головоломки. Игра получила положительные отзывы за оригинальный сюжет и стиль.

  • Скриншоты: IndieDB

5. "Dino Run"

  • Год выпуска: 2008

  • Игровая аудитория: Экшен, бесконечный раннер

  • Число установок: Несколько сотен тысяч

  • Описание: Игра в жанре бесконечного раннера, где игрок управляет динозавром, убегающим от катаклизма. Игра получила популярность благодаря своей простой механике и высокой реиграбельности.

  • Скриншоты: Официальный сайт Dino Run

6. "Tux Racer"

  • Год выпуска: 2000 (первая версия на PyGame)

  • Игровая аудитория: Гонки, экшен

  • Число установок: Несколько сотен тысяч

  • Описание: Аркадная игра, где игрок управляет пингвином, катающимся на лыжах. Игра была популярна среди пользователей Linux.

  • Скриншоты: Tux Racer на SourceForge

Источник: https://habr.com/ru/articles/879786/


Интересные статьи

Интересные статьи

Постоянный рост объема информации в интернете и развитие технологий приводят к появлению новых методов взлома и росту числа киберугроз. Основные алгоритмы шифрования, такие как RSA и AES, при увеличен...
Дано:Серверная плата с самым свежим чипом от Aspeed. На плате распаяны два видео-разъема, идущих напрямую с чипа: VGA и DisplayPort. Видео через древний аналоговый VGA-разъём воспроизводится замечател...
Представьте 2 колонии байбаков. Обычно это миролюбивые животные, которые живут дружными семьями, но только не в тех ситуациях, когда встает вопрос о занимаемой территории. Подобное может произойти меж...
В 2019 году люди знакомятся с брендом, выбирают и, что самое главное, ПОКУПАЮТ через интернет. Сегодня практически у любого бизнеса есть свой сайт — от личных блогов, зарабатывающих на рекламе, до инт...
Cтатья будет полезна тем, кто думает какую выбрать CMS для интернет-магазина, сравнивает различные движки, ищет в них плюсы и минусы важные для себя.