Last active
September 1, 2023 21:35
-
-
Save THeK3nger/3624478 to your computer and use it in GitHub Desktop.
Python Wave Audio Loop
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import os | |
import wave | |
import threading | |
import sys | |
# PyAudio Library | |
import pyaudio | |
class WavePlayerLoop(threading.Thread) : | |
""" | |
A simple class based on PyAudio to play wave loop. | |
It's a threading class. You can play audio while your application | |
continues to do its stuff. :) | |
""" | |
CHUNK = 1024 | |
def __init__(self,filepath,loop=True) : | |
""" | |
Initialize `WavePlayerLoop` class. | |
PARAM: | |
-- filepath (String) : File Path to wave file. | |
-- loop (boolean) : True if you want loop playback. | |
False otherwise. | |
""" | |
super(WavePlayerLoop, self).__init__() | |
self.filepath = os.path.abspath(filepath) | |
self.loop = loop | |
def run(self): | |
# Open Wave File and start play! | |
wf = wave.open(self.filepath, 'rb') | |
player = pyaudio.PyAudio() | |
# Open Output Stream (basen on PyAudio tutorial) | |
stream = player.open(format = player.get_format_from_width(wf.getsampwidth()), | |
channels = wf.getnchannels(), | |
rate = wf.getframerate(), | |
output = True) | |
# PLAYBACK LOOP | |
data = wf.readframes(self.CHUNK) | |
while self.loop : | |
stream.write(data) | |
data = wf.readframes(self.CHUNK) | |
if data == b'' : # If file is over then rewind. | |
wf.rewind() | |
data = wf.readframes(self.CHUNK) | |
stream.close() | |
player.terminate() | |
def play(self) : | |
""" | |
Just another name for self.start() | |
""" | |
self.start() | |
def stop(self) : | |
""" | |
Stop playback. | |
""" | |
self.loop = False |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
I also wanted to ask that, how can we play all the songs from a particular folder, in python because as a beginner I'm facing a problem with that,
currently, I'm using the code -
elif 'play some music' in query:
music_dir = 'D:\Music'
songs = os.listdir(music_dir)
print(songs)
os.startfile(os.path.join(music_dir, songs[0]))
But this only plays the 1st song, [0]
if anyone knows - how to play all the songs then, please help,
thanks
insta - im__ace_