gpt4 book ai didi

c# - 音乐专业音阶转换器

转载 作者:太空宇宙 更新时间:2023-11-03 18:48:51 25 4
gpt4 key购买 nike

我正在尝试创建音乐专业音阶转换器。剂量任何人有信息如何做它

到目前为止我有

rootNote 是音阶基音,如 cMajor 或 gMajor请注意,我想转换成主要音阶 0-126如果我插入 rootNote 60 和 note 60 正确的返回将是 0,如果我插入 rootNote 60 和 note 61,正确的返回将是 2,如果我插入 rootNote 60 和 note 62 正确的返回将是 4,如果我插入 rootNote 60 和 note 63,正确的返回值是 5,

如果我插入 rootNote 61 和 note 60,正确的返回值为 0,如果我插入 rootNote 61 和 note 61 正确的返回将是 1,如果我插入 rootNote 61 和 note 62,正确的返回将是 3,如果我插入 rootNote 61 和 note 63,正确的返回值是 5,

好的,我有另一个,它似乎可以工作我想把我的序列映射成大比例尺但是我可以使用某种公式吗?

.

public int getINMajorScale(int note, int rootNote)
{

List<int> majorScale = new List<int>();
//int bNote = (int)_bNote.CurrentValue;

int bNoteMpl = bNote / 12;
bNote = 12 + (bNote - (12 * bNoteMpl)) - 7;
majorScale.Add(bNote + (12 * bNoteMpl));
int tBnote = bNote;
int res = 0;
for (int i = bNote; i < bNote + 6; i++)
{
//algorytm
res = tBnote + 7;
int mod = 0;
if (res >= 12)
{
mod = res / 12;
res = res - 12 * mod;
}
tBnote = res;
majorScale.Add(res + (bNoteMpl * 12));
}
majorScale.Sort();
int modNuller = 0;
if (nmr >= 7)
{
modNuller = nmr / 7;
nmr = nmr - 7 * modNuller;
}
return (majorScale[nmr] + (modNuller *12));
}

但这显然是错误的。

最佳答案

目前代码的问题:

  • modScaling 只做 rootNote % 12 因为你总是传入 0 和 11
  • 您定义了 mNote 但从未使用过它
  • i 从未在 for 循环中使用,因此 5 次迭代中的每一次都打印相同的内容。

好的,让我们将您的示例翻译成实际的注释以使其更易于理解(数字大概对应于 MIDI notes ):

  • rootNote = 60 (C), note = 60 (C) - 输出 0
  • rootNote = 60 (C), note = 61 (C#) - 输出 2
  • rootNote = 60 (C), note = 62 (D) - 输出 4
  • rootNote = 60 (C), note = 63 (D#) - 输出 5
  • rootNote = 61 (C#), note = 60 (C) - 输出 0
  • rootNote = 61 (C#), note = 61 (C#) - 输出 1
  • rootNote = 61 (C#), note = 62 (D) - 输出 3
  • rootNote = 61 (C#), note = 63 (D#) - 输出 5

我可能真的很密集,但恐怕我看不到那里的模式。

大调音阶当然由全音、全音、半音、全音、全音、全音、半音序列组成,但这如何映射到您的输出?

关于c# - 音乐专业音阶转换器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1873071/

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