Initial commit of Music Player

This commit is contained in:
Media Rogc
2025-06-28 01:15:45 -05:00
commit d90fabd597
2 changed files with 56 additions and 0 deletions
+56
View File
@@ -0,0 +1,56 @@
import jack
import socket
import numpy as np
import time
PORT = 5004
JACK_CLIENT_NAME = "Player"
BUFFER_SIZE = 4096
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.bind(("0.0.0.0", PORT))
sock.setblocking(False)
client = jack.Client(JACK_CLIENT_NAME)
out_l = client.outports.register("out_l")
out_r = client.outports.register("out_r")
buffer = np.zeros((2, 0), dtype=np.float32)
def fetch_samples():
global buffer
try:
data, _ = sock.recvfrom(BUFFER_SIZE)
int16 = np.frombuffer(data, dtype=np.int16)
interleaved = int16.reshape(-1, 2).T
float_audio = interleaved.astype(np.float32) / 32767.0
buffer = np.concatenate((buffer, float_audio), axis=1)
except BlockingIOError:
pass
@client.set_process_callback
def process(frames):
global buffer
fetch_samples()
needed = frames
if buffer.shape[1] >= needed:
chunk = buffer[:, :needed]
buffer = buffer[:, needed:]
else:
chunk = np.zeros((2, needed), dtype=np.float32)
if buffer.shape[1] > 0:
chunk[:, :buffer.shape[1]] = buffer
buffer = np.zeros((2, 0), dtype=np.float32)
out_l.get_array()[:] = chunk[0]
out_r.get_array()[:] = chunk[1]
with client:
print(f"Receving on UDP port {PORT} and playing via JACK")
try:
while True:
time.sleep(0.1)
except KeyboardInterrupt:
print("Exiting...")