- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我编写了一个 perl 脚本来生成要在 C++ header 中使用的注释信息条目列表。该脚本包含以下内容:
#!/bin/perl
use strict;
use warnings;
my @NOTES = ( "C" , "C#", "D", "D#", "E", "F", "F#", "G", "G#", "A", "A#", "B" );
#2*(x/12)
my @CF_VALUES = (1, 1.0594630943592953, 1.122462048309373, 1.189207115002721, 1.2599210498948732, 1.3348398541700344, 1.4142135623730951, 1.4983070768766815, 1.5874010519681994, 1.681792830507429, 1.7817974362806785, 1.8877486253633868);
my @START_FREQS = (27.5,55,110,220,440,880,1760,3520,7040);
my $FREQUENCY = 0;
my $OCTAVE;
my $KEY;
my $INDEX = 12;
print "static const MidiNote_t Notes[" . 8 * 12 . "] = {\n";
#4 times
for ($OCTAVE=0; $OCTAVE<=8; $OCTAVE++)
{
for ($KEY=0; $KEY<12; $KEY++)
{
print "\t{ $INDEX, \"" . @NOTES[$KEY] . $OCTAVE . "\", " . @START_FREQS[$OCTAVE] * @CF_VALUES[$KEY] . " }";
if ($KEY == 11 && $OCTAVE == 8) {
print "\n};";
} else {
print ",\n";
}
$INDEX++;
}
}
生成的输出如下所示:
static const MidiNote_t Notes[96] = {
{ 12, "C0", 13.75 },
{ 13, "C#0", 14.5676175474403 },
{ 14, "D0", 15.4338531642539 },
{ 15, "D#0", 16.3515978312874 },
{ 16, "E0", 17.3239144360545 },
{ 17, "F0", 18.354047994838 },
{ 18, "F#0", 19.4454364826301 },
{ 19, "G0", 20.6017223070544 },
{ 20, "G#0", 21.8267644645627 },
{ 21, "A0", 23.1246514194772 },
{ 22, "A#0", 24.4997147488593 },
{ 23, "B0", 25.9565435987466 },
{ 24, "C1", 27.5 },
{ 25, "C#1", 29.1352350948806 },
...
尽管如此,我似乎无法在我的脚本生成的列表中获得结果频率,以与基本“A”频率对齐。
比如A4对应440Hz,A0对应27.5Hz。
如何正确对齐频率并将每个 Octave 音阶中的每个音符与其各自的基音 A 音符频率相乘?
最佳答案
您的程序期望 @START_FREQS
中的值是 C
频率,而不是 A
频率。我们可以将打印的值修改为基于 A
将所有内容除以 A
转换器,如下所示:
print "\t{ $INDEX,\"". $NOTES[$KEY] . $OCTAVE . "\", ". $START_FREQS[$OCTAVE] * $CF_VALUES[$KEY]/$CF_VALUES[9] 。 "}";
这就是整个程序:
#!/bin/perl
use strict;
use warnings;
my @NOTES = ( "C" , "C#", "D", "D#", "E", "F", "F#", "G", "G#", "A", "A#", "B" );
#2*(x/12)
my @CF_VALUES = (1, 1.0594630943592953, 1.122462048309373, 1.189207115002721, 1.2599210498948732, 1.3348398541700344, 1.4142135623730951, 1.4983070768766815, 1.5874010519681994, 1.681792830507429, 1.7817974362806785, 1.8877486253633868);
my @START_FREQS = (27.5,55,110,220,440,880,1760,3520,7040);
my $FREQUENCY = 0;
my $OCTAVE;
my $KEY;
my $INDEX = 12;
print "static const MidiNote_t Notes[" . 8 * 12 . "] = {\n";
#4 times
for ($OCTAVE=0; $OCTAVE<=8; $OCTAVE++)
{
for ($KEY=0; $KEY<12; $KEY++)
{
print "\t{ $INDEX, \"" . $NOTES[$KEY] . $OCTAVE . "\", " . $START_FREQS[$OCTAVE] * $CF_VALUES[$KEY] / $CF_VALUES[9] . " }";
if ($KEY == 11 && $OCTAVE == 8) {
print "\n};";
} else {
print ",\n";
}
$INDEX++;
}
}
给出这个输出:
static const MidiNote_t Notes[96] = {
{ 12, "C0", 16.3515978312874 },
{ 13, "C#0", 17.3239144360545 },
{ 14, "D0", 18.354047994838 },
{ 15, "D#0", 19.4454364826301 },
{ 16, "E0", 20.6017223070544 },
{ 17, "F0", 21.8267644645627 },
{ 18, "F#0", 23.1246514194772 },
{ 19, "G0", 24.4997147488593 },
{ 20, "G#0", 25.9565435987466 },
{ 21, "A0", 27.5 },
{ 22, "A#0", 29.1352350948806 },
{ 23, "B0", 30.8677063285078 },
{ 24, "C1", 32.7031956625748 },
{ 25, "C#1", 34.647828872109 },
{ 26, "D1", 36.7080959896759 },
{ 27, "D#1", 38.8908729652601 },
{ 28, "E1", 41.2034446141087 },
{ 29, "F1", 43.6535289291255 },
{ 30, "F#1", 46.2493028389543 },
{ 31, "G1", 48.9994294977187 },
{ 32, "G#1", 51.9130871974931 },
{ 33, "A1", 55 },
{ 34, "A#1", 58.2704701897612 },
{ 35, "B1", 61.7354126570155 },
{ 36, "C2", 65.4063913251497 },
{ 37, "C#2", 69.295657744218 },
{ 38, "D2", 73.4161919793519 },
{ 39, "D#2", 77.7817459305202 },
{ 40, "E2", 82.4068892282175 },
{ 41, "F2", 87.307057858251 },
{ 42, "F#2", 92.4986056779086 },
{ 43, "G2", 97.9988589954373 },
{ 44, "G#2", 103.826174394986 },
{ 45, "A2", 110 },
{ 46, "A#2", 116.540940379522 },
{ 47, "B2", 123.470825314031 },
{ 48, "C3", 130.812782650299 },
{ 49, "C#3", 138.591315488436 },
{ 50, "D3", 146.832383958704 },
{ 51, "D#3", 155.56349186104 },
{ 52, "E3", 164.813778456435 },
{ 53, "F3", 174.614115716502 },
{ 54, "F#3", 184.997211355817 },
{ 55, "G3", 195.997717990875 },
{ 56, "G#3", 207.652348789973 },
{ 57, "A3", 220 },
{ 58, "A#3", 233.081880759045 },
{ 59, "B3", 246.941650628062 },
{ 60, "C4", 261.625565300599 },
{ 61, "C#4", 277.182630976872 },
{ 62, "D4", 293.664767917408 },
{ 63, "D#4", 311.126983722081 },
{ 64, "E4", 329.62755691287 },
{ 65, "F4", 349.228231433004 },
{ 66, "F#4", 369.994422711634 },
{ 67, "G4", 391.995435981749 },
{ 68, "G#4", 415.304697579945 },
{ 69, "A4", 440 },
{ 70, "A#4", 466.16376151809 },
{ 71, "B4", 493.883301256124 },
{ 72, "C5", 523.251130601197 },
{ 73, "C#5", 554.365261953744 },
{ 74, "D5", 587.329535834815 },
{ 75, "D#5", 622.253967444162 },
{ 76, "E5", 659.25511382574 },
{ 77, "F5", 698.456462866008 },
{ 78, "F#5", 739.988845423269 },
{ 79, "G5", 783.990871963499 },
{ 80, "G#5", 830.60939515989 },
{ 81, "A5", 880 },
{ 82, "A#5", 932.32752303618 },
{ 83, "B5", 987.766602512248 },
{ 84, "C6", 1046.50226120239 },
{ 85, "C#6", 1108.73052390749 },
{ 86, "D6", 1174.65907166963 },
{ 87, "D#6", 1244.50793488832 },
{ 88, "E6", 1318.51022765148 },
{ 89, "F6", 1396.91292573202 },
{ 90, "F#6", 1479.97769084654 },
{ 91, "G6", 1567.981743927 },
{ 92, "G#6", 1661.21879031978 },
{ 93, "A6", 1760 },
{ 94, "A#6", 1864.65504607236 },
{ 95, "B6", 1975.5332050245 },
{ 96, "C7", 2093.00452240479 },
{ 97, "C#7", 2217.46104781498 },
{ 98, "D7", 2349.31814333926 },
{ 99, "D#7", 2489.01586977665 },
{ 100, "E7", 2637.02045530296 },
{ 101, "F7", 2793.82585146403 },
{ 102, "F#7", 2959.95538169308 },
{ 103, "G7", 3135.96348785399 },
{ 104, "G#7", 3322.43758063956 },
{ 105, "A7", 3520 },
{ 106, "A#7", 3729.31009214472 },
{ 107, "B7", 3951.06641004899 },
{ 108, "C8", 4186.00904480958 },
{ 109, "C#8", 4434.92209562995 },
{ 110, "D8", 4698.63628667852 },
{ 111, "D#8", 4978.03173955329 },
{ 112, "E8", 5274.04091060592 },
{ 113, "F8", 5587.65170292806 },
{ 114, "F#8", 5919.91076338615 },
{ 115, "G8", 6271.92697570799 },
{ 116, "G#8", 6644.87516127912 },
{ 117, "A8", 7040 },
{ 118, "A#8", 7458.62018428944 },
{ 119, "B8", 7902.13282009799 }
};
关于c++ - 生成正确的音调频率值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33779467/
这个问题已经有答案了: How to do case insensitive string comparison? (23 个回答) 已关闭 3 年前。 用户在我的输入栏中写入“足球”,然后执行第 6
啊,不习惯 javascript 中的字符串。 character_id= + id + correct= + correctOrIncorrect 这就是我需要制作成字符串的内容。如果您无法猜测字符
$(function() { var base_price = 0; CalculatePrice(); $(".math1").on('change', function(e) { Calc
我找不到任何文章回答问题:将Spinnaker部署到Spinnaker将管理的同一Kubernetes集群是否安全/正确?我主要是指生产,HA部署。 最佳答案 我认为Spinnaker和Kuberne
我正在使用MSVC在Windows上从源代码(官方源代码发布,而不是从仓库中)构建Qt5(Qt 5.15.0)。 我正在设置环境。变量,依赖项等,然后运行具有1600万个选项的configure,最后
我需要打印一个包含重复单词的数组。我的数组已经可以工作,但我不知道如何正确计算单词数。我已经知道,当我的索引计数器 (i) 为 49 时,并且当 (i) 想要计数到 50 时,我会收到错误,但我不知道
我正在遵循一个指南,该指南允许 Google map 屏幕根据屏幕尺寸禁用滚动。我唯一挣扎的部分是编写一个代码,当我手动调整屏幕大小时动态更改 True/False 值。 这是我按照说明操作的网站,但
我有一个类“FileButton”。它的目的是将文件链接到 JButton,FileButton 继承自 JButton。子类继承自此以使用链接到按钮的文件做有用的事情。 JingleCardButt
我的 friend 数组只返回一个数字而不是所有数字。 ($myfriends = 3) 应该是…… ($myfriends = 3 5 7 8 9 12). 如果我让它进入 while 循环……整个
这个问题在这里已经有了答案: Is there a workaround to make CSS classes with names that start with numbers valid?
我正在制作一个 JavaScript 函数,当调整窗口大小时,它会自动将 div 的大小调整为与窗口相同的宽度/高度。 该功能非常基本,但我注意到在调整窗口大小时出现明显的“绘制”滞后。在 JS fi
此问题的基本视觉效果可在 http://sevenx.de/demo/bootstrap-carousel/inc.carousel/tabbed-slider.html 获得。 - 如果你想看一看。
我明白,如果我想从函数返回一个字符串文字或一个数组,我应该将其声明为静态的,这样当被调用的函数被返回时,内容就不会“消亡”。 但我的问题是,当我在函数内部使用 malloc 分配内存时会怎样? 在下面
在 mySQL 数据库中存储 true/false/1/0 值最合适(读取数据消耗最少)的数据字段是什么? 我以前使用过一个字符长的 tinyint,但我不确定它是否是最佳解决方案? 谢谢! 最佳答案
我想一次读取并处理CSV文件第一行中的条目(例如打印)。我假设使用Unix风格的\n换行符,没有条目长度超过255个字符,并且(现在)在EOF之前有一个换行符。这意味着它是fgets()后跟strto
所以,我们都知道 -1 > 2u == true 的 C/C++ 有符号/无符号比较规则,并且我有一种情况,我想有效地实现“正确”比较。 我的问题是,考虑到人们熟悉的尽可能多的架构,哪种方法更有效。显
**摘要:**文章的标题看似自相矛盾。 本文分享自华为云社区《Java异常处理:如何写出“正确”但被编译器认为有语法错误的程序》,作者: Jerry Wang 。 文章的标题看似自相矛盾,然而我在“正
我有一个数据框,看起来像: dataDemo % mutate_each(funs(ifelse(. == '.', REF, as.character(.))), -POS) # POS REF
有人可以帮助我使用 VBScript 重新格式化/正确格式化带分隔符的文本文件吗? 我有一个文本文件 ^分界如下: AGREE^NAME^ADD1^ADD2^ADD3^ADD4^PCODE^BAL^A
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引起辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the he
我是一名优秀的程序员,十分优秀!