Tôi đã tạo ra một trò chơi phòng đơn giản bằng Python, với ý định nhúng một bản vá Tinh khiết (qua libPd) để phát lại một tệp âm thanh khác. sau đó sẽ được thay thế bằng thuật toán cho nhạc sinh sản) cho mỗi phòng khác nhau của tôi.Thực hiện libPD (Trình bao bọc dữ liệu thuần túy) trong Python
Mã python mà tôi hiện đang làm việc được lấy từ một trong các ví dụ trong github libPD. Đó là như sau -
import pyaudio
import wave
import sys
from pylibpd import *
p = pyaudio.PyAudio()
ch = 2
sr = 48000
tpb = 16
bs = 64
stream = p.open(format = pyaudio.paInt16,
channels = ch,
rate = sr,
input = True,
output = True,
frames_per_buffer = bs * tpb)
m = PdManager(ch, ch, sr, 1)
libpd_open_patch('wavfile.pd')
while 1:
data = stream.read(bs)
outp = m.process(data)
stream.write(outp)
stream.close()
p.terminate()
libpd_release()
Bản vá dữ liệu thuần túy chỉ phát lại tệp wav được hiển thị trước, tuy nhiên kết quả xuất phát gần giống như đã bị bit. Tôi đoán vấn đề là làm với kích thước khối nhưng không chắc chắn.
Nếu có ai có kinh nghiệm nhúng nắpPD trong Python, tôi sẽ được đánh giá rất cao vì tôi chắc chắn những gì tôi đang cố gắng đạt được thật đơn giản.
Cảm ơn bạn trước, Cap
Cảm ơn bạn đã trả lời Adam. Tôi đã được ấn tượng rằng tôi muốn thiết lập kích thước khối đến 64 và bằng cách thiết lập các bọ ve trên mỗi bộ đệm đến 16 nó sẽ cho tôi 1024 khung hình cho mỗi bộ đệm. Ban đầu tôi đã có một thiết lập tpb 1 nhưng sự "nghiền bit" vẫn còn hiện diện. – CapricornOne
Tôi cũng đã thử cả hai tệp 44.1k và 48k trong khi thay đổi mẫu trong mã không có sẵn. Tôi nghĩ rằng nó có liên quan đến paInt16 khi thay đổi nó thành paInt32 hoặc paInt8 thay đổi hiệu ứng nghiền nát ở một mức độ nào đó, nhưng như tôi đã nói, tôi chỉ đơn giản lấy nó từ mã ví dụ và không chắc nó nên làm gì. – CapricornOne
Tôi cũng đã thử một con đường khác trong hình thức của một miếng vá puredata mà chỉ đơn giản là bỏ qua một giai điệu sin khi được gọi trong python. Cùng một vấn đề xảy ra. – CapricornOne