PSP xvi

PSPプログラミングを教えるブログ(本気で頑張る人アクセス大歓迎サイト)

PSP-X.gif

記事の間違いを報告  新アップローダー
記事修正情報 PSPプログラミング資料 自作ゲーム PSP用エミュレータ リンク

公認リンク
公式PSP専科 公式PSVita専科 はじめるPSPSDK PSP EXEC GAME M@STER PSP 猫山のYouTubeチャンネル

TAG
全記事にタグをつけています  http://nekoyama2gillien.blog36.fc2.com/?tag=タグ
PSP PSPプログラミング DXライブラリPortable OSLib ショートプログラム ハローワールド
PSP自作ゲーム PSP自作ソフト エミュレータ ゲームアーカイブス PSP動画
動画 初音ミク ミクミクダンス MMDドラマ ゲーム 魔法少女まどか☆マギカ 侵略!イカ娘
アイドルマスター

このブログについて

このブログでは、非公式のPSPソフト、いわゆる自作ソフト( PSP Homebrew )を作る事を目的とします。

著作権などの こまかい利用規約については、こちらを開いてお読み下さい

このブログについて知りたい方、初めて来訪された方はこちらを開いてお読みください
お問い合わせは 猫山猫宗(nekomune@gmail.com)までどうぞ


当ブログはリンクフリーです。ブログ名は、アルファベットで「PSP xvi」と書いて『ピーエスピー・エクシビ』とお読みください。
相互リンクを希望されるブログ運営者様は、ココで申請して下さい。


このブログで全記事から探し物の方は、ここをクリックして下さい。
http://nekoyama2gillien.blog36.fc2.com/?all

スポンサーサイト 

--/--/--
--. --:--

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

[edit]

CM: --
TB: --

page top

DXライブラリPortable を使ってプログラミングをしよう その1

まずは、mp3ファイルを再生するプログラムを作ることにします.
これをマスターできたら、mp3プレイヤー・アプリを作れるようになるかも知れませんね.

【 お約束事項 】
 DXライブラリPortable は MediaEngine側のCPUでmp3音声をデコードするコードを生成するのですc
 よって、スレッドの属性を ユーザーモードで書いてください.
 カスタムファームウェアのPSPの方は、リカバリーモードで Homebrew Game Folder を 1.50 Kernel では無い方(5.XX Kernel など)に設定してください.
 また、パソコンで WAVE から mp3 に変換する際は 「Lame Encoder」で行なって下さい.
 WAVE は、パソコンのシステム・サウンドファイルでも良いのですが サンプリング周波数が低かったり 再生時間が短かったりするので お手持ちの音楽CDアルバルを用意して下さい.

 mp3ファイルの作り方はこちらを参照のこと(Google検索)

 さて、mp3変換している間に EBOOT.PBP を作っちゃいましょう!
 使うライブラリは、最新版の DXライブラリPortable v0.5.7 です.
 >> DXライブラリPortable v0.5.7を導入しよう


ちゅうい!
 正常ビルドを確認したコンパイラは Minimalist PSPSDK v0.8.10 です

では、コピペ推奨で…… 今回は、各自コンパイルに挑戦してくださいっ

↓↓ファイル名は main.c でお願いします.

#include <dxlibp.h>
#include <pspaudiocodec.h>
#include <pspaudio.h>
#include <psputility.h>
#include <malloc.h>
#include <string.h>
#include <stdio.h>
#include <pspkernel.h>
#include <pspdisplay.h>
#include <pspuser.h>
#include <pspgu.h>
#include <pspctrl.h>


PSP_MODULE_INFO("PLaySound", 0, 0, 0);
PSP_MAIN_THREAD_ATTR(THREAD_ATTR_USER | THREAD_ATTR_VFPU);

