Skip to main content

python bindings for the miniaudio library and its decoders (mp3, flac, ogg vorbis, wav)

Project description

Latest Version

Python miniaudio

Multiplatform audio playback, recording, decoding and sample format conversion for Linux (including Raspberri Pi), Windows, Mac and others.

Installation for most users: via Pypi, Raspberri Pi builds via PiWheels.

This is a Pythonic interface to the cross-platform miniaudio C library:

  • audio operations run in the background
  • python bindings for most of the functions offered in the miniaudio library:
    • reading and decoding audio files
    • getting audio file properties (such as duration, number of channels, sample rate)
    • converting sample formats and frequencies
    • streaming large audio files
    • audio playback
    • audio recording
  • decoders for wav, flac, vorbis and mp3
  • Audio file and Icecast internet radio streaming
  • Python enums instead of just some integers for special values
  • several classes to represent the main functions of the library
  • generators for the Audio playback and recording
  • sample data is usually in the form of a Python array with appropriately sized elements depending on the sample width (rather than a raw block of bytes)
  • TODO: filters, waveform generators?

Requires Python 3.10 or newer. Also works on pypy3 (because it uses cffi).

The miniaudio C library version is 0.11.25.

Software license for these Python bindings, miniaudio and the decoders: MIT

Synthesizer, modplayer?

If you like this library you may also be interested in my software FM synthesizer or my mod player which uses libxmp.

Examples

Basic audio file playback with info

import miniaudio

# Get file info
info = miniaudio.get_file_info("samples/music.mp3")
print(f"Playing: {info.nchannels} channels, {info.sample_rate} Hz, {info.duration:.1f}s")

# Stream and play
stream = miniaudio.stream_file("samples/music.mp3")
with miniaudio.PlaybackDevice() as device:
    device.start(stream)
    input("Playing... press Enter to stop")

Decode and convert audio file

import miniaudio

# Decode audio file to float32
sound = miniaudio.decode_file("music.mp3", miniaudio.SampleFormat.FLOAT32)
print(f"Decoded: {sound.nchannels} ch, {sound.sample_rate} Hz, {sound.num_frames} frames")

# Convert to different format and sample rate
converted = miniaudio.convert_frames(
    sound.sample_format, sound.nchannels, sound.sample_rate,
    sound.samples.tobytes(),
    miniaudio.SampleFormat.SIGNED16, sound.nchannels, 22050
)

# Write to WAV file
miniaudio.wav_write_file("output.wav", miniaudio.DecodedSoundFile(
    "output.wav", sound.nchannels, 22050, miniaudio.SampleFormat.SIGNED16,
    converted
))
print("Written to output.wav")

Playback of an unsupported file format

This example uses ffmpeg as an external tool to decode an audio file in a format that miniaudio itself can't decode (m4a/aac in this case):

import subprocess
import miniaudio

channels = 2
sample_rate = 44100
sample_width = 2  # 16 bit pcm
filename = "samples/music.m4a"  # AAC encoded audio file

def stream_pcm(source):
    required_frames = yield b""  # generator initialization
    while True:
        required_bytes = required_frames * channels * sample_width
        sample_data = source.read(required_bytes)
        if not sample_data:
            break
        print(".", end="", flush=True)
        required_frames = yield sample_data

with miniaudio.PlaybackDevice(output_format=miniaudio.SampleFormat.SIGNED16,
                              nchannels=channels, sample_rate=sample_rate) as device:
    ffmpeg = subprocess.Popen(["ffmpeg", "-v", "fatal", "-hide_banner", "-nostdin",
                               "-i", filename, "-f", "s16le", "-acodec", "pcm_s16le",
                               "-ac", str(channels), "-ar", str(sample_rate), "-"],
                              stdin=None, stdout=subprocess.PIPE)
    stream = stream_pcm(ffmpeg.stdout)
    next(stream)  # start the generator
    device.start(stream)
    input("Audio file playing in the background. Enter to stop playback: ")
    ffmpeg.terminate()

API

Note: everything below is automatically generated from comments in the source code files. Do not edit in this readme directly.

enum class Backend names: WASAPI DSOUND WINMM COREAUDIO SNDIO AUDIO4 OSS PULSEAUDIO ALSA JACK AAUDIO OPENSL WEBAUDIO CUSTOM NULL

Operating system audio backend to use (only a subset will be available)

enum class ChannelMixMode names: RECTANGULAR SIMPLE CUSTOMWEIGHTS

How to mix channels when converting

enum class DeviceType names: PLAYBACK CAPTURE DUPLEX

Type of audio device

enum class DitherMode names: NONE RECTANGLE TRIANGLE

How to dither when converting

enum class FileFormat names: UNKNOWN WAV FLAC MP3 VORBIS

Audio file format

enum class SampleFormat names: UNKNOWN UNSIGNED8 SIGNED16 SIGNED24 SIGNED32 FLOAT32

Sample format in memory

enum class SeekOrigin names: START CURRENT END

How to seek() in a source

enum class ThreadPriority names: IDLE LOWEST LOW NORMAL HIGH HIGHEST REALTIME

The priority of the worker thread (default=HIGHEST)

