r - 您可以使用 R 来创建音乐(逐个音符),例如通过 MIDI 或其他格式吗?
问题描述
我正在尝试使用 R 来制作音乐。我发现:
包musicmakeR,已损坏。
打包音频,更多用于操作/播放现有音频文件。
包调谐器。
我认为tuneR可以做我想做的一切,我发现了这篇文章(Is it possible to code music in R and play it up? (Mac OS X))。该帖子中的第一个回复(来自“rakshith1124”)似乎回答了我的问题,但要么我编码错误,要么我的操作系统或 .wav 播放器有问题。这是我正在使用的代码:
library(tuneR)
sr <- 8000
bits <- 16
secs <- 1
amp <- 1
t <- seq(0, secs, 1/sr)
C0 <- 16.35
G3 <- 196
A5 <- 880
C0 <- floor(2^(bits-2)*(amp*sin(2*pi*C0*t)))
G3 <- floor(2^(bits-2)*(amp*sin(2*pi*G3*t)))
A5 <- floor(2^(bits-2)*(amp*sin(2*pi*A5*t)))
u <- Wave(c(C0,G3,A5), samp.rate=sr, bit=bits)
play(u)
这应该演奏三个音符(C0、G3、A5),每个音符一秒钟。我从https://pages.mtu.edu/~suits/notefreqs.html获得了笔记的频率。脚本 [play (you)] 播放的 .wav 似乎截断了第一个音符或其他我不明白的东西。有谁知道发生了什么,以及相关的,有没有更好的包可用于音乐创作?
解决方案
R 包“gm”专为创作音乐而设计。一个“你好!世界”的例子:
library(gm)
m <-
# initialize a Music object
Music() +
# add a 4/4 time signature
Meter(4, 4) +
# add a musical line of four quarter notes
Line(list("C5", "D5", "E5", "F5"), list(1, 1, 1, 1))
show(m)
您可以查看其完整指南以获取更多示例。它在 R Markdown 文档、Jupyter Notebooks、RStudio 中生成乐谱和音频文件。
我是包的作者(我被要求披露我与建议的解决方案的从属关系)。
推荐阅读
- python - 如何在烧瓶上显示代码的结果
- visual-studio-code - 帕格“输入”的 Emmet 缩写是插入一个不需要的 #
- javascript - 在发送到 API 网关之前压缩 js lambda 响应
- c++ - C++,系统无法执行指定程序
- socket.io - c# SocketIoClientDotNet, node js socket.IO
- javascript - 没有异步代码的承诺示例?
- python - 如何在python中将一个csv拆分为多个文件
- java - volatile 是否提供其他正常存储并加载发生前的关系?
- css - 如何按单个单元格而不是内容最多的单元格来调整 CSS 网格行的大小
- python - 如何摆脱 django DecimalField 中的多余零?