Skip to main content

A managed ctypes wrapper around the BASS audio library

Project description

PyBASS wrapper

Downloads

LICENSING

The PyBass PYTHON wrapper is licensed under the MIT license. Meanwhile the BASS C Library is dual licensed as free to use for non-commercial development but requires a license for paid/commercial work. Please see http://un4seen.com

BASS library documentation

http://www.un4seen.com/doc/

Purpose and notes

A simple wrapper around un4seen.com's BASS audio library to enable playing various format media files from python.

Stock python usage

from argparse import ArgumentParser

from pybass3 import Song
import time

def main(song_file):
    song = Song(song_file)
    song.play()
    len_bytes = song.duration_bytes
    position_bytes = song.position_bytes
    print("Playing: ", song_file)
    print(f"Bytes: {len_bytes=}")

    while position_bytes < len_bytes:
        print(song.position, song.duration)
        time.sleep(1)


if __name__ == "__main__":
    parser = ArgumentParser()
    parser.add_argument("song_file")
    args = parser.parse_args()

    main(args.song_file)

Windows playlist example

import pathlib
import time
import argparse
import msvcrt

from pybass3 import Song
from pybass3.playlist import Playlist




def kbfunc():
    x = msvcrt.kbhit()
    if x:
       ret = ord(msvcrt.getch())
    else:
       ret = 0

    return ret


def main(dir_path):
    dir_path = pathlib.Path(dir_path)

    playlist = Playlist()
    playlist.add_directory(dir_path, recurse=True)

    playlist.play()
    play_indefinitely = True
    while play_indefinitely:
        try:
            print(playlist.current.file_path.name, playlist.current.position, playlist.current.duration)
            playlist.tick()
            key = kbfunc()
            if key:                
                if key == 122: # Z
                    print("Previous")
                    playlist.previous()
                elif key == 98: # B                    
                    print("Next")
                    playlist.next()
                elif key == 120: # X
                    print("Play")
                    playlist.play()
                elif key == 99: # c
                    print("Pause")    
                    playlist.pause()
                elif key == 118: # v
                    print("Stop")
                    playlist.stop()
            else:
                time.sleep(1)
                
        except KeyboardInterrupt:
            playlist.free()
            play_indefinitely = False


if __name__ == "__main__":
    parser = argparse.ArgumentParser()
    parser.add_argument("song_dir")
    args = parser.parse_args()

    main(args.song_dir)

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

PyBASS3-0.2.0.tar.gz (213.5 kB view details)

Uploaded Source

Built Distribution

PyBASS3-0.2.0-py3-none-any.whl (218.8 kB view details)

Uploaded Python 3

File details

Details for the file PyBASS3-0.2.0.tar.gz.

File metadata

  • Download URL: PyBASS3-0.2.0.tar.gz
  • Upload date:
  • Size: 213.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.1 importlib_metadata/4.10.0 pkginfo/1.8.2 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.2

File hashes

Hashes for PyBASS3-0.2.0.tar.gz
Algorithm Hash digest
SHA256 ee2438480f1413cd04df10f083cae7260cb5e5ac0aa5a6b24ebdc99dafe1e894
MD5 26343b633331327f1cde1078ab7a14b8
BLAKE2b-256 f064846abd06e17ba90929db62143139ed9e904393b73a83619687fcb4bd23f0

See more details on using hashes here.

File details

Details for the file PyBASS3-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: PyBASS3-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 218.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.1 importlib_metadata/4.10.0 pkginfo/1.8.2 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.2

File hashes

Hashes for PyBASS3-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 2515f5390dc38591361448d730455d9906b4c89c912f214077ff57d4c1e75948
MD5 510eab7abc86bd550cb19ee7cd80ddb4
BLAKE2b-256 68683e454bec43a57d9f589456ca28c89c6be133f09281010090b3d36c310c74

See more details on using hashes here.

Supported by

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