【QBASIC互換!?】FreeBasic【GPL】 2 [無断転載禁止]©2ch.net (430レス)
上下前次1-新
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん
リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
112: デフォルトの名無しさん [] 2017/03/12(日) 18:13:41.20 ID:a1qa7agM(1/5) AAS
以前書いた、BEEP系の内容の続き。
Win系関係ルーチンで発見できたものを記載する。
'declare 文は、C:\tool\FreeBASIC 内 *.BIファイルを検索してくれ。
大域宣言
#Include Once "win/mmsystem.bi"
Dim Shared MSerrorCodeMM as MMRESULT : 'MS音声処理関係処理のリターンコード
'declare function Beep_ alias "Beep"(byval dwFreq as DWORD, byval dwDuration as DWORD) as WINBOOL
MSReturnCode = Beep_(Frequency, BeepTime) : '命令語
'外部リンク[aspx]:msdn.microsoft.com
'外部リンク[aspx]:msdn.microsoft.com
'Declare function MessageBeep(byval uType as UINT) as WINBOOL
MSReturnCode = MessageBeep(-1)
MSReturnCode =MessageBeep(MB_ICONASTERISK)
MSReturnCode = MessageBeep(MB_ICONEXCLAMATION)
MSReturnCode= MessageBeep(MB_ICONHAND)
MSReturnCode = MessageBeep(MB_ICONQUESTION)
MSReturnCode =MessageBeep(MB_OK)
113: デフォルトの名無しさん [] 2017/03/12(日) 18:17:37.48 ID:a1qa7agM(2/5) AAS
'外部リンク[cgi]:park7.wakwak.com
にあったMIDI利用 BEEP は何とか成功した。
Dim lngmidHndVal As HMIDIOUT__
Dim lngmidHndPtr As HMIDIOUT
Dim lngmidHndPtrPtr As LPHMIDIOUT
で宣言して、
'declare function midiOutOpen(byval phmo as LPHMIDIOUT, byval uDeviceID as UINT, byval dwCallback as DWORD_PTR, byval dwInstance as DWORD_PTR, byval fdwOpen as DWORD) as MMRESULT
MSerrorCodeMM = midiOutOpen(@lngmidHndPtr, MIDI_MAPPER, 0, 0, CALLBACK_NULL)
If (MSerrorCodeMM = MMSYSERR_NOERROR) Then BeepMidiOut (lngmidHndPtr, MdiMsg)
Sleep mTime
midiOutClose (lngmidHndPtr)
とならす。
Private Function BeepMidiOut(lngmidHndPtr As HMIDIOUT, DataString As String) As Wata
Dim MLMsg() As Byte
Dim As Long IAA, IBB
Dim lpMidiOutHdr As MIDIHDR
と、宣言して、
ReDim MLMsg(0& To Len(DataString) \ 2& - 1&)
For IAA = 1& To Len(DataString) Step 2&
MLMsg((IAA - 1&) \ 2&) = Val("&H" & Mid(DataString, IAA, 2&))
Next
lpMidiOutHdr.lpData = VarPtr(MLMsg(0))
lpMidiOutHdr.dwBufferLength = UBound(MLMsg) + 1&
lpMidiOutHdr.dwFlags = 0&
'declare function midiOutPrepareHeader(byval hmo as HMIDIOUT, byval pmh as LPMIDIHDR, byval cbmh as UINT) as MMRESULT
MSerrorCodeMM = midiOutPrepareHeader (lngmidHndPtr, @lpMidiOutHdr, Len(lpMidiOutHdr))
'declare function midiOutLongMsg(byval hmo as HMIDIOUT, byval pmh as LPMIDIHDR, byval cbmh as UINT) as MMRESULT
MSerrorCodeMM = midiOutLongMsg (lngmidHndPtr, @lpMidiOutHdr, Len(lpMidiOutHdr))
と鳴らす。
114(1): デフォルトの名無しさん [] 2017/03/12(日) 18:21:32.40 ID:a1qa7agM(3/5) AAS
音が聞こえなかったのは、Sleep mTime の解釈が原因だと思う。
BeepMidi("02", "60", 2000)
'BeepMidi("57", "60", 2000) 'C7:2093Hz
のように、演奏時間を2000としたら、何秒か聞こえた。
遅延が、2-3秒ぐらいあり、その期間無答となるので、ゲームサウンドには使えない。
115: デフォルトの名無しさん [] 2017/03/12(日) 19:21:01.74 ID:a1qa7agM(4/5) AAS
さっぱりわからんけど
外部リンク[97]:blogs.windows.com
なんてものを見つけた。
Windows 10でMIDIを強化するというが、2秒ぐらいの遅延が発生していることからみれば
対応を取らなければ、MIDI関係ルーチンが使い物にならないわけで
主要用途である、ゲームのバックグラウンドサウンドにうまく適応で切るような、低負荷ルーチンの存在が必要となってくる。
Win 10では、1/4を超えるCPU占有をTSSで他のタスクに割り振るために認めていない。
より負荷を軽くすることが要求される。
しかし、負荷を軽くする内容については記載がない。
116: デフォルトの名無しさん [] 2017/03/12(日) 19:38:38.32 ID:a1qa7agM(5/5) AAS
いくらやっても見つからないと思ったらば、こんなの見つけた。
外部リンク:www.slideshare.net
37. バックグラウンドタスク
38. BackgroundTask • UWPは基本的にアプリを閉じるとタスクを実行できなくなる • BackgroundTaskに登録しておくとTriggerが発動したときに別
のプロセスとして処理を実行できる App System System Trigger BackgroundTask 別プロセス BackgroundTask登録
39. Background Task Triggerの例 • Time Trigger • 一定時間でTaskを実行 • 最短15分間隔 • System Trigger • システムのあらゆるイベント時にTask実行
• 例 Internet Available , Power State Changed • Push Notification Trigger • プッシュ通知が来た時にTask実行
MIDI 再生専用のタスクを作って、何かしかの指示を送って実行、
という処理が必要なのかな?。
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.018s