DXライブラリ上でピスコラ利用したい

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
玉井

DXライブラリ上でピスコラ利用したい

#1

投稿記事 by 玉井 » 7年前

すみません、ビジュアルスタジオ2010にて
C++(DXライブラリ)を使ってゲームを制作している初心者でございます。
サウンドなんですが、PXTONE(ピストンコラージュ)で出力出来るpttune形式のものを
再生させたいのです。
DXライブラリにピストンコラージュをインクルードする前準備?的な解説があまり無く
また、あっても初心者にはわかりづらく理解出来ません。
もう少しわかりやすく、詳細な説明を頂ければとこちらの掲示板に書き込みさせて頂きます。

ピストンコラージュをDXライブラリ上で利用するための前準備と、
その再生方法を教えて頂けないでしょうか?
お願い致します。

アバター
あたっしゅ
記事: 334
登録日時: 10年前
住所: 東京23区
連絡を取る:

Re: DXライブラリ上でピスコラ利用したい

#2

投稿記事 by あたっしゅ » 7年前

Pxtone Collage は、.wav でも出力できるようなので、
Program の練習ではなく、鳴らすのが目的なら、
.wav で出力したものを DxLib に読み込ませるのが手っ取り早いでしょう。
手提鞄あたっしゅ、[MrAtassyu] http://ameblo.jp/mratassyu/
手提鞄屋魚有店(てさげかばんやうおありてん)
レスがついていないものを優先して、レスしています。時々、見当外れなレスをします。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 10年前
住所: 東海地方
連絡を取る:

Re: DXライブラリ上でピスコラ利用したい

#3

投稿記事 by softya(ソフト屋) » 7年前

私もDXライブラリの機能を全面的に利用するためには、.wavか.oggのファイルにしてDXライブラリの機能で演奏することをオススメします。
少なくともpttune形式を再生することは初心者向きじゃないです。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

アバター
雨ガエル
記事: 34
登録日時: 8年前
住所: 新潟
連絡を取る:

Re: DXライブラリ上でピスコラ利用したい

#4

投稿記事 by 雨ガエル » 7年前

ピストンコラージュの作者さんのホームページに
Windowsアプリケーションでピストンコラージュ
の曲を再生するサンプルプロジェクトが用意されています。
サンプルを参考にしつつDXライブラリように少し修正すれば
再生できます。
http://hp.vector.co.jp/authors/VA022293 ... index.html [http://を追加 by softya(ソフト屋)]
(下のほうに小さくサンプルのダウンロードリンクがあります。)

なお、PXTONEの生成時にウィンドウハンドルを指定する必要があるので、
DXライブラリで使う場合は、GetMainWindowHandle() を指定します。

玉井

Re: DXライブラリ上でピスコラ利用したい

#5

投稿記事 by 玉井 » 7年前

現在、すでにDXライブラリのサウンド機能にて
wav、mp3等のファイルで鳴らしています。
それに満足いかないということで新たな方法を模索しておりました。

DXライブラリのサウンド機能では
その音源を途切れずループさせたい場合、
あらかじめ自分で違和感が無い様に区切ったBGMを流す方法しかありません。
しかし、それではどうしても繫がり部分には違和感が残るループ再生になり、
自分にとっては、そのBGMファイルを繰り返し再生している、というもので
理想のループ機能とは言えません。

その辺をpttune形式では、BGMのループはもちろん、
そのループさせる箇所を限定させたり、など、ファイルのBGM自体に設定出来、
そのファイルを再生させるだけで、自分の求めた構成のBGMが流せます。
そういう理由もあり、自分はどうしてもpttune形式で再生出来る様にしたいのです。

初心者向けでは無いというのはわかります。
ですが、もう少しだけ詳細な導入過程、その説明等をして頂ければ、
自分でなんとかたどり着いてみせますので、どうか教えて頂けないでしょうか?

ちなみに、ゲームの方はlistやvector、シングルトンなどを駆使したもので作っており、
まったくの初心者、ではありませんので、どうかよろしくお願い致します。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 10年前
住所: 東海地方
連絡を取る:

Re: DXライブラリ上でピスコラ利用したい

#6

投稿記事 by softya(ソフト屋) » 7年前

それであれば、雨ガエルさんの言われる通りのサンプルを使われると良いと思います。

Pxtone を使ったことはないですがソースから読み取れることは、
pxtone.hをインクルードしてpxtoneDLL.libをライブラリに追加します。 ← これらもファイル・コピー。
Debugフォルダのpxtone.dllを自分のexeのあるフォルダにコピーも必要です。

Pxtone はヘッダに書かれた関数で制御します。
・pxtone_Readyが初期化
・pxtone_Tune_Loadでロード
・pxtone_Tune_Startで開始
・pxtone_Tune_Fadeoutでフェードアウトと終了?
・pxtone_Tune_IsStreaming()で動作中か確認。
あとは、関数を自分で試しながらやっていくしか無いでしょう。

【追記】
これだけで使えると思いますが、分からないことは聞いてください。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

玉井

Re: DXライブラリ上でピスコラ利用したい

#7

投稿記事 by 玉井 » 7年前