int main()
{
int handle_01; // サウンドのハンドル

if(DxLib_Init() == -1) { // もしライブラリの初期化に失敗したら
goto EXIT; // ラベル:EXIT へ飛びます
}

//=================================================================================
// まずは 全てのサウンドハンドルを削除します
InitSoundMem();

// ストリーミング再生モードに設定します(チョイ読みしながら再生)
SetCreateSoundDataType(DX_SOUNDDATATYPE_FILE);

// 再生させる音声ファイルを指定します(mp3ファイルを用意してね)
if((handle_01 = LoadSoundMem("ms0:/MUSIC/a.mp3")) == -1) { // もしエラーが発生したら
goto EXIT; // ラベル:EXIT へ飛びます
}

// パンを中央に設定します
SetPanSoundMem( 0, handle_01);

// 再生しよう! 音声が鳴れば、大成功 v
PlaySoundMem( handle_01, DX_PLAYTYPE_NORMAL, TRUE);

// 再生が終わったら、サウンドハンドルの再生を停止します
StopSoundMem( handle_01 );

//---------------------------------------------------------------------------------

// ◆ 今度は、その音声ファイルを、パンを左にして再生してみます ◆

// パンを左側に設定します(範囲は -10000 ~ +10000)
SetPanSoundMem( -9000, handle_01);

// 再生しよう! 左から音声が鳴れば、大成功 v
PlaySoundMem( handle_01, DX_PLAYTYPE_NORMAL, TRUE);

// 再生が終わったら、サウンドハンドルの再生を停止します
StopSoundMem( handle_01 );

//---------------------------------------------------------------------------------

// ◆ 今度は、その音声ファイルを、パンを右にして再生してみます ◆

// パンを右側に設定します(範囲は -10000 ~ +10000)
SetPanSoundMem( 9000, handle_01);

// 再生しよう! 右から音声が鳴れば、大成功 v
PlaySoundMem( handle_01, DX_PLAYTYPE_NORMAL, TRUE);

// 再生が終わったら、サウンドハンドルの再生を停止します
StopSoundMem( handle_01 );

//---------------------------------------------------------------------------------

// 終わったので、サウンドハンドルを削除します
DeleteSoundMem( handle_01 );

//=================================================================================

// エラーが発生したら、すぐココに飛んできます
EXIT:;

DxLib_End(); // 終了します
return 0;
}



Makefile も コピペ推奨

TARGET = PLaySound
OBJS = main.o

PSPSDK=$(shell psp-config --pspsdk-path)
INCS = $(PSPSDK)/include $(PSPSDK)/DXP/include
INCDIR = $(INCS)

CFLAGS = -Wall -G0 -O3 -fomit-frame-pointer -mgp32 -mlong32

CXXFLAGS = $(CFLAGS) -fno-exceptions -fno-rtti
ASFLAGS = $(CFLAGS)

LIBDIR = $(PSPSDK)/DXP/lib
LDFLAGS =
LIBS = $(PSPSDK)/DXP/lib/dxlibp.a
LIBS += -lpspgu -lz -lm -lpsprtc -lpspaudio -lpspaudiocodec\
-lpsputility -lpspvalloc -lpsppower

EXTRA_TARGETS = EBOOT.PBP
PSP_EBOOT_TITLE = PLaySound
PSP_EBOOT_ICON = NULL
PSP_EBOOT_ICON1 = NULL
PSP_EBOOT_UNKPNG= NULL
PSP_EBOOT_PIC1 = NULL
PSP_EBOOT_SND0 = NULL

PSPSDK=$(shell psp-config --pspsdk-path)
include $(PSPSDK)/lib/build.mak

main.o : main.c


おまけの !_ビルド.bat

PATH=C:\pspsdk\bin\;C:\pspsdk\psp\bin\
DEL *.ELF
DEL *.SFO
DEL *.PBP
make
pause



【 このソースについて 】
ソースについてですが、メイン関数にこんなに長く書いてしまうのは本来はNGです.
全体の流れが分かるように、通して書いたまでです.
このソースが 理解できたらサブルーチンを作って分割してみるのを推奨します.

