Sonic Pi 不会播放来自远程 Python 脚本的声音
Sonic Pi won't play sound from remote Python script
我正在使用 Sonic Pi 3.3.1
on my Windows PC and a Python
script(Python3.7.2
) on my raspberry pi(Raspbian Buster
) that detects distance from an HC-SR04
-Ultrasonic Sensor。然后程序会创建一个音调,如果物体距离较远,音调范围会更高,然后将此音调通过 OSC
发送到 Sonic Pi。我的 windows PC 上启用了外部 OSC
。 Port
和 IP
地址我也检查了,它们是正确的。
我已经对我的电路进行了广泛的测试,我可以自信地说这不是问题的根源,我只是出于文档目的将其添加到 post 的底部,供有兴趣的人使用,所以我会继续。
我的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)
输出:
60
60
58
59
问题似乎不是我的 python
代码,因为它记录了正确的值并成功发送了音调,所以我将再次继续。
我的声波派代码:
live_loop :listen do
use_real_time
note = sync "/osc/play_this"
play note[0]
end
输出:
Sonic Pi 记录的音符正确但无法播放,因此正在接收数据但未播放所以问题很可能是我如何尝试播放音符但我不能找到正确的方法
然后我尝试了这个,测试 sonic pi
是否安装正确并且能够播放声音:
live_loop :foo do
play 60
sleep 1
end
Sonic Pi 确实播放了声音,所以我可以排除声音安装不正确的有缺陷的安装。
我的电路:
HC-SR04
-Ultrasonic Sensor上的Vcc
脚接raspberry pi上的5V
电源,然后Trig
脚接raspberry pi上的5V
电源电路板上的第 4 个 GPIO
连接器,回声引脚然后连接到第 17 个 GPIO
连接器,分压器由 330 ohm
电阻和保护覆盆子的 470 ohm
电阻组成来自完整的 5V
.
我的电路是这样的:
解决方案
问题出在 Sonic Pi que path
,它通过 UDP
connection.More 从 python
scipt 接收注释,特别是在 sync
语句 que path
。同步语句缺少发件人 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
我想在结束我的 post 之前感谢 Sam Aaron,他在 Raspberry pi Stack Exchange 社区上给了我关于这个问题的见解,使我能够回答这个问题
我正在使用 Sonic Pi 3.3.1
on my Windows PC and a Python
script(Python3.7.2
) on my raspberry pi(Raspbian Buster
) that detects distance from an HC-SR04
-Ultrasonic Sensor。然后程序会创建一个音调,如果物体距离较远,音调范围会更高,然后将此音调通过 OSC
发送到 Sonic Pi。我的 windows PC 上启用了外部 OSC
。 Port
和 IP
地址我也检查了,它们是正确的。
我已经对我的电路进行了广泛的测试,我可以自信地说这不是问题的根源,我只是出于文档目的将其添加到 post 的底部,供有兴趣的人使用,所以我会继续。
我的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)
输出:
60
60
58
59
问题似乎不是我的 python
代码,因为它记录了正确的值并成功发送了音调,所以我将再次继续。
我的声波派代码:
live_loop :listen do
use_real_time
note = sync "/osc/play_this"
play note[0]
end
输出:
Sonic Pi 记录的音符正确但无法播放,因此正在接收数据但未播放所以问题很可能是我如何尝试播放音符但我不能找到正确的方法
然后我尝试了这个,测试 sonic pi
是否安装正确并且能够播放声音:
live_loop :foo do
play 60
sleep 1
end
Sonic Pi 确实播放了声音,所以我可以排除声音安装不正确的有缺陷的安装。
我的电路:
HC-SR04
-Ultrasonic Sensor上的Vcc
脚接raspberry pi上的5V
电源,然后Trig
脚接raspberry pi上的5V
电源电路板上的第 4 个 GPIO
连接器,回声引脚然后连接到第 17 个 GPIO
连接器,分压器由 330 ohm
电阻和保护覆盆子的 470 ohm
电阻组成来自完整的 5V
.
我的电路是这样的:
解决方案
问题出在 Sonic Pi que path
,它通过 UDP
connection.More 从 python
scipt 接收注释,特别是在 sync
语句 que path
。同步语句缺少发件人 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
我想在结束我的 post 之前感谢 Sam Aaron,他在 Raspberry pi Stack Exchange 社区上给了我关于这个问题的见解,使我能够回答这个问题