问题标签 [music-notation]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 在 python 中演奏和弦
我想做一个平台来像吉他一样演奏和弦。例如 - 要演奏 E 和弦,它会演奏 [0, 2, 2, 1, 0, 0](从 Low-E 弦到 High-E 弦)。
我试图通过同时播放所有不同的字符串(通过使用线程)在 python 上播放和弦。
问题是每次我开始演奏下一根弦时,似乎最后一根琴弦停止演奏,而新的一根弦取代了它。所以我在弹奏一个和弦后听到的都是最高的弦(最后一个)。
我没有正确使用线程吗?还是当前功能有问题?或者也许是无法处理这类事情的 winsound.Beep() 函数?
这是我的代码:
根据我的检查, play() 和 get_freq() 函数没有任何问题。
那么问题是什么,我该如何解决?
编辑:
我已经在 C# 中尝试过,但它也没有工作。这是在 C# 中启动线程的正确方法吗?
sql - 将吉他和弦存储在数据库中
我目前正在大学学习,为了我的个人项目,我将创建一个吉他和弦拾取应用程序,其中和弦将保存在数据库中(我将使用 Oracle Database 11g Express Edition)。用户可以键入和弦的名称或与该和弦相关联的音符,它将显示一个和弦图像以给出它的视觉表示。我对如何将和弦存储在数据库中感到困惑。我需要一张用于和弦系列(A、C、D、G 等)的表吗?一张用于和弦使用的单独音符,另一张用于存放指板上的所有音符?对此的任何帮助将不胜感激。
我的应用程序将在 Android Studio 中开发。当我创建数据库时,它将如何连接到我的应用程序?
谢谢。
pitch - LilyPond:不带词干的括号中的音高(手风琴符号)
对于手风琴乐谱符号,通常在括号中指定音高,例如(以下片段中括号中的 E)。这是我的目标:
括号中的音高 (1) 不被弹奏,并且不应该在小节中占用额外的逻辑时间(它们是为了方便演奏者阅读乐谱时使用的),(2) 它们应该留在和弦附近。
我现在的 LilyPond 代码如下:
使用lilypond --pdf sample.ly
我得到以下结果:
我在 LilyPond 中获得的结果有几个问题:(i)词干长度对装饰音没有影响,(ii)装饰音移动到下一个小节,理想情况下它应该靠近和弦,(iii)括号太小(虽然这是一个小评论)。
如何使用 LilyPond 达到预期的效果(即第一张图片)?
PS编辑:
我能够创建一个解决方法(见下文),这并不优雅,但可以完成工作:
上述代码段的输出如下:
有没有更好的方法来实现它?
python - 在 python (numpy) 中将 MIDI 文件转录为钢琴卷
以下网页http://www-etud.iro.umontreal.ca/~boulanni/icml2012提到可以在 python 中将 MIDI 文件转换为钢琴卷轴:
以下是论文中评估的 4 个数据集的源文件 (MIDI)(分为训练集、验证集和测试集)。您可以根据 MIDI 文件中的节拍信息,通过移调 C 大调或 C 小调中的每个序列以及每八分音符(JSB 合唱的四分音符)采样帧,从源文件生成钢琴卷轴。或者,还提供了用于 Python 语言的腌制钢琴卷。
他们已经做了几个例子。我想知道怎么做,但我在他们的代码库中找不到任何地方。有没有一种简单的方法可以做到这一点?
所以我知道如何将midi文件转换为按键(在Python中)?我能做到的
这会给我一个类似的模式
但是,我如何转调 C 大调或小调的序列,以及如何每八分音符采样帧?
所以它接缝在上面引用的代码中,他们这样做:
那么我的问题就变成了,我在哪里可以找到这些midi.utils
,我如何确保序列以正确的键移调并以正确的速率采样?
arduino - 在电路显示器上显示吉他和弦
我正在做一个需要使用物联网在显示器上显示吉他和弦模式的项目。哪个板(Arduino 或 raspberry)和显示器更合适?
javascript - 通过和弦确定歌曲的调
如何仅通过知道歌曲的和弦序列以编程方式找到歌曲的键?
我问一些人他们将如何确定一首歌的调,他们都说他们是“靠耳朵”或“反复试验”来做的,并通过判断和弦是否能解决一首歌......对于普通的音乐家来说可能很好,但作为一个程序员,这真的不是我想要的答案。
所以我开始寻找与音乐相关的库,看看是否有其他人为此编写了算法。但是,尽管我在 GitHub 上找到了一个名为“tonal”的非常大的库:https ://danigb.github.io/tonal/api/index.html我找不到可以接受和弦数组并返回键的方法.
我选择的语言是 JavaScript (NodeJs),但我不一定要寻找 JavaScript 的答案。伪代码或可以毫不费力地翻译成代码的解释完全没问题。
正如你们中的一些人正确提到的,一首歌的调可以改变。我不确定是否可以足够可靠地检测到密钥更改。所以,现在让我们说,我正在寻找一种算法,它可以很好地近似给定和弦序列的键。
...在查看五度圈后,我想我找到了一个模式来找到属于每个键的所有和弦。我为此写了一个函数getChordsFromKey(key)
。通过针对每个键检查和弦序列的和弦,我可以创建一个数组,其中包含该键与给定和弦序列匹配的可能性的概率calculateKeyProbabilities(chordSequence)
:然后我添加了另一个函数estimateKey(chordSequence)
,它获取概率分数最高的键,然后检查和弦序列的最后一个和弦是否是其中之一。如果是这种情况,它会返回一个仅包含该和弦的数组,否则它会返回一个包含具有最高概率分数的所有和弦的数组。这做得不错,但它仍然没有为很多歌曲找到正确的键或以相等的概率返回多个键。主要问题是像这样的和弦A5, Asus2, A+, A°, A7sus4, Am7b5, Aadd9, Adim, C/G
等不在五度圈内的。事实上,例如 keyC
包含与 key 完全相同的和弦Am
,以及G
相同的Em
等等......
这是我的代码:
python - 带输入的函数什么也不打印
好的,所以我正在尝试将z.ExNote()
图像(八分音符)打印到我正在构建的应用程序的乐谱页面上。基本上每个变量都与放置音符的 (x,y) 坐标有关。.ExNote()
是类中的一个函数,它将对象的Note
5 个变量转换为要放置的图像的 x,y 坐标。这整个混乱为你处理了 4 个变量,所以理论上你可以输入音符,它会在五线谱的开头打印出来,然后你输入的下一个音符将是下一个位置,恰好是右边 17 个像素等等。Note
(Num, staff, measure, note, notetype)
c,d,e,f,g,a,b
如果我只是输入z
最终等于 ( Note(1, '1R', 1, 'c', 'Ethnote')
) 的内容,然后执行z.Exnote()
,它就可以工作(我的笔记打印在乐谱上)。但是当我这样做时它不起作用。我还在一个单独的窗口中运行此代码并打印出 z 以确保它不是一些技术错误/错字,并且输出正是我想要的。所以问题不在于变量,也不是一些技术错误。我假设错误与输入有关,因为这是在手动输入z=Note(1, '1R', 1, 'c', 'Ethnote')
和使用此代码构建语句之间唯一发生变化的事情。
javascript - 计算和弦进行中吉他和弦最舒适的手指位置
我想计算使用不同“指法”(例如开放和弦,与小节和弦)演奏给定和弦进行的舒适度。
例如,如果我们有和弦进行G
D
Em
C
。对于大多数人来说,最舒适的演奏方式可能是开放和弦:
如果我们有一个和弦进行,其中包括一个在标准调弦中不能作为开放和弦演奏的和弦,那就不再那么简单了。
在这种情况下,我们有
C#m
在 Am 形状的 4 品上演奏。G#
在 G 形的第一个品格上。
我选择的图表显示了一种非常不舒服的“手指”和弦方式:以 G 形弹奏的和弦通常弹奏起来非常不舒服;许多“跳跃”(打开 => 4 品 => 1 品 => 打开)
一个(在我看来)更舒适的演奏方式是:
可以说,打公开牌可能更容易A
。特别是如果序列连续播放多次。
我想说的是,在计算最舒适的指法时,需要考虑很多因素。在某些情况下,它归结为个人喜好。
但我认为在某些情况下,大多数吉他手都会同意某些指法弹奏起来会更舒服。
我不确定我在问什么。我目前拥有的是一个包含手指位置的大型吉他和弦库。
我会说我的问题是:我需要一种公式,并且我需要对于该公式中大多数吉他手都可以同意的因素的合理数字。(例如,G 型巴利比 Em 型巴利更舒适;15 品的和弦切换不如 2 品的和弦切换舒适;等等。)
deep-learning - 音乐编码的螺旋损失函数
我正在尝试开发用于音乐生成的自动编码器;为了达到这个目的,我正在尝试开发一种捕捉音乐关系的损失函数。
我目前的想法是“螺旋”损失函数,也就是说,如果系统在不同的八度音阶中预测相同的音符,则损失应该比音符错误的情况要小。此外,接近正确音符的音符,例如 B 和 D 到 C,也应该有小的损失。人们可以从概念上将其视为找到线圈或螺旋上两点之间的距离,使得不同八度音阶中的相同音符位于与线圈相切的直线上,但相隔一定的循环距离。
我在 PyTorch 中工作,我的输入表示是 36 x 36 张量,其中行表示音符(MIDI 范围 48:84,钢琴的中间三个八度音阶),列表示时间步长(1 列 = 1/ 100 秒)。矩阵中的值为 0 或 1,表示音符在特定时间打开。
这是我目前对损失的实现:
这种损失的问题是最大函数不可微。我想不出一种方法来区分这种损失,并且想知道是否有人可能有任何想法或建议?
我不确定这是否适合这样的帖子,所以如果不是,我真的很感激任何指向更好位置的指针。
python - Python music21库从流中创建png
我在stream
从music21
. 我阅读了文档并使用它ConverterLilypond
来执行此操作。
此代码将生成 png 文件、eps 文件计数文件、tex 和 texi 文件。为什么?我怎样才能只生成一个文件,PNG文件?
当我尝试在 jupyter 中运行此代码足以显示chords.show()
图像时,但通常在脚本中show
生成一个文件,而不是图形。
编辑:
带有环境变量的代码