PySDL3 Desktop: SDL3_mixer Setup PySDL3 для Desktop: Настройка SDL3_mixer
A guide to playing audio in your PySDL3 applications. Руководство по воспроизведению аудио в ваших приложениях PySDL3.
1. Installation 1. Установка
PySDL3 includes the mixer library by default. Ensure your environment is ready:
PySDL3 по умолчанию включает в себя библиотеку mixer. Убедитесь, что ваша среда готова:
pip install pysdl3
2. Assets 2. Ресурсы
Before creating the files, download the required asset: Перед созданием файлов скачайте необходимый ресурс:
- Download the WAV file: Picked Coin Echo 2.zip Скачайте WAV-файл: Picked Coin Echo 2.zip
- Note: This is a free file taken from this link. Примечание. Это бесплатный файл, который был взят по ссылке.
3. Project Structure 3. Структура проекта
pysdl3-mixer-app/
├── assets/audio/
│ └── Picked Coin Echo 2.wav
└── main.py
4. Source Code (Audio Playback) 4. Исходный код (Воспроизведение аудио)
import ctypes
import os
# Required for the SDL3 Callback-based App framework
os.environ["SDL_MAIN_USE_CALLBACKS"] = "1"
os.environ["SDL_RENDER_DRIVER"] = "opengl"
import sdl3
window = ctypes.POINTER(sdl3.SDL_Window)()
mixer = ctypes.POINTER(sdl3.MIX_Mixer)()
audio = ctypes.POINTER(sdl3.MIX_Audio)()
track = ctypes.POINTER(sdl3.MIX_Track)()
@sdl3.SDL_AppInit_func
def SDL_AppInit(appstate, argc, argv):
global mixer, audio, track, window
if not sdl3.SDL_Init(sdl3.SDL_INIT_VIDEO | sdl3.SDL_INIT_AUDIO):
return sdl3.SDL_APP_FAILURE
if not sdl3.MIX_Init():
return sdl3.SDL_APP_FAILURE
mixer = sdl3.MIX_CreateMixerDevice(sdl3.SDL_AUDIO_DEVICE_DEFAULT_PLAYBACK, None)
if not mixer:
sdl3.SDL_Log(b"Failed to create mixer")
return sdl3.SDL_APP_FAILURE
window = sdl3.SDL_CreateWindow(b"PySDL3 Mixer", 400, 300, 0)
audio_path = b"assets/audio/Picked Coin Echo 2.wav"
audio = sdl3.MIX_LoadAudio(mixer, audio_path, True)
if not audio:
sdl3.SDL_Log(b"Failed to load audio")
return sdl3.SDL_APP_FAILURE
track = sdl3.MIX_CreateTrack(mixer)
if not track:
return sdl3.SDL_APP_FAILURE
sdl3.MIX_SetTrackAudio(track, audio)
sdl3.MIX_PlayTrack(track, 0)
return sdl3.SDL_APP_CONTINUE
@sdl3.SDL_AppEvent_func
def SDL_AppEvent(appstate, event):
if sdl3.SDL_DEREFERENCE(event).type == sdl3.SDL_EVENT_QUIT:
return sdl3.SDL_APP_SUCCESS
return sdl3.SDL_APP_CONTINUE
@sdl3.SDL_AppIterate_func
def SDL_AppIterate(appstate):
return sdl3.SDL_APP_CONTINUE
@sdl3.SDL_AppQuit_func
def SDL_AppQuit(appstate, result):
# Cleanup in correct order
if track: sdl3.MIX_DestroyTrack(track)
if audio: sdl3.MIX_DestroyAudio(audio)
if mixer: sdl3.MIX_DestroyMixer(mixer)
sdl3.MIX_Quit()
sdl3.SDL_Quit()
5. Running the Application 5. Запуск приложения
Run the script via your terminal:
Запустите скрипт через терминал:
python main.py
Support My Work Поддержать проект
If these tutorials helped you, consider buying me a coffee! Если эти туториалы вам помогли, вы можете поддержать автора.
Sberbank (Russia only) Сбербанк (только для РФ)
Direct transfer via phone number (Russia only) Перевод по номеру телефона (только для РФ)
USDT TRC20
Support via Cryptocurrency Поддержка криптовалютой