【 著作権とか 】
このプログラムコードは、DXライブラリPortable を使う想定で書いてあります.
もし、このソースをコンパイルして出来た実行モジュールを配布などするなら DXライブラリPortable の 著作権 表記指示に従ってくださるよう、お願いします.
私は、このソースに 著作権を設定しません.改造を推奨します、是非っ

【 ヒント 】
mp3ファイルの名前を日本語にした場合、コンパイルで 下記のような warning が発生することがあります.
main.c:35:34: warning: unknown escape sequence: '\217'
main.c:35:34: warning: unknown escape sequence: '\216'
↑↑ 原因は、その日本語文字列に「だめ文字」が含まれているからなので、【はるるん v0.3】でソースを修正して下さい.

実行結果が どうなるかは楽しみにとっておきますので、実行して確認して下さいませ.

解説は次回やります.


PSPプログラミング EBOOT.PBP 生成用 Makefile 記述方法
PSPプログラミング 正しい main( ) 関数の書き方を ご紹介
PSPプログラミング PSP の 1.50カーネルとか、3.xxカーネルとか についての講釈
PSPプログラミング 「CFW導入済み 全PSP」対応の Homebrew 作成方法
PSPプログラミング Windowsアプリ 制御文字リペア 【はるるん v0.3】 リリース!
PSPプログラミング PSPSDKにライブラリを追加しよう(4) DXLibP v0.5.7
PSPプログラミング DXライブラリPortable でプログラムの「核」を書く
PSPプログラミング DXライブラリPortable サウンド関数の解説(1)
PSPプログラミング DXライブラリPortable サウンド関数の解説(2)
PSPプログラミング DXライブラリPortable サウンド関数の解説(3)


スポンサーサイト

[edit]

CM: 0
TB: 0

page top

DXライブラリPortable は、PSPSDKに追加するライブラリなのでプログラミング言語の仕様が変わるとかいう問題はありません.

基本のC++言語を勉強していれば、プログラムを作ることは出来ます.
ただ、「DXライブラリPortable」を使用する際には決められた構文を書いてやる必要があるだけなので、ソレを覚えれば恐いモノなしです.


では、「DXライブラリPortable」を使ってのプログラムソースの書き方を ご紹介
↓↓ 赤い文字部分は変更しないで下さい。あとの文字部分は自由に書き換え可能です.

#include <dxlibp.h>

PSP_MODULE_INFO("PSP_HOMEBREW", 0, 0, 0);
PSP_MAIN_THREAD_ATTR(THREAD_ATTR_USER | THREAD_ATTR_VFPU);

int main(int argc, char *argv[])
{
if(DxLib_Init() == -1) {
// もしライブラリの初期化に失敗したら
goto EXIT; // ラベル:EXIT へ飛びます
}

NICEGAME( ); // 実プログラム本体

// エラーが発生したら、すぐココに飛んできます
EXIT:;
DxLib_End();
// 終了します
return 0;
}



このように、DxLib_Init() と DxLib_End() で はさむだけです.始めと終わりの書き方だけが指定されているのです.
あとは、ライブラリのマニュアルからコピペしてソースを作って、パラメータ部分を正しく入力してやれば、エラーの出ないプログラムソースになるかと思います.

マニュアル(ヘルプ)の参照方法は、DXライブラリPortable の導入記事で書いたように、index.html のショートカットを作ってデスクトップに貼ってあるかと存じます.
index.html のショートカットを右クリックして軽いブラウザで開いて まず 上の「モジュール」タブをクリックして「使用必須関数」をクリックしてみると、DXライブラリの必須関数が書かれていますので、コピペしてソースを作ります.


この記事のソースをコピペして雛形として保存しておいても良いかも知れません.

今回は、核の部分を書く、という記事だけで終わります(参照用).
次回、サウンド編について書きます.

【 関連記事 】
PSPプログラミング PSPSDKにライブラリを追加しよう(2) DXLibP v0.5.5
PSPプログラミング DXライブラリPortable を使ってみよう(1) mp3再生


