gpt4 book ai didi

python - 以编程方式创建旋律

转载 作者:行者123 更新时间:2023-12-03 00:55:52 24 4
gpt4 key购买 nike

我想以编程方式演奏一些旋律。

尽管我能使它听起来像老式的8位音乐那样酷,但我实际上并不关心该音色。

我希望能够通过简单地为每个音符指定音符的长度,播放时间(从歌曲的开头开始)及其音高来播放音乐。

我想以以下方式使用它:

from awesomeMelodyLibrary import play

# Perhaps play accepts an iterable of 3-tuples where
# the items of the tuple are (pitch, duration_of_note, when_to_play)
# and then it would play those notes.
play([ (440, 200, 0), # A4
(440, 200, 200),
(660, 200, 400), # E5
(660, 200, 600),
(740, 200, 800), # F#5
(740, 200,1000),
(660, 400,1200) ])

它会播放字母歌曲的开头。

不必一定是这种方式,我会受到一些限制(例如,一次最多只能演奏三个音符),但我要说的是我不想受制于原始声音声音数据,处理混合不同声音片段以播放和弦,声音片段等的细节。

最佳答案

尝试将RTcmix与Python前端配合使用。

尽管我在Ubuntu上使用它,但它在OS X上效果最佳。这不是一个简单的构建过程,但是您可以在他们关于我在Ubuntu 12.04上安装过程的讨论列表中看到我的post

他们有各种可用的乐器。我的最爱之一是STRUM2,一种弹拨乐器。

这是您在Python中演奏一些音符的方法。

from rtcmix import *
rtsetparams(44100, 2)
load("STRUM2")
noteOnset = 0 #in seconds
duration = 1.0 # in seconds
amplitude = 10000
pitch = 440 # specified in hertz
squish = 1
decay = 1.0
pan = .5
STRUM2(noteOnset, duration, amplitude, pitch, squish, decay, pan)

默认情况下,它的音高为赫兹,但是此功能可以将MIDI键号转换为赫兹。

def keynumToHertz(keynum):
lowestfreq = 8.175 #C-1
return lowestfreq * math.pow(2.0, float(keynum)/12.0)

如果要以标准符号 ('Bb6', 'G#8', 'F-1', 'A4')指定注释,则可以使用我编写的 nameToNum函数。找到它 here

请查看其站点上的文档,以获取更复杂的示例,或者查看我的 Github repo,其中包含Metalevel中Notes几章的实现,这是有关算法组成的文本。如果您不仅想演奏手写的笔记,还想做更多事情,我强烈建议您阅读该书。它是为Lisp / Common Music编写的,但是我的仓库中有很多Python / RTcmix的翻译。

关于python - 以编程方式创建旋律,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14036535/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com