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 hashes)

Uploaded source

Built Distribution

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

Uploaded py3

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Huawei Huawei PSF Sponsor Microsoft Microsoft PSF Sponsor NVIDIA NVIDIA PSF Sponsor Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page