[edit]

CM: 0
TB: 0

page top

2つ前の記事で、DXライブラリPortable v0.5.5 を使った mp3再生のプログラムソースを公開したので、今回は 解説その(2)です.解説その(1)は、「PSPプログラミング DXライブラリPortable でプログラムの「核」を書く」編です。

前回の要領で、マニュアル(ヘルプ)を開きます.
すると、[メインページ]のタブが開いたところに こう書いてあります.

>説明に(本家互換)とある関数はDXライブラリと挙動がほぼ同じですので、本家の関数リファレンスも参考にしてください.

本家は、Windows版「DXライブラリ」ですよ~
>> DXライブラリ 関数リファレンスページ
   ↑↑ このページに、本家Windows版のDXライブラリ関数の一覧がありますので、ブラウザのお気に入りに登録してください.
あと、ネット環境が必須ですよん(このブログを見てる時点でネット接続してるような?)

まず、PSP版の DXライブラリPortable のサウンド関数を見ます.v0.5.5 に どんなのがあるか調べましょう.

ヘルプから [モジュール]タブ → [サウンド関連]タブ の順に クリックして下さい.
11個の関数がありますね.

まず何を書くか?……… はい、サウンドの初期化関数です.
>int InitSoundMem (void)
  ↑ どうやら、コレらしいと判明
       →つまり、出だしは InitSoundMem (); と記述

次は、初期設定関数を記述します.
>> サウンドハンドルにパンを設定する int SetPanSoundMem (int pan, int handle)
>> サウンドハンドルの音量を変更する int ChangeVolumeSoundMem (int volume, int handle)
>> ループ位置を設定する        int SetLoopPosSoundMem (int looppos_s, int handle)
>> ループ位置を設定する        int SetLoopSamplePosSoundMem (int looppos, int handle)
>> LoadSoundMemの挙動を変更します int SetCreateSoundDataType (int type)
実際は、初期化したときに初期値が代入されるので、必要時以外はいじらなくて良いのです。

「パン」は、音声が出力される位置のこと.
「音量」は、その時のPSPにより異なりますが、[+][-]キーに触らないで音量を設定できるらしいのですが
      安全面を考えて「Middle」くらいの 127 とかで良いかも(後で確認する事にします)
「ループ」は、「繰り返し再生」のこと。初期値は「先頭の位置」の「0」です.
「LoadSoundMemの挙動」は、mp3プレイヤー・アプリはストリーミング再生をする方式なので「DX_SOUNDDATATYPE_FILE」を指定.

ここで、各関数の引数(ひきすう/パラメータ)を見ると「handle」という変数名があります.
「handle」==「ハンドル」です。DXライブラリPortable では、音声を「ハンドル」で管理します.
音声ファイルの指定の時に「ファイル名」を記述し、以降は「ハンドル」で音声を再生したり停止したりループしたりを行ないます.

C言語/C++言語で ファイルを 管理する「fp=fopen("ファイル名","r"); の fp の扱い感覚」で音声が制御できます.
サウンド関連の関数で、「handle」の値が返ってくる関数を調べると……
>> int LoadSoundMem ( const char * filename ) 音楽データを読み込みます(ハンドルを取得)
        ↑ どうやらコレみたいです
関数の名前は自由に書けますので、たまたまこういう名前になっているだけす.
この関数は、ストリーミング再生の時は ファイルの存在チェック と ハンドルの取得 を行なっている様です.
詳しく知りたい方はソースを順に追って調べてください(実際にプログラムを実行しながら追跡するのを、「トレースする」と言います).
プログラミング (コンピュータ) - Wikipedia の記事内でトレースを検索


ループ位置の設定関数が2個(2種類)あり、良く解らないので本家の関数マニュアルで詳しく調べます.
>> DXライブラリ 関数リファレンスページ
ブラウザにて、[CTRL]+[F]で検索窓を開いて「SetLoopSamplePosSoundMem」を放り込むと……

