[英]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.