function convert_frames (from_fmt: miniaudio.SampleFormat, from_numchannels: int, from_samplerate: int, sourcedata: bytes, to_fmt: miniaudio.SampleFormat, to_numchannels: int, to_samplerate: int) -> bytearray

Convert audio frames in source sample format with a certain number of channels, to another sample format and possibly down/upmixing the number of channels as well.

function convert_sample_format (from_fmt: miniaudio.SampleFormat, sourcedata: bytes, to_fmt: miniaudio.SampleFormat, dither: miniaudio.DitherMode = <DitherMode.NONE: 0>) -> bytearray

Convert a raw buffer of pcm samples to another sample format. The result is returned as another raw pcm sample buffer

function decode (data: bytes, output_format: miniaudio.SampleFormat = <SampleFormat.SIGNED16: 2>, nchannels: int = 2, sample_rate: int = 44100, dither: miniaudio.DitherMode = <DitherMode.NONE: 0>) -> miniaudio.DecodedSoundFile

Convenience function to decode any supported audio file in memory to raw PCM samples in your chosen format.

function decode_file (filename: str, output_format: miniaudio.SampleFormat = <SampleFormat.SIGNED16: 2>, nchannels: int = 2, sample_rate: int = 44100, dither: miniaudio.DitherMode = <DitherMode.NONE: 0>) -> miniaudio.DecodedSoundFile

Convenience function to decode any supported audio file to raw PCM samples in your chosen format.

function flac_get_file_info (filename: str) -> miniaudio.SoundFileInfo

Fetch some information about the audio file (flac format).

function flac_get_info (data: bytes) -> miniaudio.SoundFileInfo

Fetch some information about the audio data (flac format).

function flac_read_f32 (data: bytes) -> miniaudio.DecodedSoundFile

Reads and decodes the whole flac audio file. Resulting sample format is 32 bits float.

function flac_read_file_f32 (filename: str) -> miniaudio.DecodedSoundFile

Reads and decodes the whole flac audio file. Resulting sample format is 32 bits float.

function flac_read_file_s16 (filename: str) -> miniaudio.DecodedSoundFile

Reads and decodes the whole flac audio file. Resulting sample format is 16 bits signed integer.

function flac_read_file_s32 (filename: str) -> miniaudio.DecodedSoundFile

Reads and decodes the whole flac audio file. Resulting sample format is 32 bits signed integer.

function flac_read_s16 (data: bytes) -> miniaudio.DecodedSoundFile

Reads and decodes the whole flac audio data. Resulting sample format is 16 bits signed integer.

function flac_read_s32 (data: bytes) -> miniaudio.DecodedSoundFile

Reads and decodes the whole flac audio data. Resulting sample format is 32 bits signed integer.

function flac_stream_file (filename: str, frames_to_read: int = 1024, seek_frame: int = 0) -> Generator[array.array, NoneType, NoneType]

Streams the flac audio file as interleaved 16 bit signed integer sample arrays segments. This uses a fixed chunk size and cannot be used as a generic miniaudio decoder input stream. Consider using stream_file() instead.

function get_enabled_backends () -> Set[miniaudio.Backend]

Returns the set of available backends by the compilation environment for the underlying miniaudio C library

function get_file_info (filename: str) -> miniaudio.SoundFileInfo

Fetch some information about the audio file.

function is_backend_enabled (backend: miniaudio.Backend) -> bool

Determines whether or not the given backend is available by the compilation environment for the underlying miniaudio C library

function is_loopback_supported (backend: miniaudio.Backend) -> bool

Determines whether or not loopback mode is support by a backend.

function lib_version () -> str

Returns the version string of the underlying miniaudio C library

function mp3_get_file_info (filename: str) -> miniaudio.SoundFileInfo

Fetch some information about the audio file (mp3 format).

function mp3_get_info (data: bytes) -> miniaudio.SoundFileInfo

Fetch some information about the audio data (mp3 format).

function mp3_read_f32 (data: bytes) -> miniaudio.DecodedSoundFile

Reads and decodes the whole mp3 audio data. Resulting sample format is 32 bits float.

function mp3_read_file_f32 (filename: str) -> miniaudio.DecodedSoundFile

Reads and decodes the whole mp3 audio file. Resulting sample format is 32 bits float.

function mp3_read_file_s16 (filename: str) -> miniaudio.DecodedSoundFile

Reads and decodes the whole mp3 audio file. Resulting sample format is 16 bits signed integer.

function mp3_read_s16 (data: bytes) -> miniaudio.DecodedSoundFile

Reads and decodes the whole mp3 audio data. Resulting sample format is 16 bits signed integer.

function mp3_stream_file (filename: str, frames_to_read: int = 1024, seek_frame: int = 0) -> Generator[array.array, NoneType, NoneType]

Streams the mp3 audio file as interleaved 16 bit signed integer sample arrays segments. This uses a fixed chunk size and cannot be used as a generic miniaudio decoder input stream. Consider using stream_file() instead.

function read_file (filename: str, convert_to_16bit: bool = False) -> miniaudio.DecodedSoundFile