ふむふむ、再開位置を「サンプル数(音声データの先頭位置からのバイト数)」か「ミリ秒単位(1/1000秒単位)」か、好きな方で指定するのだと判明しました.
ここでは、先頭の「0」にしておきます 好きな関数で指定できますね.


ココまでの情報で、mp3ストリーミング再生処理を書いてみると……


    int Sound_handle;  // サウンドのハンドル変数

// まずは 全てのサウンドハンドルを削除します(初期化)
InitSoundMem();

// ストリーミング再生モードに設定します(チョイ読みしながら再生)
SetCreateSoundDataType(DX_SOUNDDATATYPE_FILE);

// 再生させる音声ファイルを指定します(mp3ファイルを用意してね)
if((Sound_handle = LoadSoundMem("ms0:/MUSIC/a.mp3")) == -1) { // もしエラーが発生したら
goto EXIT; // ラベル EXIT: へ飛びます
}

SetPanSoundMem( 0, Sound_handle ); // パンを中央に設定
ChangeVolumeSoundMem( 127, Sound_handle ); // 音量を「中」==「127」に設定
SetLoopSamplePosSoundMem( 0, Sound_handle ); // ループ再生位置を先頭に設定

サウンド再生関数(); // (仮)
サウンド終了処理(); // (仮)
サウンドハンドル解放関数(); // (仮)

// エラーが発生したら、すぐココに飛んできます
EXIT:;



どうですか? 理解できていますか?
私は DXライブラリPortable の開発者では無いので、マニュアルなどを調べながら書いています.
やりたい処理を規則に従って記述しています. まだ解ってない関数は、赤い文字の様に日本語で処理を書いています.
関数名が分からなくても、やりたい事を書けばいいのがテキストエディタの長所です.
関数の名前は、関数名が判明した時に書き直せば良いのです.
もし、理想の関数が無かったら、存在する関数を組み合わせて作るのが基本です.
楽しくPSPプログラミングしましょう.

if文に goto EXIT; を書いたので、飛び先の「ラベル EXIT:」も必ず記述しておきます.
[必須] C++言語での「ラベルの書き方」を学習しておいて下さい.

記事が長くなったので、今回は ここまでです.
質問とか無いですか?


【 関連記事 】
PSPプログラミング PSPSDKにライブラリを追加しよう(2) DXLibP v0.5.5
PSPプログラミング DXライブラリPortable を使ってみよう(1) mp3再生
PSPプログラミング DXライブラリPortable でプログラムの「核」を書く
PSPプログラミング DXライブラリPortable サウンド関数の解説(2)
PSPプログラミング DXライブラリPortable サウンド関数の解説(3)
PSPプログラミング DXライブラリPortable サウンド関数で「ドドド」
PSPプログラミング DXライブラリPortable サウンド「ドドド」解説

[edit]

CM: 6
TB: 0

page top

まずは、お知らせから……

・サウンド初期化関数ですが、「InitSoundMem(); は不要です」とのコメントを憂煉氏より頂きました.
 作者さんの意見なので間違いは無いでしょう.

「DX Library Portable ドキュメント」index.html の呼び名を「DXPヘルプ」に統一
・ヘルプやマニュアルといった言い方で、統一されてなかったので、「DXPヘルプ」という呼び方にします.
 ダウンロードファイル名には、help の文字があったのでヘルプと呼称するのだ.


では、本編です.
今回は、mp3ファイルの再生と停止とサウンドハンドルの解放の部分です.

「DXPヘルプ」を良く読むと、こう書いてあります.

LoadSoundMem(); で読み込んだファイルを
PlaySoundMem(); で再生する

mp3ファイルの再生関数は PlaySoundMem(); と判明です.

パラメータには、「演奏が終わるまで待つ」の「DX_PLAYTYPE_NORMAL」を指定する事にします.

< 使用例 >
PlaySoundMem( Sound_Handle, DX_PLAYTYPE_NORMAL, TRUE );

