[[20100420201724]] 『モールス信号音を作りたい』(Tak) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『モールス信号音を作りたい』(Tak)

APIBeepで好きな音が出せるのは分かりましたが、前後の音の間隔を調整するにはどうすれば出来ますか? モールス信号音を作りたいと思っております。 OS:Windows7、Excel2007

(Tak)


 面白そうなので作ってみました。
 ご参考までに。
 (Mook)

 Declare Function Beep Lib "kernel32" (ByVal dwFreq As Long, ByVal dwDuration As Long) As Long
 Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
 Const dotLen = 70 '基本長:短点の長さ(msec)
 '-----------------------
 Sub test()
 '-----------------------
    MorseCode "SOS"
 End Sub
 '-----------------------
 Sub MorseCode(st As String)
 '-----------------------
    '// A-Z の定義
    ms = Array("._", "_...", "_._.", "_..", ".", ".._.", "__.", "....", "..", ".___", "_._", "._..", _
            "__", "_.", "___", ".__.", "__._", "._.", "...", "_", ".._", "..._", ".__", "_.._", "_.__", "__..")
    For i = 1 To Len(st)
        ch = UCase(Mid(st, i, 1))
        If Asc(ch) >= Asc("A") And Asc(ch) <= Asc("Z") Then
            MorseSound ms(Asc(ch) - Asc("A"))
        ElseIf ch = " " Then
            Sleep dotLen * 4 '// 語間 : 文字間(★)で3 空けているので +4
        End If
    Next
 End Sub
 '-----------------------
 Sub MorseSound(cd)
 '-----------------------
    For i = 1 To Len(cd)
        Select Case Mid(cd, i, 1)
            Case "."   '// 短点
                Beep 440, dotLen
                Sleep dotLen
            Case "_"   '// 長点
                Beep 440, dotLen * 3
                Sleep dotLen
        End Select
    Next
    Sleep dotLen * 3 '// 文字間(★)
 End Sub
 -------------------------
 追記と修正
 (Mook)

 原理の簡易説明(Wiki より)
 長点1つは短点3つ分の長さに相当し、各点の間は短点1つ分の間隔をあける。
 また、文字間隔は短点3つ分、語間隔は短点7つ分あけて区別する。
http://ja.wikipedia.org/wiki/%E3%83%A2%E3%83%BC%E3%83%AB%E3%82%B9%E7%AC%A6%E5%8F%B7


Mookさん、

ありがとうございました。これを基に、流れるようなsignalにtuneしてみたいと思います。
まだ符号と符合間の調整が上手くいきまません。どうすれば上手くいくのかな?(TaK)


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.