Reads and decodes the whole audio file. Miniaudio will attempt to return the sound data in exactly the same format as in the file. Unless you set convert_convert_to_16bit to True, then the result is always a 16 bit sample format.

function stream_any (source: miniaudio.StreamableSource, source_format: miniaudio.FileFormat = <FileFormat.UNKNOWN: 0>, output_format: miniaudio.SampleFormat = <SampleFormat.SIGNED16: 2>, nchannels: int = 2, sample_rate: int = 44100, frames_to_read: int = 1024, dither: miniaudio.DitherMode = <DitherMode.NONE: 0>, seek_frame: int = 0) -> Generator[array.array, int, NoneType]

Convenience function that returns a generator to decode and stream any source of encoded audio data (such as a network stream). Stream result is chunks of raw PCM samples in the chosen format. If you send() a number into the generator rather than just using next() on it, you'll get that given number of frames, instead of the default configured amount. This is particularly useful to plug this stream into an audio device callback that wants a variable number of frames per call.

function stream_file (filename: str, output_format: miniaudio.SampleFormat = <SampleFormat.SIGNED16: 2>, nchannels: int = 2, sample_rate: int = 44100, frames_to_read: int = 1024, dither: miniaudio.DitherMode = <DitherMode.NONE: 0>, seek_frame: int = 0) -> Generator[array.array, int, NoneType]

Convenience generator function to decode and stream any supported audio file as chunks of raw PCM samples in the chosen format. If you send() a number into the generator rather than just using next() on it, you'll get that given number of frames, instead of the default configured amount. This is particularly useful to plug this stream into an audio device callback that wants a variable number of frames per call.

function stream_memory (data: bytes, output_format: miniaudio.SampleFormat = <SampleFormat.SIGNED16: 2>, nchannels: int = 2, sample_rate: int = 44100, frames_to_read: int = 1024, dither: miniaudio.DitherMode = <DitherMode.NONE: 0>) -> Generator[array.array, int, NoneType]

Convenience generator function to decode and stream any supported audio file in memory as chunks of raw PCM samples in the chosen format. If you send() a number into the generator rather than just using next() on it, you'll get that given number of frames, instead of the default configured amount. This is particularly useful to plug this stream into an audio device callback that wants a variable number of frames per call.

function stream_raw_pcm_memory (pcmdata: array.array | memoryview | bytes, nchannels: int, sample_width: int, frames_to_read: int = 4096) -> Generator[bytes | array.array, int, NoneType]

Convenience generator function to stream raw pcm audio data from memory. Usually you don't need to use this as the library provides many other streaming options that work on much smaller, encoded, audio data. However, in the odd case that you only have already decoded raw pcm data you can use this generator as a stream source. The data can be provided in array type or bytes, memoryview or even a numpy array. Be sure to also specify the correct number of channels that the audio data has, and the sample with in bytes.

function stream_with_callbacks (sample_stream: Generator[bytes | array.array, int, NoneType], progress_callback: Callable[[int], NoneType] | None = None, frame_process_method: Callable[[bytes | array.array], bytes | array.array] | None = None, end_callback: Callable | None = None) -> Generator[bytes | array.array, int, NoneType]

Convenience generator function to add callback and processing functionality to another stream. You can specify : > A callback function that gets called during play and takes an int for the number of frames played. > A function that can be used to process raw data frames before they are yielded back (takes an array.array or bytes, returns an array.array or bytes) *Note: if the processing method is slow it will result in audio glitchiness > A callback function that gets called when the stream ends playing.

function vorbis_get_file_info (filename: str) -> miniaudio.SoundFileInfo

Fetch some information about the audio file (vorbis format).

function vorbis_get_info (data: bytes) -> miniaudio.SoundFileInfo

Fetch some information about the audio data (vorbis format).

function vorbis_read (data: bytes) -> miniaudio.DecodedSoundFile

Reads and decodes the whole vorbis audio data. Resulting sample format is 16 bits signed integer.

function vorbis_read_file (filename: str) -> miniaudio.DecodedSoundFile

Reads and decodes the whole vorbis audio file. Resulting sample format is 16 bits signed integer.

function vorbis_stream_file (filename: str, seek_frame: int = 0) -> Generator[array.array, NoneType, NoneType]

Streams the ogg vorbis audio file as interleaved 16 bit signed integer sample arrays segments. This uses a variable unconfigurable chunk size and cannot be used as a generic miniaudio decoder input stream. Consider using stream_file() instead.

function wav_get_file_info (filename: str) -> miniaudio.SoundFileInfo

Fetch some information about the audio file (wav format).

function wav_get_info (data: bytes) -> miniaudio.SoundFileInfo

Fetch some information about the audio data (wav format).

function wav_read_f32 (data: bytes) -> miniaudio.DecodedSoundFile

Reads and decodes the whole wav audio data. Resulting sample format is 32 bits float.

function wav_read_file_f32 (filename: str) -> miniaudio.DecodedSoundFile

Reads and decodes the whole wav audio file. Resulting sample format is 32 bits float.

function wav_read_file_s16 (filename: str) -> miniaudio.DecodedSoundFile

Reads and decodes the whole wav audio file. Resulting sample format is 16 bits signed integer.

