- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
是否有任何类可以通过不同的音调在扬声器中发出声音?System.Beep() 是原始的,我不能以双倍频率发送到那里。
比方说,我想要播放 A 声音或 B# 声音。我希望函数调用像这样:
double d = 425,545;
int duration = 500;
int volume = 0.8;
f(d, duration, volume)
f(ToneClass.A, duration, volume)//or like this
最佳答案
频率的整数部分就足够了。你的耳朵甚至不会注意到小数部分。
int frq = 425;
int duration = 500;
Console.Beep(frq, duration);
您可以从这里看到钢琴键的频率。 https://en.wikipedia.org/wiki/Piano_key_frequencies
一些笔记。
使用枚举而不是整数。还可以使用 Task.Delay(duration).Wait();
休息。 (休息我的意思是沉默笔记)
您可以使用一些公式来计算钢琴键,然后计算键频率,而不是使用大型枚举或大量硬编码整数。您还应该考虑音符长度。你可以在这里看到它们 https://en.wikipedia.org/wiki/Note_value
这是爱德华·格里格的《山王》片段:D
static int GetPianoKey(string note)
{
int key = -1;
switch (note[0])
{
case 'A': key = 1; break;
case 'B': key = 3; break;
case 'C': key = 4; break;
case 'D': key = 6; break;
case 'E': key = 8; break;
case 'F': key = 9; break;
case 'G': key = 11; break;
}
if (note.Length == 2)
{
return key + 12*(note[1] - '0');
}
if (note.Length == 3)
{
return key + 12*(note[2] - '0') + (note[1] == 'b' ? -1 : 1);
}
throw new ApplicationException("Wrong note.");
}
static int GetNoteFrequency(string note)
{
return (int) (Math.Pow(1.05946309436, GetPianoKey(note) - 49)*440);
}
static int GetTickDuration(int tempo)
{
return 60000/tempo;
}
private static void Main(string[] args)
{
int duration = GetTickDuration(120); // 120 bpm. duration for quarter note
for (int i = 0; i < 2; i++)
{
Console.Beep(GetNoteFrequency("A3"), duration / 2); // eighth note ==> duration/2
Console.Beep(GetNoteFrequency("B3"), duration / 2);
Console.Beep(GetNoteFrequency("C3"), duration / 2);
Console.Beep(GetNoteFrequency("D3"), duration / 2);
Console.Beep(GetNoteFrequency("E3"), duration / 2);
Console.Beep(GetNoteFrequency("C3"), duration / 2);
Console.Beep(GetNoteFrequency("E3"), duration / 2);
Task.Delay(duration/2).Wait(); // eighth rest ==> duration/2
Console.Beep(GetNoteFrequency("D#3"), duration / 2);
Console.Beep(GetNoteFrequency("B3"), duration / 2);
Console.Beep(GetNoteFrequency("D#3"), duration / 2);
Task.Delay(duration / 2).Wait();
Console.Beep(GetNoteFrequency("D3"), duration / 2);
Console.Beep(GetNoteFrequency("Bb3"), duration / 2);
Console.Beep(GetNoteFrequency("D3"), duration / 2);
Task.Delay(duration / 2).Wait();
Console.Beep(GetNoteFrequency("A3"), duration / 2);
Console.Beep(GetNoteFrequency("B3"), duration / 2);
Console.Beep(GetNoteFrequency("C3"), duration / 2);
Console.Beep(GetNoteFrequency("D3"), duration / 2);
Console.Beep(GetNoteFrequency("E3"), duration / 2);
Console.Beep(GetNoteFrequency("C3"), duration / 2);
Console.Beep(GetNoteFrequency("E3"), duration / 2);
Console.Beep(GetNoteFrequency("A4"), duration / 2);
Console.Beep(GetNoteFrequency("G3"), duration / 2);
Console.Beep(GetNoteFrequency("E3"), duration / 2);
Console.Beep(GetNoteFrequency("C3"), duration / 2);
Console.Beep(GetNoteFrequency("E3"), duration / 2);
Console.Beep(GetNoteFrequency("G3"), duration * 2); // half note ==> duration*2
}
}
关于c# - System.Beep 等效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33773075/
Andrid 手机上是否有一些默认的、可以安全使用的“哔哔”式铃声? 我有以下代码 final Ringtone alarm = RingtoneManager.getRingtone(getActi
我整天都在摆弄这段代码,但我又被卡住了……提前致谢 基本上这个程序给我带来了问题,下面是我认为导致问题的代码片段。基本上,用户可以改变他们的“当前温度”,如果它超过上限或下限的阈值,则会调用“comp
我正在使用 motorolla MC55,它会扫描并在成功扫描时发出蜂鸣声,我需要禁用该功能,以便它在扫描时根本不会播放任何声音。 有什么办法可以实现吗? 最佳答案 扫描以下条形码以启用/禁用提示音。
我在远程机器上运行一个长脚本,我想在脚本结束时听到哔声。在我的机器上,我可以在脚本末尾添加: echo -e '\a' > /dev/console 但这在提示的远程机器上不起作用: -bash: /
本文实例讲述了python调用机器喇叭发出蜂鸣声(Beep)的方法。分享给大家供大家参考。具体分析如下: 下面这段python代码可调用机器喇叭发出蜂鸣声(Beep),当然你的喇叭必须能响,否则可
VB6 有蜂鸣功能。我很想知道调用此函数时发出的哔哔声究竟是什么。谢谢。 最佳答案 更准确地说,VB6 有一个 Beep 子程序,而不是一个函数。 这与 Kernel32 Beep 入口点完全无关,并
请原谅这个愚蠢的新手问题,但是:当我(不小心)在命令行窗口中按退格键时,如何关闭 MATLAB 发出的极其烦人的“哔”声? 最佳答案 只是beep off在最新版本中。 https://www.mat
如何用可调节音量的扬声器发出的现代蜂鸣声替换 Windows.Beep? 最佳答案 如果您想在显示 MessageBox 时使用 Windows 使用的“标准”蜂鸣声,您可以调用 Windows.Me
我正在研究HAM Radio的辅助项目,在该项目中,用户输入文本,然后使用.NET的Console.Beep()回放Morse Code。 我正在寻找可能的解决方案,以将其导出为录音(音频文件),以便
Closed. This question does not meet Stack Overflow guidelines。它当前不接受答案。 想改善这个问题吗?更新问题,以便将其作为on-topic
所以我的代码是这样的: import winsound import time length = 250 class Notes(): def frequency(halfNotesFromA
是否有任何类可以通过不同的音调在扬声器中发出声音?System.Beep() 是原始的,我不能以双倍频率发送到那里。 比方说,我想要播放 A 声音或 B# 声音。我希望函数调用像这样: double
在下面的代码中我收到一个错误,但不知何故我找不到信息来修复它。如有任何误解,敬请谅解。 import com.sun.jna.Library; import com.sun.jna.Native; i
在旧服务器上,我使用mysqldump 命令备份了 MySQL 数据库。 在新服务器上,使用 5.6 版的 MySQL,同样的命令给我错误 unknown option '-no-beep' 无论它插
关闭。这个问题需要debugging details .它目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and th
System.Media.SystemSounds.Beep.Play(); 这就是我目前使用的,但它不会在终端服务器/Citrix(Windows2008)中的客户端(Windows7)上发出蜂鸣声
我正在尝试使用 beep.js 创建“生成分数”根据我拥有的一些 map 数据。我正在使用 new Beep.Voice 作为与特定类型数据相关的注释的占位符(总共 7 个声音)。显示数据时,应播放语
在 C# 中,我可以执行 Console.Beep()。但是,如果您将持续时间指定为 1000 或 1 秒,则在该秒过去之前,它不会执行下一行代码。 有没有什么方法可以以非阻塞方式执行 Console
我如何捕获/重定向由以下人员产生的声音: Console.Beep(400, 1000); 要么到某个字节缓冲区,要么直接到一个 wav 文件都可以。 我搜索过,但只找到了重定向文本输出的方法,而不是
我试图编写一个非常简单的乐谱,但是一开始我只想在控制台中对其进行测试。我知道Beep()方法,但是我的计算机没有该类型的扬声器,因此Beep()无法正常工作。还有其他选择吗? 如我所说,我的计算机没有
我是一名优秀的程序员,十分优秀!