PlaySoundMem() の第1、第2パラメータ値は、「DXPヘルプ」を見れば解りますね.

問題は、第3パラメータです.
「rewindflag 最初から再生させるかどうか」のフラグなので「TRUE」もしくは「FALSE」で指定します.
お解り頂けましたでしょうか?

フラグになっているものは「TRUE」か「FALSE」で良いと思います.


次は、サウンド再生の停止を.

StopSoundMem( Sound_handle );
問題ないですね.


サウンドハンドルの解放(削除)

DeleteSoundMem( Sound_handle );
問題ないですね.



では、ココまでの情報で mp3ファイルの再生が出来るので最小限の構成で書いてみます.


{
int Sound_handle; // サウンドハンドル の 変数

// ストリーミング再生モードに設定します(チョイ読みしながら再生)
SetCreateSoundDataType( DX_SOUNDDATATYPE_FILE );

// 再生させる音声ファイルを指定します
if((Sound_handle = LoadSoundMem("ms0:/MUSIC/a.mp3")) == -1) { // もしエラーが発生したら
goto EXIT; // ラベル EXIT: へ飛びます
}

// mp3ファイルを再生します
PlaySoundMem( Sound_handle, DX_PLAYTYPE_NORMAL, TRUE );

// 再生を停止します
StopSoundMem( Sound_handle );

EXIT:
// サウンドハンドルを削除します
DeleteSoundMem( Sound_handle );
}


ラベル「EXIT:」の後ろにセミコロンが付いていませんが、省いただけです.
間違いではありませんよ.


あとは、パンや音量やループ位置の設定を付け加えれば良いと思います.


次回はサブルーチン化してみます.


【 関連記事 】

PSPプログラミング PSPSDKにライブラリを追加しよう(2) DXLibP v0.5.5
PSPプログラミング DXライブラリPortable を使ってみよう(1) mp3再生
PSPプログラミング DXライブラリPortable でプログラムの「核」を書く
PSPプログラミング DXライブラリPortable サウンド関数の解説(1)
PSPプログラミング DXライブラリPortable サウンド関数の解説(2)
PSPプログラミング DXライブラリPortable サウンド関数の解説(3)
PSPプログラミング DXライブラリPortable サウンド関数で「ドドド」
PSPプログラミング DXライブラリPortable サウンド「ドドド」解説

[edit]

CM: 0
TB: 0

page top

【 突然、この記事へ来た人の為に書いておくこと 】
 下記のソースは、DXライブラリPortable というライブラリを使用する事を前提に書いています.PSP用です.

今回のテーマは、「サブルーチン化」です.

何をサブルーチン化するか、決めます.
まぁ、サウンドの出力部分なのですが、「サウンドハンドル」と「パン」と「音量」をパラメータで渡すと MP3ファイル を再生してくれるのを作ります.

問題ないと思うので、そのサブルーチンだけのソースを書いてみます.


////////////////////////////////////////////////////////////////////////
// MP3ファイルを再生するサブルーチン(簡易チェック付き)
////////////////////////////////////////////////////////////////////////

int PlayMP3(Handle, Pan, Volume)
// 引数の説明とか (変数名の後はセミコロンですよ~)
int Handle; // サウンドハンドル
int Pan; // パン
int Volume; // 音量
{
// 規定範囲外の値ならエラー(-1)とする
if( (Handle == -1) // サウンドハンドル
||(Pan < -10000)||(10000 < Pan) // パン
||(Volume < 0)||(255 < Volume) ) { // 音量
return(-1);
}

// 音量を設定します
ChangeVolumeSoundMem( Volume, Handle );

// パンを設定します
SetPanSoundMem( Pan, Handle );

// mp3ファイルを再生します
PlaySoundMem( Handle, DX_PLAYTYPE_NORMAL, TRUE );

// 再生を停止します
StopSoundMem( Handle );

return 0; // 値を返す関数では、必ず「return」を記述すること
}