function wav_read_file_s32 (filename: str) -> miniaudio.DecodedSoundFile

Reads and decodes the whole wav audio file. Resulting sample format is 32 bits signed integer.

function wav_read_s16 (data: bytes) -> miniaudio.DecodedSoundFile

Reads and decodes the whole wav audio data. Resulting sample format is 16 bits signed integer.

function wav_read_s32 (data: bytes) -> miniaudio.DecodedSoundFile

Reads and decodes the whole wav audio data. Resulting sample format is 32 bits signed integer.

function wav_stream_file (filename: str, frames_to_read: int = 1024, seek_frame: int = 0) -> Generator[array.array, NoneType, NoneType]

Streams the WAV audio file as interleaved 16 bit signed integer sample arrays segments. This uses a fixed chunk size and cannot be used as a generic miniaudio decoder input stream. Consider using stream_file() instead.

function wav_write_file (filename: str, sound: miniaudio.DecodedSoundFile)

Writes the pcm sound to a WAV file

function width_from_format (sampleformat: miniaudio.SampleFormat) -> int

returns the sample width in bytes, of the given sample format.

class CaptureDevice

CaptureDevice (self, input_format: miniaudio.SampleFormat = <SampleFormat.SIGNED16: 2>, nchannels: int = 2, sample_rate: int = 44100, buffersize_msec: int = 200, device_id: _cffi_backend._CDataBase | None = None, callback_periods: int = 0, backends: List[miniaudio.Backend] | None = None, thread_prio: miniaudio.ThreadPriority = <ThreadPriority.HIGHEST: 0>, app_name: str = '')

An audio device provided by miniaudio, for audio capture (recording).

method close (self)

Halt playback or capture and close down the device. If you use the device as a context manager, it will be closed automatically.

method start (self, callback_generator: Generator[NoneType, bytes | array.array, NoneType])

Start the audio device: capture (recording) begins. The recorded audio data is sent to the given callback generator as raw bytes. (it should already be started before)

method stop (self)

Halt playback or capture.

class DecodeError

DecodeError (self, /, *args, **kwargs)

When something went wrong during decoding an audio file.

class DecodedSoundFile

DecodedSoundFile (self, name: str, nchannels: int, sample_rate: int, sample_format: miniaudio.SampleFormat, samples: array.array)

Contains various properties and also the PCM frames of a fully decoded audio file.

class Devices

Devices (self, backends: List[miniaudio.Backend] | None = None)

Query the audio playback and record devices that miniaudio provides

method get_captures (self) -> List[Dict[str, Any]]

Get a list of capture devices and some details about them

method get_playbacks (self) -> List[Dict[str, Any]]

Get a list of playback devices and some details about them

class DuplexStream

DuplexStream (self, playback_format: miniaudio.SampleFormat = <SampleFormat.SIGNED16: 2>, playback_channels: int = 2, capture_format: miniaudio.SampleFormat = <SampleFormat.SIGNED16: 2>, capture_channels: int = 2, sample_rate: int = 44100, buffersize_msec: int = 200, playback_device_id: _cffi_backend._CDataBase | None = None, capture_device_id: _cffi_backend._CDataBase | None = None, callback_periods: int = 0, backends: List[miniaudio.Backend] | None = None, thread_prio: miniaudio.ThreadPriority = <ThreadPriority.HIGHEST: 0>, app_name: str = '')

Joins a capture device and a playback device.

method close (self)

Halt playback or capture and close down the device. If you use the device as a context manager, it will be closed automatically.

method start (self, callback_generator: Generator[bytes | array.array, bytes | array.array, NoneType])

Start the audio device: playback and capture begin. The audio data for playback is provided by the given callback generator, which is sent the recorded audio data at the same time. (it should already be started before passing it in)

method stop (self)

Halt playback or capture.

class IceCastClient

IceCastClient (self, url: str, update_stream_title: Callable[[ForwardRef('IceCastClient'), str], NoneType] = None, ssl_context: 'ssl.SSLContext' = None)

A simple client for IceCast audio streams as miniaudio streamable source. If the stream has Icy MetaData, the stream_title attribute will be updated with the actual title taken from the metadata. You can also provide a callback to be called when a new stream title is available. The downloading of the data from the internet is done in a background thread and it tries to keep a (small) buffer filled with available data to read. You can optionally provide a custom ssl.SSLContext in the ssl_context parameter, if you need to change the way SSL connections are configured (certificates, checks, etc).

method close (self)

Stop the stream, aborting the background downloading.

method read (self, num_bytes: int) -> bytes

Read a chunk of data from the stream.

method seek (self, offset: int, origin: miniaudio.SeekOrigin) -> bool

Override this if the stream supports seeking. Note: seek support is sometimes not needed if you give the file type to a decoder upfront. You can ignore this method then.

class MiniaudioError

MiniaudioError (self, /, *args, **kwargs)

When a miniaudio specific error occurs.

class PlaybackDevice

PlaybackDevice (self, output_format: miniaudio.SampleFormat = <SampleFormat.SIGNED16: 2>, nchannels: int = 2, sample_rate: int = 44100, buffersize_msec: int = 200, device_id: _cffi_backend._CDataBase | None = None, callback_periods: int = 0, backends: List[miniaudio.Backend] | None = None, thread_prio: miniaudio.ThreadPriority = <ThreadPriority.HIGHEST: 0>, app_name: str = '')

