2021-04-23用 R 寫音樂召衔,有趣的gm包铃诬!

原文搬運!2粤荨氧急!鏈接:https://cran.r-project.org/web/packages/gm/vignettes/cn.html

本文要介紹 R 包 gm,你可以用它來寫音樂毫深。

具體來說吩坝,gm 有兩大特點:

第一,它提供了一套簡單高階的語言哑蔫,你可以用這個語言來描述音樂钉寝,它會將你的描述轉(zhuǎn)化成樂譜和音頻。這個過程中闸迷,你不需要考慮無關(guān)的技術(shù)細節(jié)嵌纲。

第二,gm 可以在 R Markdown 文檔和 R Jupyter 筆記本中使用腥沽,它會自動將生成的音樂嵌入在生成的文本之中逮走。

先來看一個簡單的例子。

小例子

# 加載 gm
library(gm)

# 創(chuàng)建 Music 對象
m <- 
  # 初始化 Music 對象
  Music() +
  # 加上 4/4 拍號
  Meter(4, 4) +
  # 加上一條包含四個音的聲部
  Line(list("C5", "D5", "E5", "F5"), list(1, 1, 1, 1))

# 轉(zhuǎn)化成樂譜和音頻
show(m, c("score", "audio"))
file5351be49e1f.png

級別不夠今阳,音頻插入不了师溅,大家可以自己試試代碼。

相信這個例子足夠讓你感受 gm 的簡單和直觀盾舌。深入之前墓臭,先來看看如何下載。

下載

從 CRAN 上下載:

install.packages("gm")

從 Github 上下載開發(fā)版:

# 請先下載 devtools 如果沒有的話
# install.packages("devtools")

devtools::install_github("flujoo/gm")

你還需要下載 MuseScore妖谴,它是一款開源免費的打譜軟件窿锉。

設(shè)置

MuseScore 有默認的安裝路徑,如果你安裝到其它路徑,請在 .Renviron 文件中設(shè)置:

第一嗡载,打開 .Renviron 文件窑多。可以用命令:

usethis::edit_r_environ()

第二洼滚,在其中加入:

MUSESCORE_PATH=<MuseScore 可執(zhí)行文件的路徑>

比如:

MUSESCORE_PATH="C:/Program Files (x86)/MuseScore 3/bin/MuseScore3.exe"

第三埂息,重啟 R 以激活更改。

深入一點

使用 gm 時判沟,我們通常需要初始化一個 Music 對象:

m <- Music()

在這個空的 Music 對象之上耿芹,我們可以加上其它的成分,比如加上拍號:

m <- m + Meter(4, 4)

加上聲部:

m <- m + Line(pitches = list("C5"), durations = list("whole"))

我們可以直接打印 m 來查看其結(jié)構(gòu):

m
#> Music
#> 
#> Line 1
#> 
#> * as part 1 staff 1 voice 1
#> * of length 1
#> * of pitch C5
#> * of duration 4
#> 
#> Meter 4/4

當(dāng)然挪哄,更直觀的方式是將其轉(zhuǎn)化成樂譜查看:

show(m)
image.png

gm 的語法有點像 ggplot2吧秕,你可以不斷添加成分,然后查看迹炼,然后再添加砸彬,不斷反復(fù)。

我們還可以加上拍速記號:

m <- m + Tempo(120)
show(m)
image.png

加上新的聲部:

m <- m + Line(
  pitches = list("C3", "G3"),
  durations = list("half", "half")
)

show(m)
image.png

這個過程可以繼續(xù)斯入,但我們在此打住砂碉。

算法作曲

gm 的一個有趣應(yīng)用是算法作曲,也就是用算法來生成音樂刻两。下面是一個例子:

pitches <- as.list(c(64, 65, 69, 71, 72, 76))
durations <- rep(list(1), length(pitches))

m <- Music() + Meter(4, 4) + Tempo(120)

for (i in 0:8) {
  m <- m + Line(pitches, durations, offset = 0.5 * i)
}

show(m, to = c("score", "audio"))
image.png

上面的代碼生成了九條聲部增蹭,所有聲部的音符都是相同的,區(qū)別是每條聲部加入的時間都比前一條聲部慢一點磅摹,因此形成了有趣的回音效果滋迈。

更多內(nèi)容

你可以查看完整的文檔了解更多功能。

gm值得擁有户誓!
年會饼灿、總結(jié)的時候,你就再也不用媽媽擔(dān)心了帝美!
多才多藝的你可以大顯身手0怼!悼潭!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末庇忌,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子女责,更是在濱河造成了極大的恐慌漆枚,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,324評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件抵知,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機刷喜,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,356評論 3 392
  • 文/潘曉璐 我一進店門残制,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人掖疮,你說我怎么就攤上這事初茶。” “怎么了浊闪?”我有些...
    開封第一講書人閱讀 162,328評論 0 353
  • 文/不壞的土叔 我叫張陵恼布,是天一觀的道長。 經(jīng)常有香客問我搁宾,道長折汞,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,147評論 1 292
  • 正文 為了忘掉前任盖腿,我火速辦了婚禮爽待,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘翩腐。我一直安慰自己鸟款,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,160評論 6 388
  • 文/花漫 我一把揭開白布茂卦。 她就那樣靜靜地躺著何什,像睡著了一般。 火紅的嫁衣襯著肌膚如雪等龙。 梳的紋絲不亂的頭發(fā)上处渣,一...
    開封第一講書人閱讀 51,115評論 1 296
  • 那天,我揣著相機與錄音而咆,去河邊找鬼霍比。 笑死,一個胖子當(dāng)著我的面吹牛暴备,可吹牛的內(nèi)容都是我干的悠瞬。 我是一名探鬼主播,決...
    沈念sama閱讀 40,025評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼涯捻,長吁一口氣:“原來是場噩夢啊……” “哼浅妆!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起障癌,我...
    開封第一講書人閱讀 38,867評論 0 274
  • 序言:老撾萬榮一對情侶失蹤凌外,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后涛浙,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體康辑,經(jīng)...
    沈念sama閱讀 45,307評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡摄欲,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,528評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了疮薇。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片胸墙。...
    茶點故事閱讀 39,688評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖按咒,靈堂內(nèi)的尸體忽然破棺而出迟隅,到底是詐尸還是另有隱情,我是刑警寧澤励七,帶...
    沈念sama閱讀 35,409評論 5 343
  • 正文 年R本政府宣布智袭,位于F島的核電站,受9級特大地震影響掠抬,放射性物質(zhì)發(fā)生泄漏吼野。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,001評論 3 325
  • 文/蒙蒙 一剿另、第九天 我趴在偏房一處隱蔽的房頂上張望箫锤。 院中可真熱鬧,春花似錦雨女、人聲如沸谚攒。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,657評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽馏臭。三九已至,卻和暖如春讼稚,著一層夾襖步出監(jiān)牢的瞬間括儒,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,811評論 1 268
  • 我被黑心中介騙來泰國打工锐想, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留帮寻,地道東北人。 一個月前我還...
    沈念sama閱讀 47,685評論 2 368
  • 正文 我出身青樓赠摇,卻偏偏與公主長得像固逗,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子藕帜,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,573評論 2 353

推薦閱讀更多精彩內(nèi)容