Skip to content

Commit

Permalink
More work on sound support. pythonarcade#184.
Browse files Browse the repository at this point in the history
Loading avbin again. Can now play ogg, mp3, and wav on windows.
  • Loading branch information
pvcraven committed May 5, 2018
1 parent fb8479c commit 114229d
Showing 1 changed file with 53 additions and 0 deletions.
53 changes: 53 additions & 0 deletions arcade/sound.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,58 @@
import pyglet


def _load_sound_library():
"""
Special code for Windows so we grab the proper avbin from our directory.
Otherwise hope the correct package is installed.
"""

# lazy loading
if not _load_sound_library._sound_library_loaded:
_load_sound_library._sound_library_loaded = True
else:
return

import os
appveyor = not os.environ.get('APPVEYOR') is None

import platform
system = platform.system()
if system == 'Windows':

import sys
is64bit = sys.maxsize > 2**32

import site
packages = site.getsitepackages()

if appveyor:
if is64bit:
path = "Win64/avbin"
else:
path = "Win32/avbin"

else:
if is64bit:
path = packages[0] + "/lib/site-packages/arcade/Win64/avbin"
else:
path = packages[0] + "/lib/site-packages/arcade/Win32/avbin"
elif system == 'Darwin':
from distutils.sysconfig import get_python_lib
path = get_python_lib() + '/lib/site-packages/arcade/lib/libavbin.10.dylib'
pyglet.options['audio'] = ('openal', 'pulse', 'silent')

else:
path = "avbin"
pyglet.options['audio'] = ('openal', 'pulse', 'silent')

pyglet.lib.load_library(path)
pyglet.have_avbin = True

# Initialize static function variable
_load_sound_library._sound_library_loaded = False


def _shellquote(s):
return "'" + s.replace("'", "'\\''") + "'"

Expand Down Expand Up @@ -57,6 +109,7 @@ def _load_sound_other(filename: str) -> typing.Any:
system = system()

if system == 'Windows':
_load_sound_library()
play_sound = _play_sound_win
load_sound = _load_sound_win
elif system == 'Darwin':
Expand Down

0 comments on commit 114229d

Please sign in to comment.