[英]Sonic Pi won't play sound from remote Python script
我在我的 Windows PC 上使用Sonic Pi 3.3.1
,在我的樹莓派( Raspbian Buster
)上使用Python
腳本( Python3.7.2
),它檢測與HC-SR04
的音高距離,然后使用超聲波傳感器創建一個調諧程序。如果 object 距離較遠,則該范圍會更高,然后此曲調會通過OSC
發送到 Sonic Pi。 我的 windows PC 上啟用了外部OSC
。 我還檢查了Port
和IP
地址,它們是正確的。
我已經對我的電路進行了廣泛的測試,我可以自信地說這不是問題的根源,並且我僅在我的帖子底部為任何感興趣的人添加了它以用於文檔目的,所以我會繼續前進。
我的 Python 代碼:
from gpiozero import DistanceSensor
from time import sleep
from pythonosc import osc_message_builder
from pythonosc import udp_client
sensor = DistanceSensor(echo=17, trigger=4)
sender = udp_client.SimpleUDPClient('10.0.0.119', 4560)
while True:
pitch = round(sensor.distance * 100 + 30)
print(pitch)
sender.send_message('/play_this', pitch)
sleep(0.1)
Output:
60
60
58
59
問題似乎不是我的python
代碼,因為它記錄了正確的值並成功發送了音調,所以我將再次繼續。
我的聲波 Pi 代碼:
live_loop :listen do
use_real_time
note = sync "/osc/play_this"
play note[0]
end
Output:
Sonic Pi 正確記錄了音符,但沒有播放,因此數據正在接收但未播放,因此問題很可能是我嘗試播放音符的方式,但我找不到正確的方法做這個
然后我嘗試了這個,以測試sonic pi
是否正確安裝並能夠播放聲音:
live_loop :foo do
play 60
sleep 1
end
Sonic Pi 確實播放了聲音,因此我可以排除聲音未正確安裝的有缺陷的安裝。
HC-SR04
-Ultrasonic Sensor上的Vcc
引腳連接到樹莓派上的5V
電源,然后將Trig
引腳連接到板上的第 4 個GPIO
連接器,然后將 echo 引腳連接到 a 之間的第 17 個GPIO
連接器分壓器由一個330 ohm
電阻和一個470 ohm
電阻組成,可保護覆盆子免受5V
的影響。
問題出在 Sonic Pi que path
中,它通過UDP
連接從python
scipt 接收注釋。更具體地說,它在que path
的sync
語句中。 同步語句缺少發件人Ip
地址和Port
,這在使用多台計算機時是必需的,這與在本地環境中不同
您可以像這樣明確提及Ip
地址:
live_loop :listen do
use_real_time
note = sync "/osc/10.0.0.80:56505/play_this "#Mention the senders Ip address and port
play note[0]
end
或者你可以告訴它接受輸入,不管發送者是這樣的:
live_loop :listen do
use_real_time
note = sync "/osc*/play_this "#This accepts a message regardless of the sender
play note[0]
end
我想通過感謝Sam Aaron來結束我的帖子,他在 Raspberry pi Stack Exchange 社區上讓我深入了解了這個問題,這使我能夠回答我的這個問題
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.