-
Notifications
You must be signed in to change notification settings - Fork 8
Open
Description
I want to use DearPyGui to complete it
But it's unclear how to port to DearPyGui
import queue
import sys
from matplotlib.animation import FuncAnimation
import matplotlib.pyplot as plt
import numpy as np
import sounddevice as sd
channels = [1]
window = 200
interval = 30
downsample = 10
mapping = [c - 1 for c in channels]
q = queue.Queue()
def audio_callback(indata, frames, time, status):
if status:
print(status, file=sys.stderr)
q.put(indata[::downsample, mapping])
def update_plot(frame):
global plotdata
while True:
try:
data = q.get_nowait()
except queue.Empty:
break
shift = len(data)
plotdata = np.roll(plotdata, -shift, axis=0)
plotdata[-shift:, :] = data
for column, line in enumerate(lines):
line.set_ydata(plotdata[:, column])
return lines
try:
device_info = sd.query_devices(None, "input")
samplerate = device_info["default_samplerate"]
length = int(window * samplerate / (1000 * downsample))
plotdata = np.zeros((length, len(channels)))
fig, ax = plt.subplots()
lines = ax.plot(plotdata)
if len(channels) > 1:
ax.legend(
[f"thoroughfare {c}" for c in channels],
loc="lower left",
ncol=len(channels),
)
ax.axis((0, len(plotdata), -1, 1))
ax.set_yticks([0])
ax.yaxis.grid(True)
ax.tick_params(
bottom=False,
top=False,
labelbottom=False,
right=False,
left=False,
labelleft=False,
)
fig.tight_layout(pad=0)
stream = sd.InputStream(
device=None,
channels=max(channels),
samplerate=samplerate,
callback=audio_callback,
)
ani = FuncAnimation(fig, update_plot, interval=interval, blit=True)
with stream:
plt.show()
except Exception as e:
print(type(e).__name__ + ": " + str(e))
https://github.com/my1e5/dpg-examples/blob/main/plots/plot_update_time_data.py
Metadata
Metadata
Assignees
Labels
No labels