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


HSPTV!掲示板


未解決 解決 停止 削除要請

2006
0614
カズ音楽ファイルについて12未解決


カズ

リンク

2006/6/14(Wed) 04:19:07|NO.1097

#packで画像ファイルを実行ファイル内に
埋め込むことができるのは知りましたが、

音楽(や音声)ファイルを埋め込む方法はないでしょうか?

もしくは、それらのファイルを他の人から
見られたり(音楽ファイル単体で再生されたり)
しないようにする方法などありましたら教えてください。



この記事に返信する


I386

リンク

2006/6/14(Wed) 12:41:18|NO.1098

WAVなどは埋め込めますよ。
ただし、MIDIファイルなどのHSP自体から実行されないもの(MediaPlayerを通じて再生等)
は埋め込むことができません。
もし単体で再生されたくないのなら、独自の暗号化をかけて、
再生時に複合化して読み込ませるという方法や、規則的に分割させて再生時に結合など、
いくつかの方法があります。



カズ

リンク

2006/6/14(Wed) 16:01:42|NO.1099

>I386さん、
素早いご回答、ありがとうございます(^^)

WAVは埋め込めるとありますが、どのようにすればよいのでしょうか?

画像ファイルの埋め込みと同様#packしてみましたが、実行時にエラーでます。

mmplay命令で、再生したい音(WAVファイル)なのですが、
この場合も、MediaPlayer等を通じて再生されるものとして扱われるのですか?

お手数おかけしますが、教えていただければ嬉しいです。



hedamd

リンク

2006/6/14(Wed) 17:41:23|NO.1102

たしか、サイズに制限があったと思います。
(ちがったら、ごめんなさい!!)



Kpan

リンク

2006/6/14(Wed) 20:27:30|NO.1104

