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. Запуск приложения
py main.py
Support My Work Поддержать проект
If these tutorials helped you, consider buying me a coffee! Если эти туториалы вам помогли, вы можете поддержать автора.
Sberbank
Direct transfer via phone number Перевод по номеру телефона
Bybit (USDT TRC20)
Support via Cryptocurrency Поддержка криптовалютой