python - Sonic Pi 不会从远程 Python 脚本播放声音
问题描述
我Sonic Pi 3.3.1
在我的 Windows PC 上使用,在我的树莓派()上使用一个Python
脚本( ),它检测与超声波传感器的距离。然后,如果物体离得更远,程序会创建一个音高更高的曲调,然后这个曲调发送到 Sonic Pi。在我的 Windows PC 上启用了外部。我还检查了和地址,它们是正确的。Python3.7.2
Raspbian Buster
HC-SR04
OSC
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)
输出:
60
60
58
59
问题似乎不是我的python
代码,因为它记录了正确的值并成功发送了音调,所以我将再次继续。
我的声波 Pi 代码:
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 确实播放了声音,因此我可以排除声音未正确安装的有缺陷的安装。
我的电路:
-超声波传感器上的Vcc
引脚连接到树莓派上的电源,然后将引脚连接到板上的第 4 个连接器,然后将回波引脚连接到由电阻器和一个分压器组成的第 17 个连接器保护覆盆子免受完全损坏的电阻器。HC-SR04
5V
Trig
GPIO
GPIO
330 ohm
470 ohm
5V
解决方案
解决方案
问题出在 Sonic Pi中,它通过连接从 sciptque path
接收注释。更具体地说,它在. 同步语句缺少发件人地址,这在使用多台计算机时是必需的,这与在本地环境中不同python
UDP
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
我想通过感谢Sam Aaron来结束我的帖子,他在 Raspberry pi Stack Exchange 社区上让我深入了解了这个问题,这使我能够回答我的这个问题
推荐阅读
- java - 如何在给定 Activity 参数的静态方法中使用超类?
- mysql - 当我水平扩展 mysql 或一些 nosql 数据源时,实际上会发生什么?
- c# - 使用 foreach 循环时调用 GetEnumerator() 多少次
- angular - ng upgrade 命令无法将 cli 从 v7 升级到 v8
- java - 在 AWS、Azure 之间切换。设计模式
- javascript - 如何将 JSON 中的正则表达式传递给 API?
- swift - 使 Button 跨越 VStack
- java - org.openqa.selenium.support.ui.UnexpectedTagNameException:元素应该是“选择”但在选择下拉值时是“跨度”
- jboss - java.lang.LinkageError:使用 JBoss 客户端 jar 时违反加载程序约束
- javascript - 如何检查来自 Postgres BIGINT 的值是否大于 Number.MAX_SAFE_INTEGER?