An audio device provided by miniaudio, for audio playback.

method close (self)

Halt playback or capture and close down the device. If you use the device as a context manager, it will be closed automatically.

method start (self, callback_generator: Generator[bytes | array.array, int, NoneType])

Start the audio device: playback begins. The audio data is provided by the given callback generator. The generator gets sent the required number of frames and should yield the sample data as raw bytes, a memoryview, an array.array, or as a numpy array with shape (numframes, numchannels). The generator should already be started before passing it in.

method stop (self)

Halt playback or capture.

class SoundFileInfo

SoundFileInfo (self, name: str, file_format: miniaudio.FileFormat, nchannels: int, sample_rate: int, sample_format: miniaudio.SampleFormat, duration: float, num_frames: int, sub_format: int = None)

Contains various properties of an audio file.

class StreamableSource

StreamableSource (self, /, *args, **kwargs)

Base class for streams of audio data bytes. Can be used as a contextmanager, to properly call close().

method close (self)

Override this to properly close the stream and free resources.

method read (self, num_bytes: int) -> bytes | memoryview

override this to provide data bytes to the consumer of the stream

method seek (self, offset: int, origin: miniaudio.SeekOrigin) -> bool

Override this if the stream supports seeking. Note: seek support is sometimes not needed if you give the file type to a decoder upfront. You can ignore this method then.

class WavFileReadStream

WavFileReadStream (self, pcm_sample_gen: Generator[bytes | array.array, int, NoneType], sample_rate: int, nchannels: int, output_format: miniaudio.SampleFormat, max_frames: int = 0)

An IO stream that reads as a .wav file, and which gets its pcm samples from the provided producer

method close (self)

Close the file

method read (self, amount: int = 9223372036854775807) -> bytes | None

Read up to the given amount of bytes from the file.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