> 画像ファイルの埋め込みと同様#packしてみましたが、実行時にエラーでます。
これだけでは状況が全く分からんです。(^^;
どういうスクリプトを書いて、どのような種類のエラーが出たのか具体的に
お願いします。

-----
ひとまず、HSPに付属してるsample\demo\se_tyuiin.wavを用意。
以下のようなスクリプトを書いて、実行ファイル自動作成、でウチの環境では
問題なく再生されます。


#epack "se_tyuiin.wav" mmload "se_tyuiin.wav", , 1 mmplay



カズ

リンク

2006/6/15(Thu) 03:22:59|NO.1112

>hedamdさん、Kpanさん、ご親切にご回答していただいてありがとうございます。

長文で読みにくいとは思いますが、事情を詳しく知っていただきたいので詳細を書きます。
もし、これを読んでなにか分かりそうでしたら、教えてください。

私の場合、

#pack "./wav/○○.wav"

のようにディレクトリを参照すると、埋め込めませんでした。 この場合、作成した実行ファイルを起動させると、「エラー12」とかいうのが出ます。 (もちろんディレクトリとスクリプトは同じ位置においておりましたが)。 これが、最初に書いた「埋め込めずにエラーが出ます」ということです。 そこで、ディレクトリからwavファイルを取り出して、
#pack "○○.wav"

のようにスクリプトと同じ位置にwavファイルを直接置くと一応埋め込めました。

ところが、10メガくらいのwavファイルになると埋め込めなかったです。

この場合の埋め込めない、というのは、
↑のようにやって、実行ファイルを自動作成し、できた実行ファイルを起動させると、
エラーは出ませんが、無音(再生されるべき音源が再生されない)ということです。

効果音程度の短い音源は埋め込めて、再生もされたのですが、
それでも複数個埋め込むと、再び「エラー12」なるものが出ます。

hedamdさんがおっしゃるようにサイズに制限があるのでしょうか。
埋め込めたり、埋め込めなかったり、再生されたりされなかったり、
その規則性がよくつかめないで苦しんでおります(汗)

お分かりでしたらご指導お願いします。長々とすみませんm(_ _*)m



I386

リンク

2006/6/15(Thu) 12:46:18|NO.1114

>再生されるべき音源が再生されない
たぶんファイル制限があるのでしょう。音質を落としたりしてみては?

>複数個埋め込むと、再び「エラー12」なるものが出ます。
複数個のファイル名指定が全て正しいですか?
また、パックする際にWAVファイルがスクリプトと同じ場所に全て入っていますか?
よく確認してみてください。

それでもだめなら仕様なのかもしれません。
先ほど述べたように外部にファイルをまとめて、暗号化や結合などの方法を試すことを
お勧めします。



カズ

リンク

2006/6/15(Thu) 15:50:50|NO.1117

>I386さん、いつも丁寧に教えてくれてありがとうございます。

自分なりに色々実験してみました。
解決できたものがありますので、まずはその報告をこのスレに書いておきます。
以下の//〜//の部分はすでにご存知の方はどうぞ読み飛ばしていただいてけっこうです。

//-----------------------------------------------------------------------------
「パックすると、実行ファイル起動時にエラーになる」
「ディレクトリを参照すると、実行ファイル起動時にエラーになる」

これらはどうやらファイル名の長さの問題でした。

私の場合、当初、「wav」というディレクトリに音楽ファイルをつめこんで、
そこから "./wav/○○.wav" のように指定してパックを試みておりましたが、
この際、ファイル名が制限の長さ以上になってしまっていたらしいです。
そこで、ディレクトリ名やファイル名を少しずつ短くすると、
エラーもなく、ちゃんと再生されました。

マニュアルを読むと、「ファイル名は、拡張子も含めて19文字まで」だそうです。
-------------------------------------------------------------------------------//

ですが、まだ解決していないのもあります。それは、
サイズの大きい音楽ファイルをパックすると、エラーも出ずに再生もされないことです。

マニュアルを読むと、「無制限に複数のファイルを指定することができます」
とありますが、これは何個でもパックできるという意味でしょうか?
とすると、パックできるファイル1つの最大サイズについては触れていないようですが、

パックファイルのサイズ制限について、情報をお持ちの方は教えてください。

私の場合、
10メガのファイルを7メガまで落としましたが、それでも再生されませんでした。



I386

リンク

2006/6/15(Thu) 16:32:54|NO.1118

>たぶんファイル制限があるのでしょう。
説明不足でしたね。PACKする制限はいいのですが、mmplayは調べたところどうやら
2MB以下の音声しか再生できないみたいです。

これは音声ファイルを外部に出すか、どうしても組み込みたい場合は
いくつかに分割して組み込んでうまくつなげて再生などする必要があります。
(ただしmmplayで音が切れないようにつなげて再生することはかなり難しいです。
標準命令で済ませるならばgettimeなどを使って経過時間を計り、再生終了を検知して
次のWAVファイルを鳴らすなどの方法が挙げられますが…)

もうひとつに、組み込んだWAVファイルも再生できるプラグインを使用する方法も
挙げられます(こっちの方が無難で簡単)。



シリル

リンク

2006/6/15(Thu) 17:30:01|NO.1120

EXEファイルにパックしておき、
実行時にbcopyで一時フォルダにコピー再生するという方法はどうでしょうか。
これなら、ファイルサイズの制限もないでしょうし
MIDIファイルなども再生可能かと思います。



カズ

リンク

2006/6/18(Sun) 21:15:53|NO.1144

>I386さん、またまた解説をどうもありがとうございました。

>組み込んだWAVファイルも再生できるプラグインを使用する方法も
挙げられます。

”大きいサイズのwavもOK”と紹介されているプラグインを使おうと思い、
やってみたんですが、うまくいってないです(゜ー゜;A
というのも、自分はプラグインなどを使用したことがまったくなくて、
プラグインってどうやって使うの?といったところです。
どうも、知識が飛び飛びで勉強不足ですm(_ _*)m

>シリルさん、ご親切にどうもありがとうございます。

>実行時にbcopyで一時フォルダにコピー再生するという方法

これは、つまり一時的に格納するためのフォルダを作っておいて、
パックされた音源をbcopy命令でコピーしてそこに入れて、
実行時にはそのコピー版の音源を再生するということですか?

そんなことが出来るのですか(゜ー゜;A
ちょっとやってみますね。



I386

リンク

2006/6/19(Mon) 12:44:02|NO.1150

>組み込んだWAVファイルも再生できるプラグインを使用する方法も
>挙げられます。
そのプラグインが、EXEファイル内にPACKしたWAVファイルも再生できるやつかどうか
確認してみてください。
それと、プラグイン(.dllや.hpi)がHSP本体と同じディレクトリに置いてあるか、
またそのプラグインを使用するためのモジュール(.asまたは.hsp)がcommonディレクトリに
きちんと置いてあるか、スクリプトの先頭でそのモジュールがインクルードされているかを
確認してください。
EXEファイルにコンパイルしたら、そのEXEファイルと同じディレクトリにそのプラグインを
コピーして置いておかなければいけません。

>実行時にbcopyで一時フォルダにコピー再生するという方法
この方法もいいですが、mmplay自体にサイズ限界があるので、再生はプラグインやmciを使用する
事になります。
先ほど"EXEファイル内にPACKしたWAVファイルも再生できるやつかどうか確認してみてください。"
と言いましたが、このbcopy技を使えばそれに対応してなくてもいけますね。

長々と分かりにくい説明ですいません。



カズ

リンク

2006/6/21(Wed) 04:23:14|NO.1170

>I386さん、
何度もの質問に毎回丁寧にご回答してくださって、本当にありがとうございます(^^)

>EXEファイル内にPACKしたWAVファイルも再生できるやつかどうか
>確認してみてください。

まさにそれは未確認でした。さっそく調べます… ヘ(*¨)ノ

もう一つ別の問題が起こったのですが、
そちらの方もご協力いただければ幸いです。

新規スレッド「wavファイルの再生について」にて書いておりますが、
もしお暇がありましたらでけっこうですので見てやってください。



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