レスをくださった方々、
どうもありがとうございます。


>pxtone.hをインクルードしてpxtoneDLL.libをライブラリに追加します。 ← これらもファイル・コピー。
>Debugフォルダのpxtone.dllを自分のexeのあるフォルダにコピーも必要です。

つまりは、
PxtoneをDXライブラリで利用するための前準備として
まずは

pxtone.hとpxtoneDLL.libをプロジェクトフォルダ内に、
pxtone.dllをプロジェクトフォルダ内のDebugフォルダの中に入れる。
プロパティから、ライブラリにpxtoneDLL.libを追加

これだけ、ということですか?

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 10年前
住所: 東海地方
連絡を取る:

Re: DXライブラリ上でピスコラ利用したい

#8

投稿記事 by softya(ソフト屋) » 7年前

準備としては、それだけです。
そこまで分かっているなら、私に改めて聞くより試してみたほうが早いと思いますよ。
とりあえず試して、問題の解決が難しそうなら聞いてください。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

ISLe
記事: 2648
登録日時: 10年前
連絡を取る:

Re: DXライブラリ上でピスコラ利用したい

#9

投稿記事 by ISLe » 7年前

ピストンコラージュ本体のアーカイブに含まれているpxtoneWin32.h,pxtoneWin32.dllが正式版ではないでしょうか。
libが付いてないので自作しないといけないみたいですが。

サンプルプロジェクトに含まれている方は仕様が古いし不具合もあるみたいです。

アバター
あたっしゅ
記事: 334
登録日時: 10年前
住所: 東京23区
連絡を取る:

Re: DXライブラリ上でピスコラ利用したい

#10

投稿記事 by あたっしゅ » 7年前

質問主の要望と異なるが、
OpenGL のプログラムに、Pxtone で音を鳴らせたら、メガデモになる、と思い、
サンプル・プログラムに手を加えてみた。

とりあえず、音楽が鳴って、OpenGL の窓が開くようになった。
窓が二つ開くが...
手提鞄あたっしゅ、[MrAtassyu] http://ameblo.jp/mratassyu/
手提鞄屋魚有店(てさげかばんやうおありてん)
レスがついていないものを優先して、レスしています。時々、見当外れなレスをします。

玉井

Re: DXライブラリ上でピスコラ利用したい

#11

投稿記事 by 玉井 » 7年前

ピストンコラージュv.0.9.2.5をダウンロードしまして、中を確認しました。
ISLeさんのおっしゃる通り、
最新版では、pxtone.hは「pxtoneWin32.h」、
pxtone.dllは「pxtoneWin32.dll」というファイル名になっている様です。

で、残りの、pxtoneDLL.libはどれなのか?なのですが、
ここで初心者が故に自分にはまったく見つけられない状態となり、
せっかくsoftyaさんたちの回答で前に進めそうだったのが
今、停滞し、うなだれております。

ファイルの中を探しましたが、pxtoneDLLというファイル自体が見当たらないので、
やはりISLeさんの「libが付いてないので自作しないといけない」ということだと思うのですが
「libを自作」という言葉も私にはピンと来ず、、、なにをどうすればいいのかわからず、、、、、


すみません、そのpxtoneDLL.libを自作する方法を教えて頂けませんでしょうか?

beatle
記事: 1280
登録日時: 9年前
住所: 埼玉
連絡を取る:

Re: DXライブラリ上でピスコラ利用したい

#12

投稿記事 by beatle » 7年前

DLLを動的に読み込んで使用するか、DLLからLIBを生成してLIBを静的にリンクするか、の2択です。
DLL単体からLIBを作る

アバター
雨ガエル
記事: 34
登録日時: 8年前
住所: 新潟
連絡を取る:

Re: DXライブラリ上でピスコラ利用したい

#13

投稿記事 by 雨ガエル » 7年前

DLLからLIB不ファイルを生成する方法です。
参考URLを貼っておきます。
http://s.ameblo.jp/nana-2007-july/entry ... 17623.html

参考URLを見た方が分かりやすいと思いますが、一応書きます。
① 作業用フォルダを作り、 dumpbin.exeとlib.exe、link.exe、mspdb80.dllとpxtoneWin32.dllを探してコピー。
② コマンドプロンプトを開き、①で作ったフォルダに移動。
(例: cドライブ直下にフォルダを作った場合 cd c:\フォルダ名 のコマンドで移動できます。)
③ コマンドプロンプトに dumpbin /exports dll名.dll > dll名.txt と入力。dll名.dllが生成されます。
④ 作業用フォルダにdll名.def という名前のファイルを新規作成。
⑤ ③で生成されたdll名.txt をテキストエディターで開き、関数名の部分をコピーしdll名.defに書き込んでいく。
すべての関数名を書いたら保存する。
(defファイルは先頭にEXPORTSと書き、改行して関数名を書いていきます。)

EXPORTS
関数名
関数名
関数名
.
.
.

⑥ コマンドプロンプトに lib /DEF:dll名.def /MACHINE:X86 /out:dll名.lib と入力する。

これでLIBを生成できると思います。

