Wave 製作エディター。どこかに良いのない?

タグの編集
投稿者 ぼく  (小学生) 投稿日時 2008/9/30 01:43:31
デロッパのインベーダーgameとクルセイダーgameのコードを調べたら、WAVEファイルしか使われてない。
Windows Madia Playerの例がみたかったが・・無料版の限界みたいだ。
WAVEは簡単に音がだせる。
とゆうわけで、Waveファイルに変換できる優良ソフトを紹介して下さい。
投稿者 るきお  (社会人) 投稿日時 2008/9/30 08:53:28
Waveに変換できる優良ソフトはわかりませんが、
mp3たwmaをVBで演奏するにはmciSendString関数などを使います。
そんなに難しくないですよ。
投稿者 ぼく  (小学生) 投稿日時 2008/10/1 03:46:42
ぼくのレベルでは、コピーのセキュリティ制御カードを突破できませんでした。
まだ、初心者です。
しかたないので、Beep関数で音階を作って遊びます。
音色は、しょっぱいです。

では。
投稿者   (社会人) 投稿日時 2008/10/1 04:47:55
それは突破してはいけません。
ちゃんと使ってもいいものを選んで使うか自作するのがいいですよ。
投稿者 ぼく  (小学生) 投稿日時 2008/10/1 06:17:54
Beep関数だと、周波数と長さだけで、音も、しょっぱい。です
桜さん>音のつくり方は、他にありますか?
basicだと処理速度が遅くて、いい音がでないんでしょうか?
C++は少しかじったけど、大文字、小文字のエラ-とか、{{{}}}の数が1個多いとか、バグ探しが難しく、やめてしまいました。
Basicで音の出し方の例を御教授して下さい。

1 救急車の音とか
② パトカーのサイレンとか
3 ドレミファソラシドとか
(^願^)
投稿者 るきお  (社会人) 投稿日時 2008/10/1 06:53:51
ドレミファソラシドだとこんな感じで演奏できます。
少しアドリブ入れてます。
Midi音源がないとエラーになります。

   
Private Declare Sub midiOutOpen Lib "winmm.dll" (ByRef lphmo As IntegerByVal uDeviceID As IntegerByVal dwCallback As IntegerByVal dwCallbackInstance As IntegerByVal dwFlags As Integer)
    Private Declare Sub midiOutShortMsg Lib "winmm.dll" (ByVal hmo As IntegerByVal dwMsg As Integer)
    Private Declare Sub midiOutClose Lib "winmm.dll" (ByVal hmo As Integer)
    
    Private Const MIDI_MAPPER As Integer = -1
    Private hMidiOut As Integer

    Private Sub Button1_Click(ByVal sender As System.ObjectByVal e As System.EventArgs) Handles Button1.Click

        midiOutOpen(hMidiOut, MIDI_MAPPER, 0, 0, 0)

        Play(49)    '弦楽器合奏で演奏 
        Play(58)    'トランペットで演奏 
        Play(79)    'オカリナで演奏 

        midiOutClose(hMidiOut)

    End Sub

    '''<summary>メロディを奏でる</summary> 
    ''' <param name="Instrument">音色</param> 
    Protected Overloads Sub Play(ByVal Instrument As Integer)

        Dim length As Integer = 500
        midiOutShortMsg(hMidiOut, MidiMsg(&HC0, Instrument, &H0))

        PlayNote(length, &H3C)
        PlayNote(length \ 2, &H3E)
        PlayNote(length \ 2, &H40)
        PlayNote(length, &H41)
        PlayNote(length, &H43)
        PlayNote(length \ 2, &H45 + 12)
        PlayNote(length \ 2, &H45)
        PlayNote(length \ 2, &H47 + 12)
        PlayNote(length \ 2, &H47)
        PlayNote(length * 2, &H3C + 12)

    End Sub

    ''' <summary>音を1音鳴らす</summary> 
    ''' <param name="length">音の長さ。500で四分音符くらい。</param> 
    ''' <param name="key">音階。&H3Cで中央のド。</param> 
    Private Function PlayNote(ByVal length As IntegerByVal key As Integer)

        midiOutShortMsg(hMidiOut, MidiMsg(&H90, key, &H7F))
        Threading.Thread.Sleep(length)
        midiOutShortMsg(hMidiOut, MidiMsg(&H90, key, 0))

    End Function

    'チャンネル, ノート, ベロシティ 
    Private Shared Function MidiMsg(ByVal Stat As IntegerByVal Data1 As IntegerByVal Data2 As IntegerAs Integer

        Return Stat Or (Data1 << 8) Or (Data2 << 16)

    End Function
投稿者 るきお  (社会人) 投稿日時 2008/10/1 06:58:04
救急車やパトカーなどメロディでものは、基本的にwaveやmp3,wma,oggなどを鳴らします。
標準的なパソコンには音を作る機能はありません。
(ただし、かなり低レベルでBeepを制御できれば驚くほど変化をつけられるようです。)

上で紹介したドレミファソラシドの例は、初級講座第42回で紹介しているものを
短く抜粋したものです。
http://homepage1.nifty.com/rucio/main/dotnet/shokyu/standard42.htm

サウンドの再生についてはサンプルにいくつかの例を載せています。
http://homepage1.nifty.com/rucio/main/dotnet/Samples/Sample060Playmp3.htm
http://homepage1.nifty.com/rucio/main/dotnet/Samples/SmpleCnt.htm

私もせっかく書いたので参考にしてもらえるとうれしいです。
投稿者 ぼく  (小学生) 投稿日時 2008/10/1 07:53:09
印刷させていただきました。
プリンターが無い頃は、手書きの公文式でしたが。
書き込み内容は大切に利用します。

(^礼^)
投稿者 ぼく  (小学生) 投稿日時 2008/10/1 20:40:01
URLリンクには抵抗がありましたが・・・
宝の山を教えてくれて、ありがとう。
.midファイルが再生できました。
リソースがVisual Studioに。。ここだけ格上げになったのかな?
コード内容は難しいけど。

では。(^_^@)