繁体   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