miniaudio-1.71.tar.gz (1.1 MB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

miniaudio-1.71-cp314-cp314-win_amd64.whl (281.7 kB view details)

Uploaded CPython 3.14Windows x86-64

miniaudio-1.71-cp314-cp314-win32.whl (241.1 kB view details)

Uploaded CPython 3.14Windows x86

miniaudio-1.71-cp314-cp314-musllinux_1_2_x86_64.whl (645.2 kB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ x86-64

miniaudio-1.71-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (643.7 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

miniaudio-1.71-cp314-cp314-macosx_11_0_arm64.whl (351.5 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

miniaudio-1.71-cp314-cp314-macosx_10_15_x86_64.whl (378.4 kB view details)

Uploaded CPython 3.14macOS 10.15+ x86-64

miniaudio-1.71-cp313-cp313-win_amd64.whl (274.2 kB view details)

Uploaded CPython 3.13Windows x86-64

miniaudio-1.71-cp313-cp313-win32.whl (235.1 kB view details)

Uploaded CPython 3.13Windows x86

miniaudio-1.71-cp313-cp313-musllinux_1_2_x86_64.whl (645.2 kB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

miniaudio-1.71-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (643.6 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

miniaudio-1.71-cp313-cp313-macosx_11_0_arm64.whl (351.5 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

miniaudio-1.71-cp313-cp313-macosx_10_13_x86_64.whl (377.2 kB view details)

Uploaded CPython 3.13macOS 10.13+ x86-64

miniaudio-1.71-cp312-cp312-win_amd64.whl (274.3 kB view details)

Uploaded CPython 3.12Windows x86-64

miniaudio-1.71-cp312-cp312-win32.whl (235.1 kB view details)

Uploaded CPython 3.12Windows x86

miniaudio-1.71-cp312-cp312-musllinux_1_2_x86_64.whl (645.2 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

miniaudio-1.71-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (643.6 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

miniaudio-1.71-cp312-cp312-macosx_11_0_arm64.whl (351.5 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

miniaudio-1.71-cp312-cp312-macosx_10_13_x86_64.whl (377.2 kB view details)

Uploaded CPython 3.12macOS 10.13+ x86-64

miniaudio-1.71-cp311-cp311-win_amd64.whl (274.2 kB view details)

Uploaded CPython 3.11Windows x86-64

miniaudio-1.71-cp311-cp311-win32.whl (235.0 kB view details)

Uploaded CPython 3.11Windows x86

miniaudio-1.71-cp311-cp311-musllinux_1_2_x86_64.whl (645.5 kB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

miniaudio-1.71-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (643.7 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

miniaudio-1.71-cp311-cp311-macosx_11_0_arm64.whl (351.4 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

miniaudio-1.71-cp311-cp311-macosx_10_9_x86_64.whl (367.7 kB view details)

Uploaded CPython 3.11macOS 10.9+ x86-64

miniaudio-1.71-cp310-cp310-win_amd64.whl (274.2 kB view details)

Uploaded CPython 3.10Windows x86-64

miniaudio-1.71-cp310-cp310-win32.whl (235.0 kB view details)

Uploaded CPython 3.10Windows x86

miniaudio-1.71-cp310-cp310-musllinux_1_2_x86_64.whl (645.5 kB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ x86-64

miniaudio-1.71-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (643.7 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

miniaudio-1.71-cp310-cp310-macosx_11_0_arm64.whl (351.4 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

miniaudio-1.71-cp310-cp310-macosx_10_9_x86_64.whl (367.7 kB view details)

Uploaded CPython 3.10macOS 10.9+ x86-64

File details

Details for the file miniaudio-1.71.tar.gz.

File metadata

  • Download URL: miniaudio-1.71.tar.gz
  • Upload date:
  • Size: 1.1 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for miniaudio-1.71.tar.gz
Algorithm Hash digest
SHA256 ff51e2887bb673e2e757752b586b3dc924d59aa5fbcae9bbc45f4a111bd3262b
MD5 6e150c595b4aacf9f7df3d2601e2dc7e
BLAKE2b-256 d8d5e5439dc08561f73656bfeb3340fc64ab63163e101426593d8fb9a025ff1e

See more details on using hashes here.

File details

Details for the file miniaudio-1.71-cp314-cp314-win_amd64.whl.

File metadata

  • Download URL: miniaudio-1.71-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 281.7 kB
  • Tags: CPython 3.14, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for miniaudio-1.71-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 154b085dd914a0e79e3d93160e1a07aacb27d66c65f9ef6a0d87c1a194f32c04
MD5 8630778aa5476b6953b2040c04ebe5f4
BLAKE2b-256 ddd0ad7bfa63e1baacd2d4803ee04862bb06fcfbbb34a340bf2bf3979e0068dc

See more details on using hashes here.

File details

Details for the file miniaudio-1.71-cp314-cp314-win32.whl.

File metadata

  • Download URL: miniaudio-1.71-cp314-cp314-win32.whl
  • Upload date:
  • Size: 241.1 kB
  • Tags: CPython 3.14, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for miniaudio-1.71-cp314-cp314-win32.whl
Algorithm Hash digest
SHA256 3bbeb1e068fe42475e017e8150e9e345182b583d0dd4d9e77ffa20c39935d9ec
MD5 0c883c3ba764982daa11c5807914b319
BLAKE2b-256 1b4a0da61fea8b8469d51b77d43846572ef9255d54c9b6b65a552446bbd55f90

See more details on using hashes here.

File details

Details for the file miniaudio-1.71-cp314-cp314-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for miniaudio-1.71-cp314-cp314-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 33986d5d725ebcbc253551e7358689bc81b19b6950b33cec8e8c1142ca4fc0a9
MD5 8365de37f9856f4ccc8ad42863a8bf67
BLAKE2b-256 4b43ef851e2e1d9dfde2b97cc053f0d79c6612088b27044698ed5d8c687f05de

See more details on using hashes here.

File details

Details for the file miniaudio-1.71-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for miniaudio-1.71-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 8a28ff4ad23e55bbde8808ce525d3bb7d249d7612f77646b30e06fc6b7a778ac
MD5 dea4db87d174ae433c5f28dbc1d7654b
BLAKE2b-256 fda66b5ae21b74fe70da935de389e01b3cce86c790ca4083f6a63c3ee922673e

See more details on using hashes here.

File details

Details for the file miniaudio-1.71-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for miniaudio-1.71-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 84139a10ef172acd762ccf120142877b037a1aaf71def99d2c75f66329f89d8b
MD5 35247e10375b18c08fa53575da533ed3
BLAKE2b-256 66eaf5940232d0c83777562e802f376a841046d78e94753450fb9a6685a44190

See more details on using hashes here.

File details

Details for the file miniaudio-1.71-cp314-cp314-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for miniaudio-1.71-cp314-cp314-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 3ef441d139264f8a5dcb9aa6fcd0b1e1e69f58715baae416ff33f045ffba6ad5
MD5 9d8acde10c93417ab4a9ec5d78183bb0
BLAKE2b-256 16e7b3e0df641d2d5283446d7960fc407195ba722b9a0789bb0a1429bf9ee855

See more details on using hashes here.

File details

Details for the file miniaudio-1.71-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: miniaudio-1.71-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 274.2 kB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for miniaudio-1.71-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 4c849ccb1349f7b3553a77a66fe7e972315185f5c4c44a0bbda7ebcdd224db37
MD5 fe93fa6e0db0d327bee537776844d482
BLAKE2b-256 8d8dd5059c04b247b1079c0e48914a9ec20352910a3b9373060fb258dfd194ab

See more details on using hashes here.

File details

Details for the file miniaudio-1.71-cp313-cp313-win32.whl.

File metadata

  • Download URL: miniaudio-1.71-cp313-cp313-win32.whl
  • Upload date:
  • Size: 235.1 kB
  • Tags: CPython 3.13, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for miniaudio-1.71-cp313-cp313-win32.whl
Algorithm Hash digest
SHA256 1bf93aeede652926f27f430f0fd69ef0cf8a949c07b537d6a2f295602c747037
MD5 396b00b3b6a8f09d1ab8b565f2a1171b
BLAKE2b-256 b16dcbfd55fdc40256231f7b0c861e2bf79cc289bfbbe5e15869317944e6d673

See more details on using hashes here.

File details

Details for the file miniaudio-1.71-cp313-cp313-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for miniaudio-1.71-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 70fa2ea5353e6919aca59b8c5768144af009d18c3bca251749d66fb497424563
MD5 b48b27426609c2397f7987706e33d09a
BLAKE2b-256 909b25785525e6b5ff9afd7f4c4279215dc09c3317ea4d837275b1ae17912b36

See more details on using hashes here.

File details

Details for the file miniaudio-1.71-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for miniaudio-1.71-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 12bc33e7e61072b4b541c14e10ef76119d5643e6bbb98e2dec0c0738889438fb
MD5 677d5c03ea573156687624c018a6c911
BLAKE2b-256 46245873a569451cae5686fb656ebd78ffe0b5eebe48ca21ef61e227d237d20a

See more details on using hashes here.

File details

Details for the file miniaudio-1.71-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for miniaudio-1.71-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d9dc15eff711bcfc62a9d05e0c78e4bc34821a455595e049629f2fea7491a523
MD5 cc5872a7ddc469fef61483e47f458d8f
BLAKE2b-256 bdd1071a560000c8ce903dc919968ecce40fbe7a73213ac399051b887184f8a3

See more details on using hashes here.

File details

Details for the file miniaudio-1.71-cp313-cp313-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for miniaudio-1.71-cp313-cp313-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 61b86f26d653040db32d9d15b05446321dd10e45beba25b44f841e26935213d5
MD5 5cbe0bf77ee48b6add0b190a9d0106f6
BLAKE2b-256 3a8544545f767ec21142ffed5f9108406d11dc8a19aafed9bd57621a0892bb60

See more details on using hashes here.

File details

Details for the file miniaudio-1.71-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: miniaudio-1.71-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 274.3 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for miniaudio-1.71-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 f4a44b70b66628b0c307e40ae0ae857695978cae18462179b806d8edc807d416
MD5 9e7b8e59e99aa36909cbad417b2f16ad
BLAKE2b-256 fdcfc1a19e6800e725b6e2b4576407620a798d69e3528ebdea9aea84d69d7088

See more details on using hashes here.

File details

Details for the file miniaudio-1.71-cp312-cp312-win32.whl.

File metadata

  • Download URL: miniaudio-1.71-cp312-cp312-win32.whl
  • Upload date:
  • Size: 235.1 kB
  • Tags: CPython 3.12, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for miniaudio-1.71-cp312-cp312-win32.whl
Algorithm Hash digest
SHA256 ab100e5240b104b5326e4ec1be07b6ae461f7d3d4d7a694857fd2f0493d210f9
MD5 49f72187e77d8c50f3378320ea5d603c
BLAKE2b-256 81b837d9f67d4511da29bdb82b6c73a3ef6f4ebf2fbd30f9524f1e4a84d6f033

See more details on using hashes here.

File details

Details for the file miniaudio-1.71-cp312-cp312-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for miniaudio-1.71-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 e6287f15caa808a88aad0700a182bec1ff6d98769717425adf9ebf41259d1936
MD5 cd49853c76c4e5b18d089740ae23db2a
BLAKE2b-256 a53984fc665e2ea8f9f1301b6370226e3a24f08d5ad5d97143b69b4ae7ac260a

See more details on using hashes here.

File details

Details for the file miniaudio-1.71-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for miniaudio-1.71-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 19be6f0a1e601c2237433e579734cfaf6469191b224c20c9e5f73c32ef9ee2b9
MD5 73608c3e7e965a6640c1871e1d18b1d8
BLAKE2b-256 fa62ae884a9d3b2ebec9c2ed1db857593e74bff45b70c4ab17fccc11db31cbeb

See more details on using hashes here.

File details

Details for the file miniaudio-1.71-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for miniaudio-1.71-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 8fc1a4f084cc1b4b25c567d22f54d1e46bfa505c17ed777c8b198e5c53d0f785
MD5 5e5fccfe1184b79cd953a87053c0f11c
BLAKE2b-256 f7ac30a324f758bed1b193e017ec25183cfb10a79e549656331f5d068a2d343a

See more details on using hashes here.

File details

Details for the file miniaudio-1.71-cp312-cp312-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for miniaudio-1.71-cp312-cp312-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 62db602651bc20a2698f36a0d356d7217ed6f4f917550c7ffb3705c8e8be90cf
MD5 e9d017bdd7623def5b739987d1626aae
BLAKE2b-256 39d371124f5abbcdcae62e040f58d3dca3bd3d90fd01faa7bb276b112387b47a

See more details on using hashes here.

File details

Details for the file miniaudio-1.71-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: miniaudio-1.71-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 274.2 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for miniaudio-1.71-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 50d66729e1dd7a4cf13edc25115ac54f776dd9f67803ba1a7cd1128ebf2e8cfe
MD5 1f5ee9317eacdace1fddc7debe7eb5ee
BLAKE2b-256 654c2c97c0638c04b784c60114a61fd653f2ac04e35de912c26ed85d331a180f

See more details on using hashes here.

File details

Details for the file miniaudio-1.71-cp311-cp311-win32.whl.

File metadata

  • Download URL: miniaudio-1.71-cp311-cp311-win32.whl
  • Upload date:
  • Size: 235.0 kB
  • Tags: CPython 3.11, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for miniaudio-1.71-cp311-cp311-win32.whl
Algorithm Hash digest
SHA256 9f379d4995f1fac6dcae65810f6a31cba264339b3e591a14b233f85a6d03d81e
MD5 919d34b3f1328c4ca24527722dbbc326
BLAKE2b-256 4252dae0cb47b6aa4c9641ed26e9e78c5c51f5cbd9daa8ae40d209f7b9d18e9f

See more details on using hashes here.

File details

Details for the file miniaudio-1.71-cp311-cp311-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for miniaudio-1.71-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 166516449e2bb5f628d89cedbbb8720dceb96a0562c7e08a0e8e3cb10f58647c
MD5 3064f6c6505b48cf1da245effc5d3c99
BLAKE2b-256 41eef744ea9b6e09125120d30f0dd345e456d300956f54aa745bdf2648ad832f

See more details on using hashes here.

File details

Details for the file miniaudio-1.71-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for miniaudio-1.71-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 06222d80b057ca4beccb6f97a134c2c2bf646ef7890e1759cfc09db7eecec44d
MD5 2568400fd5a40a792d065bd49079cc8f
BLAKE2b-256 f07b0087c224b373a8b179dfdadc7506f504531f670b41e2444823c3540b6755

See more details on using hashes here.

File details

Details for the file miniaudio-1.71-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for miniaudio-1.71-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 5009b4e29cd43de3631d2d5ab09cc074192c085b4c8dd8a121b856ce1af6bab7
MD5 07a6cdbf404e2571d096334a31d21943
BLAKE2b-256 eac14b13ac3c36a2574e0d70f322246d80259606cd24523279f542abc9ac6063

See more details on using hashes here.

File details

Details for the file miniaudio-1.71-cp311-cp311-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for miniaudio-1.71-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 ac4a37ebbbfbfbeca50f4390e50f9952807ca61ac62f0c3bcbbc7dd698531dd3
MD5 41aca7ee3872924d8653bcec86f50b8b
BLAKE2b-256 cc1a8ded8b04490e0d50e2a404fc99858163c9567a135eaab35990b42bdfad72

See more details on using hashes here.

File details

Details for the file miniaudio-1.71-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: miniaudio-1.71-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 274.2 kB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for miniaudio-1.71-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 978cc4d58d8beef1a705e1141dc177a8a357c10ba3a16f7d71482ee722023bbd
MD5 1c7de947e449b9e755a8dc532d2c5eb8
BLAKE2b-256 59bc846a6e427848317eac2b773f9df5b88c105248a662cd5265029a367188a5

See more details on using hashes here.

File details

Details for the file miniaudio-1.71-cp310-cp310-win32.whl.

File metadata

  • Download URL: miniaudio-1.71-cp310-cp310-win32.whl
  • Upload date:
  • Size: 235.0 kB
  • Tags: CPython 3.10, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for miniaudio-1.71-cp310-cp310-win32.whl
Algorithm Hash digest
SHA256 ea86ae04ddbbf2beed20b9970af4a0baca8e6ed0e9625e1ed957be5540c943fd
MD5 bd7360605ba96c22036a6a29370cce4e
BLAKE2b-256 a8638eacdc9e60c1f5a3622ad007f56e503f4c7e725b82808bc30349fa4abe21

See more details on using hashes here.

File details

Details for the file miniaudio-1.71-cp310-cp310-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for miniaudio-1.71-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 f7042af3a4db5b90e5efaea257b6dfcff9389239ea643e6b0faa80169528e2e6
MD5 3a5055a12d02a8b33a0c0bc9ee4a7ed4
BLAKE2b-256 6fd1f1688175ac1b598fbd2985d75830e85ce604eca7f0f85710dcd282971377

See more details on using hashes here.

File details

Details for the file miniaudio-1.71-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for miniaudio-1.71-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 14892ad9b884e637029a22a781dea569b292a1be13682380fd14cefcf80ea4ed
MD5 eaf6ccc8f16f82114bd3086849590f83
BLAKE2b-256 51a891140e67b45efc1457bb78fae48cff691097c4bef9b4eeb16f9d3ee83ade

See more details on using hashes here.

File details

Details for the file miniaudio-1.71-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for miniaudio-1.71-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 aee8e4eec8d7bde4ee78066561329235a04231a221c9b247f1ffaf850551087d
MD5 590512776cf29b718f672c847d4e3887
BLAKE2b-256 083a645db5b3ba8f7c1ff319e38a7150054f35818795ed312a3a5e4f061624b0

See more details on using hashes here.

File details

Details for the file miniaudio-1.71-cp310-cp310-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for miniaudio-1.71-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 19dc58e4c50ffc48db2ce988019c28f05ca0eaa7c10b45b5c99b70107e610c8a
MD5 ebfbb75b8270698cddb3dafcd8ec45e7
BLAKE2b-256 0e8f8a792b93d27e57862754dbce780c6363ddbad7e56f40568dd3838b8d6862

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page