3

[DartLang and Beep]を検索したところ、サウンドファイルを必要とするさまざまなHTML5ソリューションのみが見つかりました。サウンドファイルを使わずに、できるだけベーシックでユニバーサルな「ベル」サウンドを作りたいです。(私はUbuntuを使用しており、-hを指定して呼び出すと、次のことを報告するシステムビープ関数があります。

使用法:ビープ音[-f freq] [-l length] [-r reps] [-d delay] [-D delay] [-s] [-c] [--verbose | --debug][-eデバイス]

ただし、繰り返しになりますが、これをできるだけ単純で普遍的な方法で実行したいと思います。

この手がかりもあります:

7 00/07 07 07 BEL(Ctrl-G)BELL(ビープ音)

...しかし、print()関数で何も考えられないので、ビープ音が鳴ります。

前もって感謝します!

4

3 に答える 3

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();
于 2012-12-06T13:56:49.813 に答える
5

AudioAPIを使用してトーンを生成できます。たとえば、次の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をサポートするブラウザで、つまり。

于 2012-12-09T02:34:25.147 に答える
0

コンソールアプリケーションを作成している場合'\a'は、ASCIIベル文字である印刷を行うことができます。

すべての端末で音が鳴るわけではありません。たとえば、GNU screenは、代わりに画面の色を瞬間的に反転させて、「Wuff、Wuff!!」というメッセージを出力する場合があります。音を出す代わりに。さまざまなターミナルエミュレータを使用すると、ASCIIベルを無効にできます。また、再生される特定のサウンドは、システム設定で変更される場合があります。

また、これはブラウザでは機能しません。そのためには、サウンドファイルを使用する必要があります。

于 2012-12-06T05:48:01.737 に答える