beep x,y について 山口 司 2004/08/09 18:37:02 ├十進BASICでは難しいようなので、 哲 2004/08/09 20:56:49 │└哲さま、ありがとうございました。参考にな... 山口 2004/08/09 21:47:53 │ └ちょっと面倒ですがWindowsAPIを使えばMIDI... 哲 2004/08/09 21:54:57 │ └手掛かりを示していただいて有難うございま... 山口 2004/08/10 00:05:47 │ └こういうのもありますよ。 shino 2004/08/10 23:32:32 │ └APIでMidi音源で書いて見たのですが音が出ま... 哲 2004/08/12 09:28:50 │ └アドレスの引き渡しには shino 2004/08/13 00:28:23 │ └見事です! 哲 2004/08/13 08:53:08 └スピーカーからでる音をwavファイルにするの... 青木太一 2004/08/10 11:49:10 └有難うございます。検討してみます。 山口 2004/08/10 15:13:27
beep x,y について 山口 司 2004/08/09 18:37:02 ツリーへ
beep x,y について |
返事を書く |
山口 司 2004/08/09 18:37:02 | |
beep 1000,1000 beep 2000,1000 end におきまして、1000ヘルツと2000ヘルツの2音は続けて出てきますが、これを同時に出せないものでしょうか?@ つまり2音を合成したいわけですが。 また、音をフアイルとしてsaveする方法はありましょうか?A どなたかよろしくお願いします。 |
├十進BASICでは難しいようなので、 哲 2004/08/09 20:56:49 ツリーへ
Re: beep x,y について |
返事を書く |
哲 2004/08/09 20:56:49 | |
十進BASICでは難しいようなので、 過去ログの答えで一応できるのですが山口さんの質問と逆のような? http://freebbs.around.ne.jp/article/b/basic/37/duehix/index.html 最後の書き込みは無視してください。 |
│└哲さま、ありがとうございました。参考にな... 山口 2004/08/09 21:47:53 ツリーへ
Re: 十進BASICでは難しいようなので、 |
返事を書く |
山口 2004/08/09 21:47:53 | |
哲さま、ありがとうございました。参考になりました。 |
│ └ちょっと面倒ですがWindowsAPIを使えばMIDI... 哲 2004/08/09 21:54:57 ツリーへ
Re: 哲さま、ありがとうございました。参考にな... |
返事を書く |
哲 2004/08/09 21:54:57 | |
ちょっと面倒ですがWindowsAPIを使えばMIDI音源も使えます。 こんなところを参考にどうぞ http://homepage1.nifty.com/MADIA/vb/API/MidiOutShortMsg.htm |
│ └手掛かりを示していただいて有難うございま... 山口 2004/08/10 00:05:47 ツリーへ
Re: ちょっと面倒ですがWindowsAPIを使えばMIDI... |
返事を書く |
山口 2004/08/10 00:05:47 | |
手掛かりを示していただいて有難うございます。 |
│ └こういうのもありますよ。 shino 2004/08/10 23:32:32 ツリーへ
Re: 手掛かりを示していただいて有難うございま... |
返事を書く |
shino 2004/08/10 23:32:32 | |
こういうのもありますよ。 EXTERNAL FUNCTION mciSendString(lpstrCommand$,lpstrReturnString$,uReturnLength,hWndCallback) ASSIGN "winmm.dll","mciSendStringA" END FUNCTION この関数は、 ! ファイルを開く LET n=mciSendString("open """ & s$ & """ alias WAVE","",0,0) ! 再生 LET n=mciSendString("play WAVE from 0","",0,0) ! 停止 LET n=mciSendString("stop WAVE","",0,0) ! ファイルを閉じる LET n=mciSendString("close WAVE","",0,0) などのようにして使います。 開いた後は必ず閉じて下さい。 s$に使うファイルを入れればOKです。 WAV、MIDI、MP3など色々なファイルを再生できます。 詳しくはMSDNライブラリなどで調べてみて下さい。 |
│ └APIでMidi音源で書いて見たのですが音が出ま... 哲 2004/08/12 09:28:50 ツリーへ
Re: こういうのもありますよ。 |
返事を書く |
哲 2004/08/12 09:28:50 | |
APIでMidi音源で書いて見たのですが音が出ません。 どこが間違っているか解る方、教えて頂けないでしょうか? DECLARE EXTERNAL FUNCTION midiOpen DECLARE EXTERNAL FUNCTION midiOut DECLARE EXTERNAL FUNCTION midiClose PUBLIC NUMERIC hMid LET Note=70 !音階(&H00から&H7F(127)) LET Inst=30 !楽器No(GM音色番号に準拠?) LET Vol=BVAL("7F",16) !音量(&H00から&H7F(127)) LET n=midiOpen(hMid, -1, 0, 0, 0) PRINT n LET n=midiOut (hMid, BVAL("c0",16) + Inst * 256) PRINT n LET n=midiOut(hMid, BVAL("90",16) + Note * 256 + Vol * 256 * 256) PRINT n WAIT DELAY 3 LET n=midiOut (hMid, BVAL("80",16) + Note * 256) PRINT n LET n=midiClose (hMid) PRINT n END EXTERNAL FUNCTION midiOpen(lphMidiOut,uDeviceID,dwCallback,dwInstance,dwFlags) DECLARE NUMERIC hMid ASSIGN "winmm.dll","midiOutOpen" LET hMid=lphMidiOut END FUNCTION EXTERNAL FUNCTION midiOut(hMid,Dt) ASSIGN "winmm.dll","midiOutShortMsg" END FUNCTION EXTERNAL FUNCTION midiClose(hMid) ASSIGN "winmm.dll","midiOutClose" END FUNCTION |
│ └アドレスの引き渡しには shino 2004/08/13 00:28:23 ツリーへ
Re: APIでMidi音源で書いて見たのですが音が出ま... |
返事を書く |
shino 2004/08/13 00:28:23 | |
アドレスの引き渡しには 文字列変数を使わないといけないようです。 HMIDIOUT型はLONG型ですから、4バイトの文字列を用意すれば よさそうですね。 いちおうプログラムも書いておきます。 DECLARE EXTERNAL FUNCTION midiOutOpen DECLARE EXTERNAL FUNCTION midiOutShortMsg DECLARE EXTERNAL FUNCTION midiOutClose ! 利用可能なMIDIデバイスの数を獲得 DECLARE EXTERNAL FUNCTION midiOutGetNumDevs DECLARE NUMERIC hMidiOut OPTION CHARACTER byte ! 文字サイズを1バイトにする DECLARE STRING hMid$ LET hmid$=REPEAT$("*",4) ! 四バイト分用意 LET Note=70 !音階(&H00から&H7F(127)) LET Inst=30 !楽器No(GM音色番号に準拠?) LET Vol=BVAL("7F",16) !音量(&H00から&H7F(127)) IF midiOutGetNumDevs<1 THEN STOP ! MIDIデバイスがなければ終了 LET n=midiOutOpen(hMid$, -1, 0, 0, 0) PRINT n ! 文字列を数値に変換 LET hMidiOut=0 LET k=1 FOR i=1 TO 4 LET hMidiOut = hMidiOut + k*ORD(hMid$(i:i)) LET k = k*256 NEXT i LET n=midiOutShortMsg(hMidiOut, BVAL("c0",16) + Inst * 256) PRINT n WAIT DELAY 0.5 LET n=midiOutShortMsg(hMidiOut, BVAL("90",16) + Note * 256 + Vol * 256 * 256) PRINT n WAIT DELAY 0.5 LET n=midiOutShortMsg(hMidiOut, BVAL("80",16) + Note * 256) PRINT n WAIT DELAY 0.5 LET n=midiOutClose(hMidiOut) PRINT n END EXTERNAL FUNCTION midiOutOpen(lphMidiOut$,uDeviceID,dwCallback,dwInstance,dwFlags) ASSIGN "winmm.dll","midiOutOpen" END FUNCTION EXTERNAL FUNCTION midiOutShortMsg(hMid,Dt) ASSIGN "winmm.dll","midiOutShortMsg" END FUNCTION EXTERNAL FUNCTION midiOutClose(hMid) ASSIGN "winmm.dll","midiOutClose" END FUNCTION EXTERNAL FUNCTION midiOutGetNumDevs ASSIGN "winmm.dll","midiOutGetNumDevs" END FUNCTION |
│ └見事です! 哲 2004/08/13 08:53:08 ツリーへ
Re: アドレスの引き渡しには |
返事を書く |
哲 2004/08/13 08:53:08 | |
見事です! なるほど、渡すほうは十進BASICがやってくれるけど受け取るほうが文字列になるわけですね。 ありがとうございました。 |
└スピーカーからでる音をwavファイルにするの... 青木太一 2004/08/10 11:49:10 ツリーへ
Re: beep x,y について |
返事を書く |
青木太一 2004/08/10 11:49:10 | |
スピーカーからでる音をwavファイルにするのなら、 http://www.html.ne.jp/~soratosu/midi2wav.html が参考になるかも知れません。 私は試していないのでなんとも言えませんが。 |
└有難うございます。検討してみます。 山口 2004/08/10 15:13:27 ツリーへ
Re: スピーカーからでる音をwavファイルにするの... |
返事を書く |
山口 2004/08/10 15:13:27 | |
有難うございます。検討してみます。 |