HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2020
0530
ゆうやんmmplayで別のスピーカー鳴らしたい(mci使用)5未解決


ゆうやん

リンク

2020/5/30(Sat) 11:43:35|NO.90666

mmplayで別のスピーカー鳴らすことはできないでしょうか?
mciでほかの再生デバイスに鳴らすコマンドは

mci "set エイリアス名 output 再生デバイス"
ですが、これを利用して、他の再生デバイスに音を鳴らすことはできないでしょうか?
わかる方がいたら、ご教授ください。

#uselib "winmm.dll" #cfunc waveOutGetNumDevs "waveOutGetNumDevs" dialog "wav",16 if stat=0 mmload refstr,0,0 mmplay 0 randomize mci "set myid output "+rnd(waveOutGetNumDevs()) mes stat
mciのstatを確認してみたところ、-1と出て失敗してしまいます…。

参考にしたスレッド
http://hsp.tv/play/pforum.php?mode=pastwch&num=79556
http://hsp.tv/play/pforum.php?mode=pastwch&num=54410



この記事に返信する


MillkeyStars

リンク

2020/5/31(Sun) 02:19:15|NO.90669

まず前提条件ですが、2MB を超える wave ファイルであること。
(mmload の仕様で wave が 2MBを超えないファイルはすべてメモリにロードされる為、mci が使われません。)

mci "capability myid outputs" : mes ""+stat の値が 2以上であることが前提です。
(スピーカーが複数有効にされていない場合、出力は 1 となります。)

上記条件をクリアした際に、mci "set myid ouput <<Device No.>>" は機能します。



ゆうやん

リンク

2020/5/31(Sun) 11:52:16|NO.90675

MillkeyStarsさん、ありがとうございます!
2MB未満のwavファイルでも、mciを使わずに他のスピーカーに音を鳴らすことはできないでしょうか?



MillkeyStars

リンク

2020/5/31(Sun) 12:34:12|NO.90676

再生遅延を気にしないのであれば、普通に mci で読み込んでそれを再生するのが一番だと思うよ。
wave 限定であれば、「waveOutOpen」とか。

今回の問題は、mmload 側の 2MB 制限というのが問題だから最初から mci で読み込んじゃえば制限は関係ないです。



ゆうやん

リンク

2020/6/2(Tue) 16:53:03|NO.90677

一応、2MB以上のwavファイルを再生を試してみたところ、反映されたみたいですが、音が一瞬だけ止まってしまいます。



ゆうやん

リンク

2020/11/15(Sun) 08:49:27|NO.91798

原因がわからないので教えてほしいです・・・。



ONION software Copyright 1997-2023(c) All rights reserved.