この関数ですが、正常終了すると 0 が返り、値を間違えると -1 が返ります(バレバレ).

次回は、これらの関数を組み合わせて、ちょっとしたプログラムを書いてみます.


【 関連記事 】
PSPプログラミング PSPSDKにライブラリを追加しよう(2) DXLibP v0.5.5
PSPプログラミング DXライブラリPortable を使ってみよう(1) mp3再生
PSPプログラミング DXライブラリPortable でプログラムの「核」を書く
PSPプログラミング DXライブラリPortable サウンド関数の解説(1)
PSPプログラミング DXライブラリPortable サウンド関数の解説(2)
PSPプログラミング DXライブラリPortable サウンド関数の解説(3)
PSPプログラミング DXライブラリPortable サウンド関数で「ドドド」
PSPプログラミング DXライブラリPortable サウンド「ドドド」解説

[edit]

CM: 0
TB: 0

page top

キミは このタイトルを見た瞬間、「やれやれだぜ」と言う………。

やっぱし、ジョジョ好きなんですわwww
デスクトップでもジョジョネタやりましたが、MP3でもジョジョネタやります(えっへん)

ダウンロード
ちゅうい : PSPを 3.xx以降カーネルにしてから実行してください
(リカバリーメニューで Homebrew Game Folder を 5.XX Kernel に設定)

ソースコードを見たい方は、続きをドウゾ。


【 関連記事 】
PSPプログラミング PSPSDKにライブラリを追加しよう(4) DXLibP v0.5.7
PSPプログラミング DXライブラリPortable を使ってみよう(1) mp3再生
PSPプログラミング DXライブラリPortable でプログラムの「核」を書く
PSPプログラミング DXライブラリPortable サウンド関数の解説(1)
PSPプログラミング DXライブラリPortable サウンド関数の解説(2)
PSPプログラミング DXライブラリPortable サウンド関数の解説(3)
PSPプログラミング DXライブラリPortable サウンド関数で「ドドド」
PSPプログラミング DXライブラリPortable サウンド「ドドド」解説


-- 続きを読む --

[edit]

CM: 0
TB: 0

page top

・PSP音声「ドドド」ダウンロードの記事に、全ソースコード追加(「続きを読む」にて読めます)
・ソースを修正(アーカイブファイル名は同じ)
・再アップロードしました


まぁ、詳しくは書きませんよ。

やっている事は、「ストリーミング再生」では無くて「メモリに読み込みしてから再生」モードで、「ドドド」音声を、左から右、右から左、位置を中央にして音量を小から大へ、という作業です。
この辺は、ヘッドフォンで聴かないと解らないかと思いますよ?

勉強熱心な方は理解できたかと思ってます。

ちなみに、この「ドドド」の声は初音ミクなんですよ。

テンポ225、オクターブ3の「ドミミ」で喋らせたのです、ハイ。
ソレをWAVE出力してSoundEnginで加工してLAMEでMP3化。

そうそう、MP3にはID3タグという情報を書き込めるので、興味ある人はSuperTagEditor使ってみ。

iTunes と Windows Media Player ではID3タグの文字コードが違う件
→ 「はてな」での解決策

次回は、DXライブラリPortable で PNG画像の表示をやります。


【 関連記事 】
PSPプログラミング PSPSDKにライブラリを追加しよう(2) DXLibP v0.5.5
PSPプログラミング DXライブラリPortable を使ってみよう(1) mp3再生
PSPプログラミング DXライブラリPortable でプログラムの「核」を書く
PSPプログラミング DXライブラリPortable サウンド関数の解説(1)
PSPプログラミング DXライブラリPortable サウンド関数の解説(2)
PSPプログラミング DXライブラリPortable サウンド関数の解説(3)
PSPプログラミング DXライブラリPortable サウンド関数で「ドドド」
PSPプログラミング DXライブラリPortable サウンド「ドドド」解説

[edit]

CM: 3
TB: 0

page top


h o m e |


 

2017-07