簡體   English   中英

Sonic Pi 不會從遠程 Python 腳本播放聲音

[英]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 我還檢查了PortIP地址,它們是正確的。

我已經對我的電路進行了廣泛的測試,我可以自信地說這不是問題的根源,並且我僅在我的帖子底部為任何感興趣的人添加了它以用於文檔目的,所以我會繼續前進。

我的 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 pathsync語句中。 同步語句缺少發件人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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM