我搜索了[DartLang和Beep]并且只找到了需要声音文件的各种HTML5解决方案。我想在不使用声音文件的情况下尽可能做基本和普遍的“贝尔”声音。 (我正在使用Ubuntu并且有一个系统蜂鸣功能,当我用-h调用它时报告以下内容:
使用方法: beep [-f freq] [-l length] [-r reps] [-d delay] [-D delay] [-s] [-c] [--verbose | --debug] [-e device]
然而,再一次,我只想以尽可能简单和通用的方式做到这一点。
还有这个线索:
7 00/07 07 07 BEL(Ctrl-G)BELL(哔哔声)
...但是我没想到用print()函数做任何事都会引起哔哔声。
提前致谢!
答案 0 :(得分:11)
我不知道你为什么要这样做,但这实际上取决于你是想在浏览器上还是在控制台上使用它。
如果您想在控制台上执行此操作,请尝试以下操作:
main() {
print(new String.fromCharCodes([0x07]));
}
至少在Windows上,它对我来说是哔哔声。如果终端支持它(它并没有被用户禁用,等等),它应该可以工作。
如果您想在浏览器上执行此操作,则应播放声音文件。
这是一个免费的哔声:http://www.freesound.org/people/SpeedY/sounds/3062/
浏览器上的一个非常简单的示例:
new AudioElement("path/to/beep.wav")
..autoplay = true
..load();
答案 1 :(得分:5)
您可以使用Audio API生成音调。例如,当您按下某个键时,以下Dart代码将生成持续50毫秒的蜂鸣声。
import 'dart:html';
import 'dart:web_audio';
import 'dart:async';
void main() {
final num LENGTH = 50;
var ac = new AudioContext();
window.onKeyUp.listen((KeyboardEvent ke) {
print("press a key");
OscillatorNode oscillator = ac.createOscillator();
oscillator
..type = "sine"
..frequency.value = 1000
..connectNode(ac.destination, 0, 0)
..start(0);
var timer = new Timer(const Duration(milliseconds: LENGTH), () {
oscillator.disconnect(0);
});
});
}
可能有一种更好的方法来终止生成的音调而不是设置超时 - 可能是通过使用事件监听器(我仍然是API的新手;希望知道更多的人可以编辑上面的代码) - 但结果是在支持Audio API的浏览器上发出声音,没有任何声音文件,即。
答案 2 :(得分:0)
如果您正在编写控制台应用程序,则可以打印'\a'
这是一个ASCII铃声字符。
这可能无法在所有终端上播放声音。例如,GNU屏幕可能会暂时使屏幕颜色反转并打印消息“Wuff,Wuff !!”而不是播放声音。各种终端仿真器将允许您禁用ASCII铃声,并且可以在系统设置中修改播放的特定声音。
此外,这在浏览器中不起作用。为此,您必须使用声音文件。