[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『鳥の鳴き声』(B'ner) W7、Excel7
チッチッチとなく鳥の鳴き声をExcelで出したいのです。
APIでPlaySoundとかを使うようですが、チッとチッの間を短くしたいのです(0.1秒)。
周波数、継続時間、立ち上がり・下り時間、符号間隔時間などの指定など出来るでしょうか? どなたか教えていただければ幸いです。
私にはできませんが、
http://www.happy2-island.com/excelsmile/smile04/capter00303.shtml
ここに、PlaySoundについては書いてあります。 鳥の鳴き声wavファイルがあればできそうですが・・ (shiojii)
wavファイルを使用するのではなく、例えばVBのConsoleBeep()などのように、音源もすべてをExcelで作りたいのです。
ichinose
BeepAPIでの動作は出来るのですが、例えば
Call BeepAPI(2500, 450)
Call BeepAPI(40, 50)
のとき、このcall間での動作を0.05秒とかにしたいのです。VBAの動作としてそんなに早くは無理なのかもしれませんが、ご存知でしょうか?
>call間での動作を0.05秒とかにしたいのです 0.05秒の間をおきたいという事ですか? ApiにSleepがあります。
新規ブックの標準モジュール
Option Explicit Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) Declare Function BeepAPI Lib "kernel32.dll" Alias "Beep" _ (ByVal dwFreq As Long, ByVal dwDuration As Long) As Long Sub Beep_sample() Dim i As Long Const dwFreq As Long = 1000 Const dwDuration As Long = 500 Call BeepAPI(2500, 450) Sleep 50 '0.05秒の間 BeepAPI 40, 50 End Sub
因みに Sub チューリップ() Dim 音, 長さ Dim g0 As Long 音 = Array(400, 449, 504, "s", 400, 449, 504, "s", 599.3, 504, 449, 400, 449, 504, 449) 長さ = Array(500, 500, 500, 300, 500, 500, 500, 300, 500, 500, 500, 500, 500, 500, 700) For g0 = LBound(音) To UBound(音) If 音(g0) = "s" Then Sleep 長さ(g0) Else BeepAPI 音(g0), 長さ(g0) End If Next End Sub
いいリズムだ なんちゃって!!
ichinose
こうすれば音楽も出来るんだと感心しました。ただ一つだけ意図したところがうまく伝わっておりませんでした。簡単に言うと、鳥の鳴き声を1秒間に10回「チチチチ・・・」と鳴かしたいのです。上のサンプルをいろいろいじったのですが、どうも上手く短く鳴いてくれません。 私の力では無理に思えてきました。
>どうも上手く短く鳴いてくれません。 希望よりも長く鳴いてしまうのですね。 現在のコードを提示してみてはどうでしょうか。 (wan)
Option Explicit Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) Declare Function BeepAPI Lib "kernel32.dll" Alias "Beep" _ (ByVal dwFreq As Long, ByVal dwDuration As Long) As Long Sub Beep_sample() Dim i As Long For i = 1 To 10 Call BeepAPI(2500, 5) Sleep 30 BeepAPI 40, 5 Sleep 20 Next End Sub
これでは?
ichinose
百舌鳥ではなく啄木鳥になりましたが、目標とするものが出来ました。
多分私の説明が不十分だったようです。 大変お手数おかけしました。
有難うございました。
Option Explicit Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) Declare Function BeepAPI Lib "kernel32.dll" Alias "Beep" _ (ByVal dwFreq As Long, ByVal dwDuration As Long) As Long
Sub Beep_sample() Dim i As Long
For i = 1 To 5 Call BeepAPI(800, 50) Next End Sub
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.