ISLe
記事: 2648
登録日時: 10年前
連絡を取る:

Re: DXライブラリ上でピスコラ利用したい

#14

投稿記事 by ISLe » 7年前

雨ガエル さんが書きました:① 作業用フォルダを作り、 dumpbin.exeとlib.exe、link.exe、mspdb80.dllとpxtoneWin32.dllを探してコピー。
② コマンドプロンプトを開き、①で作ったフォルダに移動。
スタートメニューにある『Visual Studioコマンドプロンプト』からコマンドプロンプトを起動すると、既にdumpbinやlibにパスが通っているので、pxtoneWin32.dllのある場所に移動するだけで作業開始できます。

玉井

Re: DXライブラリ上でピスコラ利用したい

#15

投稿記事 by 玉井 » 7年前

レスを皆様ありがとうございます。
しかし、すみません、、、、雨ガエルさんの説明通りにやっているつもりですが
エラーが出ました。どういう理由かわからないので見て頂けませんでしょうか?
一応、キャプチャしました。
http://dl1.getuploader.com/g/9%7Cnikoman/173/01.jpg

流れは、雨ガエルさんのレスでいう
①~⑥までの作業をきっちりやったつもりです。

ただ、個人的に作業中よく理解できずにいる箇所があり、
それはまず、①で探す「mspdb80.dll」が自分はvisualstudio2010を使用しているからか
「mspdb100.dll」だった(問題ないのでしょうか?)。
次に、 ③の「dll名.dllが生成されます」というところ(生成されるのはtxtのみだったので)。
そして、すべての作業解説に出ている「dll名」なんですが、
これはすべて対象であるpxtoneWin32.dllの、pxtoneWin32としましたが、それで良かったかどうか。
(最終的にpxtoneDLL.libを作ると思っていたので、この流れだと任意でファイル名を決められないい気が、、、 もしかして最後のout:dll名.libの部分のdll名だけ自分で決められますか? )

とりあえず、これらが理解できずに漠然と指示通り進めてしまいましたが
どうでしょうか。
お手数かけてすみません。。。。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 10年前
住所: 東海地方
連絡を取る:

Re: DXライブラリ上でピスコラ利用したい

#16

投稿記事 by softya(ソフト屋) » 7年前

defファイルですが関数名以外もコピーしている様に見えます。番号やアドレスまで含まれていませんか?
雨ガエルさんの紹介したサイトと見比べてみてください。

【補足】

>「mspdb80.dll」が自分はvisualstudio2010を使用しているからか「mspdb100.dll」だった(問題ないのでしょうか?)。

mspdb100.dllでOKです。

>(最終的にpxtoneDLL.libを作ると思っていたので、この流れだと任意でファイル名を決められないい気が、、、 もしかして最後のout:dll名.libの部分のdll名だけ自分で決められますか? )

決められます。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

玉井

Re: DXライブラリ上でピスコラ利用したい

#17

投稿記事 by 玉井 » 7年前

ご指摘通り、関数名以外をコピペしておりましたので
修正したところ、無事にlibファイルを生成できました。
softyaさん並びにレスをくださった方々、本当にどうもありがとうございました。

ISLe
記事: 2648
登録日時: 10年前
連絡を取る:

Re: DXライブラリ上でピスコラ利用したい

#18

投稿記事 by ISLe » 7年前

pxtoneDLL.libだとpxtoneDLL.dllを探しに行くのではないでしょうか。

【追記】
libのdllファイル名の指定が間違っていたので、添付ファイルを削除しました。
最後に編集したユーザー ISLe on 2013年4月06日(土) 17:37 [ 編集 1 回目 ]

玉井

Re: DXライブラリ上でピスコラ利用したい

#19

投稿記事 by 玉井 » 7年前

やはりlibだけ別名じゃダメなんですね??
ただ、pxtoneサイトで配布してあります「VCでピスコラ使用サンプル」の中身を見ると
pxtone.dll、pxtone.hとある中、libだけ、pxtoneDLL.libとファイル名が違うんですよね。
だから自分もそうしようかなと思ったのですが。
でも、ISLeさん、ありがとうございます。
ファイル名をそろえていた方がいいですよね、
せっかくなのでそれを使わせて頂きます。

ISLe
記事: 2648
登録日時: 10年前
連絡を取る:

Re: DXライブラリ上でピスコラ利用したい

#20

投稿記事 by ISLe » 7年前

dllのファイル名はdefファイルの先頭に

LIBRARY pxtoneWin32

というふうに指定するとのことです。

指定がないとdefファイル名の拡張子をdllにしたものになるのでわたしの指摘は誤りでした。
libのファイル名はLIBコマンド出力時でも後からでも好きなように変更できます。

先にアップロードしたものは勘違いしたまま作成したのでdllファイル名が間違っていました。ごめんなさい。
作成し直したものを添付しましたのでこちらを使ってください。
添付ファイル
pxtoneWin32.lib.zip
0.9.2.5付属のpxtoneWin32.dllから作成したVC用lib(修正版)
(1.46 KiB) ダウンロード数: 43 回

閉鎖

“C言語何でも質問掲示板” へ戻る