首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >你能用R来创作音乐(按音符),比如通过MIDI或其他格式吗?

你能用R来创作音乐(按音符),比如通过MIDI或其他格式吗?
EN

Stack Overflow用户
提问于 2018-10-16 14:48:12
回答 2查看 1.1K关注 0票数 5

我试着用R来做音乐。我发现:

  1. 包musicmakeR,这是坏的。
  2. 包音频,这是更多的操作/播放现有的音频文件。
  3. 包装tuneR。

我认为tuneR可以做我想做的一切,我找到了这个帖子(有可能在R中编码音乐并播放它吗?(Mac OS X))。这篇文章的第一个回应(来自'rakshith1124')似乎回答了我的问题,但要么我的编码不正确,要么我的操作系统或.wav播放器出现了问题。下面是我使用的代码:

代码语言:javascript
运行
复制
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),每个音符播放1秒。我从https://pages.mtu.edu/~suits/notefreqs.html得到了音符的频率。脚本播放的.wav (你)似乎在截断第一个音符或其他我不明白的东西。有谁知道发生了什么事,并相关地说,是否有一个更好的软件包用于音乐创作?

EN

回答 2

Stack Overflow用户

发布于 2021-03-23 12:21:52

R软件包"gm“是为创造音乐而设计的。一个“你好!世界”的例子:

代码语言:javascript
运行
复制
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文档、木星笔记本、RStudio中生成音乐分数和音频文件。

我是这个方案的作者(我被要求公开我与建议的解决方案的联系)。

票数 6
EN

Stack Overflow用户

发布于 2018-10-16 15:17:07

好酷的问题!

代码在我的机器上完美地复制--包括开头那个奇怪的“截断”声音。为什么这是正确的?问题是,您的扬声器/声卡/播放器不能复制频率低至16赫兹(这是真正的低)。C0之后的其他音符似乎没什么问题。

另见关于SE电子学的这个问题

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52838230

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档