Можно ли кодировать музыку в R и воспроизводить ее? (Mac OS X)

Интересно, есть ли способ написать скрипт для создания музыки? Как и в программе кодирования (SuperCollider или, не столько кодирование, но все же Pure Data), я хочу знать, есть ли способ генерировать звук в R.

На самом деле, я знаю это. Как я могу играть музыку на день рождения, используя R? что очень приятно. Но я хочу сделать аккорды и многоинструментальную композицию. Является ли это возможным?

Есть ли более простой способ воспроизвести музыку на R, чем ссылка Happy Birthday?

2 ответа

Вы можете создавать музыку в R-программировании, используя библиотеку tuneR

Сначала вам нужно создать простые синусоиды для каждой ноты и объединить все ноты в вектор.

Теперь, когда мелодия будет готова, вы можете редактировать звук, используя различные методы обработки звука, такие как тембр, фильтрация и т. Д.

Пример создания простой заметки формата А4:

library(tuneR)        #import the tuneR library
setWavPlayer("audacious")
f=440                 #frequency of A4 note
sr=8000 
bits=16
secs=2                #length of the note set to 2
amp=1
t=seq(0, secs, 1/sr)
y= amp*sin(2*pi*f*t)  #make a sinewave with above attributes
s=floor(2^(bits-2)*y) #floor it to make it an integer value
u=Wave(s, samp.rate=sr, bit=bits)  #make a wave structure 
play(u)

Чтобы объединить две ноты x и y, мы просто используем векторную запись:

z=c(x,y)
w= Wave(z, samp.rate=sr, bit-bits)

Чтобы сыграть две ноты одновременно (например, сыграть аккорды)

z=x+y
 w= Wave(z, samp.rate=sr, bit-bits)

На данный момент это лучшее, что я придумал:

library("audio")
library(tuneR)        #import the tuneR library
for (i in 1:10) {
yo=abs(round(rnorm(1,400,500)))
f=yo                 #frequency of A4 note
sr=1000000
bits=116
secs=5                #length of the note set to 2
amp=1
t=seq(0, secs, 1/sr)
y= amp*sin(2*pi*f*t)  #make a sinewave with above attributes
s=floor(2^(bits-2)*y) #floor it to make it an integer value
# u=Wave(s, samp.rate=sr, bit=bits)  #make a wave structure 
u=audioSample(x = s, rate = sr,bits = bits)
audio::play(u)
}
Другие вопросы по тегам