周波数、時間を指定して、ビープ音を鳴らす

構文 sound.beep([周波数[,時間] ])
説明 sound.beep([周波数[,時間msec] ])
引数 周波数 : 音の周波数を指定します。(1~10000Hz)の範囲で整数です。省略時は4000Hzになります。
時間 : 音が鳴る時間をmsec単位でしていします。省略時は200msecになります。
戻り値 なし

 動作が不安定でしたが、コメントのように修正して安定しています。

------------------------------------------
-- 周波数、時間を指定して、ビープ音を鳴らすサンプル beep_sample.lua
------------------------------------------
faq = 50
 
function main()
  local msec = 10
  local tm
  canvas.putCls(color(255,255,255))
  canvas.drawText("周波数、時間を指定して、ビープ音を鳴らすサンプル",0,0,24,color(0,0,0))
  canvas.drawText("音量に注意してください。",0,30,24,color(0,0,0))
  canvas.drawText("画面タッチで開始します。", 0, 130, 24, color(0,0,0))
  touch(3)
 
  for faq = 50, 3000, 50 do
    sound.beep( faq, msec )
    canvas.drawText("現在の周波数は、" .. faq .. " ",0,80,24,color(0,0,0),color(255,255,255))
    tm = system.getSec() + msec/900
    while( tm>system.getSec() )do end
  end
 
  for faq = 3000, 50, -50 do
    sound.beep( faq, msec)
    canvas.drawText("現在の周波数は、" .. faq .. " ",0,80,24,color(0,0,0),color(255,255,255))
    tm = system.getSec() + msec/900
    while( tm>system.getSec() )do end
  end
end
 
main()
system.exit() 
 


コメント(最大30行)
  • -- こんにちは、faq が feq になっています。
    -- あと、forループの do が抜けています。
    -- sound.beep()は、次のbeepが呼び出されると、鳴り止むので、下の例のように、自分で時間待ちループが必要なんです。
    ------------------------------------------
    -- 周波数、時間を指定して、ビープ音を鳴らすサンプル beep_sample.lua
    ------------------------------------------
    faq = 50
    function main()
    local msec = 10
    local tm
    canvas.putCls(color(255,255,255))
    canvas.drawText("周波数、時間を指定して、ビープ音を鳴らすサンプル",0,0,24,color(0,0,0))
    canvas.drawText("音量に注意してください。",0,30,24,color(0,0,0))
    canvas.drawText("画面タッチで開始します。", 0, 130, 24, color(0,0,0))
    touch(3)

    for faq = 50, 3000, 50 do
    sound.beep( faq, msec )
    canvas.drawText("現在の周波数は、" .. faq .. " ",0,80,24,color(0,0,0),color(255,255,255))
    tm = system.getSec() + msec/900
    while( tm>system.getSec() )do end
    end

    for faq = 3000, 50, -50 do
    sound.beep( faq, msec)
    canvas.drawText("現在の周波数は、" .. faq .. " ",0,80,24,color(0,0,0),color(255,255,255))
    tm = system.getSec() + msec/900
    while( tm>system.getSec() )do end
    end
    end
    main()
    system.exit()
    -- (たろサ) 2011-09-03 20:11:08
  • あら、インデントが消えちゃった。読みづらくてすいません。 -- (たろサ) 2011-09-03 20:12:39
  • ご指摘、ありがとうございます。
    ブログサンプルでも、記載されていた部分ですが「msec/900」をきちんと理解できなくて、音も鳴ったから良いかなとアップしちゃいました。
    -- (DSLua@wiki) 2011-09-03 21:38:19
名前:
コメント

すべてのコメントを見る



タグ:

+ タグ編集
  • タグ:
最終更新:2011年09月03日 21:32
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。