VBMP3関数リファレンス ■初期設定値 VBMP3 の初期設定を以下に示す。 詳細については、各関数説明を参照 ・VBMP3設定(vbmp3_setVbmp3Option) inputBlock = 30[フレーム] outputBlock = 20[フレーム] inputSleep = 5[ms] outputSleep = 0[ms] ・デコードエンジン設定(vbmp3_setDecodeOption) reduction = 0(レート変更無し) convert = 0(出力チャンネル数変更無し) freqLimit = 24000[Hz] ・グラフィックイコライザ設定(vbmp3_setEqualizer) 各成分すべて 0 ・ピッチ設定(vbmp3_setPitch) 100[%] ・フェードイン設定(vbmp3_setFadeIn) 0(通常開始) ・フェードアウト設定(vbmp3_setFadeOut) 0(通常開始) ・再生速度設定(vbmp3_setStepPitch) 1[倍速] ・演奏時間の取得設定(vbmp3_setOverTime) 0(総演奏時間以上はカウントしない) ・ソフトボリュ−ム設定(vbmp3_setSoftVolume) 左右ともに 100[%] ・LYRICS3 タグ挿入位置設定(vbmp3_setLyrics3InsField) 0(ILYC に挿入) ・LYRICS3 タグ自動読込設定(vbmp3_setLyrics3Use) 0(自動読込しない) ・スペクトラムアナライザ用窓関数設定(vbmp3_setFftWindow) 1(hanning) ・カラオケタグ使用設定(vbmp3_setKaraokeUse) 0(未使用) ・歌詞表示時間設定(vbmp3_setLyricsTime) 0(Winamp時間使用) ・WAVE出力デバイス設定(vbmp3_setWaveOutDeviceId) WAVE_MAPPER ・タイムタグ無し行読込設定(vbmp3_setNotTagLyricsLine) 1(タイムタグ無し行の読込有り) ・SIフィールド出力設定(vbmp3_setNotDataSiWrite) 1(すべてのSIフィールドを出力) ・再生時フレーム取得方法設定(vbmp3_setFrameReadFlag) 0(通常) ・タイムタグ補正設定(vbmp3_setLyricsAdjustTime) 0[ms] ・シーク設定(vbmp3_setSeekPlay) 0(自動再生しない) ・歌詞行先行読込設定(vbmp3_setLyricsNextAdjustTime) 0[ms] ・高速シーク設定(vbmp3_quickSeek) 1(使用) ・@タグ読込設定(vbmp3_useAtMarkTag) 0(処理無し) ■関数仕様 関数名 : vbmp3_init() 機能 : VBMP3.DLL の初期化 引数 : なし 戻り値 : True = 成功 False = 失敗 説明 : デコードエンジンなどの初期化を行います。 プログラム開始時に必ず実行して下さい。 【使用例】 Call vbmp3_init ------------------------------------------------------ 関数名 : vbmp3_free() 機能 : VBMP3.DLL 使用メモリの開放 引数 : なし 戻り値 : True = 成功 False = 失敗 説明 : VBMP3.DLL で使用しているメモリの開放を行います。 プログラムを終了する前に必ず実行して下さい。 【使用例】 Call vbmp3_free ------------------------------------------------------ 関数名 : vbmp3_open() 機能 : ファイルの読込 引数 : pszName = ファイル名(パスが異なる場合はパスも指定してください) pInfo = inputInfo 構造体変数 戻り値 : True = 成功 False = 失敗 説明 : ファイルの読込を行います。 inputInfo 構造体 説明 : MPEG Audioファイルを読み込み、タグ情報等を取得します。 ※WAVEファイルでは、bitrate に bit/sample の値、 szTrackName, szTrackName に「WAVE_FORMAT_PCM」が 入力されます。 【定義】 Public Type InputInfo szTrackName As String * 128 '曲名 szArtistName As String * 128 'アーティスト名 channels As Long 'チャンネル数 bitRate As Long 'ビットレート(kbit/s) samplingRate As Long 'サンプルレート(Hz) totalSec As Long '演奏時間(s) End Type 【使用例】 Dim data As InputInfo 'ファイルの読込 If vbmp3_open("C:\hoge.mp3", data) = False Then MsgBox "Open Error" Exit Sub End If ------------------------------------------------------ 関数名 : vbmp3_close() 機能 : ファイルを閉じる 引数 : なし 戻り値 : True = 成功 False = 失敗 説明 : 読込んだファイルを閉じます。 連続再生をするときなど、vbmp3_open の前に実行してください。 【使用例】 Call vbmp3_close ------------------------------------------------------ 関数名 : vbmp3_getState() 機能 : 再生状態と再生時間の取得 引数 : sec = 再生時間取得用 戻り値 : 0 = 停止中 1 = 再生中 2 = 一時停止中 説明 : 再生状態と再生経過時間を取得します。 【使用例】 Dim state As Long Dim sec As Long state = vbmp3_getState(sec) ------------------------------------------------------ 関数名 : vbmp3_play() 機能 : 読み込んだファイルの再生 引数 : なし 戻り値 : True = 成功 False = 失敗 説明 : 読込んだファイルを再生します。 【使用例】 Call vbmp3_play ------------------------------------------------------ 関数名 : vbmp3_stop() 機能 : 再生の停止 引数 : なし 戻り値 : True = 成功 False = 失敗 説明 : 再生中の曲を停止します。 【使用例】 Call vbmp3_stop ------------------------------------------------------ 関数名 : vbmp3_pause() 機能 : 再生の一時停止 引数 : なし 戻り値 : True = 成功 False = 失敗 説明 : 再生中の曲を一時停止します。 【使用例】 Call vbmp3_pause ------------------------------------------------------ 関数名 : vbmp3_restart() 機能 : 一時停止状態の解除 引数 : なし 戻り値 : True = 成功 False = 失敗 説明 : 一時停止中の曲を再生再開します。 【使用例】 Call vbmp3_restart ------------------------------------------------------ 関数名 : vbmp3_seek() 機能 : 演奏位置の移動 引数 : sec = 再生位置(秒) 戻り値 : True = 成功 False = 失敗 説明 : 再生位置を移動します。 【使用例】 Call vbmp3_seek(10) ------------------------------------------------------ 関数名 : vbmp3_setVolume() 機能 : ボリュームの変更 引数 : lVol = 左側のボリューム rVol = 右側のボリューム 戻り値 : True = 成功 False = 失敗 説明 : 左/右のボリュームを調節します。 音源によっては片方しか効かない場合があります。 【使用例】 Call vbmp3_setVolume(70, 70) ------------------------------------------------------ 関数名 : vbmp3_getVersion() 機能 : VBMP3 のバージョン取得 引数 : なし 戻り値 : バージョン番号 * 100 (1.00 なら 100) 説明 : VBMP3のバージョンを取得します。 【使用例】 Dim VerNo As Long VerNo = vbmp3_getVersion() ------------------------------------------------------ 関数名 : vbmp3_getTagInfo() 機能 : MPEG Audio ファイルのタグ情報取得 引数 : pTagInfo = TAG_INFO 構造体変数 戻り値 : True = 成功 False = 失敗 説明 : MPEG Audio ファイルのタグ情報を取得します。 TAG_INFO 構造体 説明 : MPEG Audio ファイルのタグ情報を格納します。 【定義】 Public Type TAG_INFO szTrackName As String * 128 '曲名 szArtistName As String * 128 'アーティスト名 szAlbumName As String * 128 'アルバム名 szYear As String * 5 'リリース年号 szComment As String * 128 'コメント genre As Long 'ジャンル szGenreName As String * 128 'ジャンル名 End Type 【使用例】 Dim TagData As TAG_INFO 'タグ情報取得 If vbmp3_getTagInfo(TagData) = False Then Exit Sub ------------------------------------------------------ 関数名 : vbmp3_getMpegInfo() 機能 : MPEG Audio ファイルのMPEGヘッダ情報取得 引数 : pMpegTagInfo = MPEG_INFO 構造体変数 戻り値 : True = 成功 False = 失敗 説明 : MPEG Audio ファイルのヘッダ情報を取得します。 ※MPEG2.5 のバージョンは「3」と取得されます MPEG_INFO 構造体 説明 : MPEG Audio ファイルのMPEGヘッダ情報を格納します。 【定義】 Public Type MPEG_INFO version As Long 'バージョン layer As Long 'レイヤ crcDisable As Long 'エラー保護 extension As Long 'エクステンション mode As Long 'チャンネルモード copyright As Long '著作権 original As Long 'オリジナル emphasis As Long 'エンフォシス channels As Long 'チャンネル数 bitrate As Long 'ビットレート(kbit/s) samplingRate As Long 'サンプルレート(Hz) fileSize As Long 'ファイルサイズ(Byte) frames As Long 'フレーム数 totalSec As Long '演奏時間(s) End Type 【使用例】 Dim MpegData As MPEG_INFO 'mpeg ファイル情報取得 If vbmp3_getMpegInfo(MpegData) = False Then Exit Sub ------------------------------------------------------ 関数名 : vbmp3_setVbmp3Option() 機能 : VBMP3 の各設定値設定 引数 : pVbmp3Option = VBMP3_OPTION 構造体変数 戻り値 : True = 成功 False = 失敗 説明 : 読み込みフレーム数などの値を設定します。 ※この関数は停止状態の時のみ実行できます。 VBMP3_OPTION 構造体 説明 : 読み込みフレーム数などの値を格納します。 inputBlock : 入力フレーム数 普通は変更しなくても大丈夫です。 outputBlock : 出力フレーム数 この値を変更することで負荷が高いときの 音飛びを軽減できます。 設定値は入力フレーム数以下にして下さい。 inputSleep : 入力直後のスリープ時間(ミリ秒) 長い方が CPU 負荷を軽減できますが、長すぎると 音飛びの原因となります。 1〜50 ミリ秒位が最適だと思います。 outputSleep : 出力時のスリープ時間(ミリ秒) ※それぞれの設定値によっては音飛びなどでまともに 再生出来なくなることがあります。 設定には注意してください。 【定義】 Public Type VBMP3_OPTION inputBlock As Long '入力フレーム数[Default = 30] outputBlock As Long '出力フレーム数[Default = 20] inputSleep As Long '入力直後のスリープ時間(ミリ秒)[Default = 5] outputSleep As Long '出力直後のスリープ時間(ミリ秒)[Default = 0] End Type 【使用例】 Dim opt As VBMP3_OPTION opt.inputBlock = 128 opt.inputSleep = 30 opt.outputSleep = 0 If vbmp3_setVbmp3Option(opt) = False Then MsgBox "error" End If ------------------------------------------------------ 関数名 : vbmp3_getVbmp3Option() 機能 : VBMP3 の各設定値取得 引数 : pVbmp3Option = VBMP3_OPTION 構造体変数 戻り値 : なし 説明 : 読み込みフレーム数などの値を取得します。 【使用例】 Dim opt As VBMP3_OPTION Call vbmp3_getVbmp3Option(opt) ------------------------------------------------------ 関数名 : vbmp3_setDecodeOption() 機能 : デコードエンジンの各設定値設定 引数 : pDecOption = DEC_OPTION 構造体変数 戻り値 : True = 成功 False = 失敗 説明 : 再生サンプリングレートなどの値を設定します。 ※この関数は停止状態の時のみ実行できます。 また、関数実行後は vbmp3_open を再実行してください。 未実行で再生を行った場合は、正常に再生されません。 (reduction = 1 にして、そのまま再生時は2倍速演奏) しかし、倍速演奏などに利用したい場合は、そのまま再生しても 問題はありません。 DEC_OPTION 構造体 説明 : 再生サンプリングレートなどの値を格納します。 reduction : ダウンサンプリング(0:1/1 1:1/2 2:1/4 [Default = 0]) データのサンプリングレートを下げて読み込みます。 convert : 出力チャンネル(0:ステレオ 1:モノラル[Default = 0]) 読み込むチャンネル数を設定します。 モノラルの場合読み込むデータ量が1/2となります。 freqLimit : 出力サンプリングレート[Default = 24000] 出力時のサンプリングレートを設定します。 【定義】 Public Type DEC_OPTION reduction As Long 'ダウンサンプリング 0:1/1 1:1/2 2:1/4 [Default = 0] convert As Long '出力チャンネル 0:ステレオ 1:モノラル[Default = 0] freqLimit As Long '出力レート[Default = 24000] End Type 【使用例】 Dim opt As DEC_OPTION opt.reduction = 0 opt.convert = 0 opt.freqLimit = 24000 If vbmp3_setDecodeOption(opt) = False Then MsgBox "error" End If ------------------------------------------------------ 関数名 : vbmp3_getDecodeOption() 機能 : デコードエンジンの各設定値取得 引数 : pDecOption = DEC_OPTION 構造体変数 戻り値 : なし 説明 : 再生サンプリングレートなどの値を取得します。 【使用例】 Dim opt As DEC_OPTION Call vbmp3_getDecodeOption(opt) ------------------------------------------------------ 関数名 : vbmp3_getGenre() 機能 : ジャンル番号よりジャンル名取得 引数 : pTagInfo = TAG_INFO 構造体変数 戻り値 : True = 成功 False = 失敗 説明 : ジャンル番号よりジャンル名を取得します。 【使用例】 Dim TagData As TAG_INFO TagData.genre = 10 Call vbmp3_getGenre(TagData) ------------------------------------------------------ 関数名 : vbmp3_setTagInfo() 機能 : MPEG Audio ファイルのタグ情報書き込み 引数 : pszName = ファイル名(パスが異なる場合はパスも指定してください) pTagInfo = TAG_INFO 構造体変数 tagSet = 1 : DLL 内部の TAG 情報書き換え(再生中ファイル時指定) 0 : 〃 変更無し 省略可能,デフォルト 0 tagAdd = 1 : ID3Tag v1 が存在しないとき追加する 0 : 〃 追加しない 省略可能,デフォルト 0 戻り値 : True = 成功 False = 失敗 説明 : MPEG Audio ファイルにタグ情報を書き込みます。 【使用例】 Dim TagData As TAG_INFO TagData.szTrackName = "TrackName" '30文字目以降切り捨て TagData.szArtistName = "ArtistName" '30文字目以降切り捨て TagData.szAlbumName = "AlbumName" '30文字目以降切り捨て TagData.szYear = "199909" '4文字目以降切り捨て TagData.szComment = "Comment" '30文字目以降切り捨て TagData.genre = 50 '0〜255 '再生中ファイルの変更 Call vbmp3_setTagInfo("C:\hoge.mp3", TagData, 1, 1) ------------------------------------------------------ 関数名 : vbmp3_getFileInfo() 機能 : MPEG Audio ファイルのファイル情報取得 引数 : pszName = ファイル名(パスが異なる場合はパスも指定してください) pTagInfo = TAG_INFO 構造体変数 pMpegInfo = MPEG_INFO 構造体変数 戻り値 : True = 成功 False = 失敗 説明 : MPEG Audio ファイルのファイル情報取得取得します。 ※MPEG2.5 のバージョンは「3」と取得されます 【使用例】 Dim TagData As TAG_INFO Dim MpegData As MPEG_INFO 'ファイル情報取得 Call vbmp3_getFileInfo("C:\hoge.mp3", TagData, MpegData) ------------------------------------------------------ 関数名 : vbmp3_getFileTagInfo() 機能 : MPEG Audio ファイルのタグ情報取得 引数 : pszName = ファイル名(パスが異なる場合はパスも指定してください) pTagInfo = TAG_INFO 構造体変数 戻り値 : True = 成功 False = 失敗 説明 : MPEG Audio ファイルのタグ情報取得取得します。 【使用例】 Dim TagData As TAG_INFO 'タグ情報取得 Call vbmp3_getFileTagInfo("C:\hoge.mp3", TagData) ------------------------------------------------------ 関数名 : vbmp3_getListInfo() 機能 : RIFF 形式 MPEG Audio ファイルのLISTチャンク情報取得 引数 : pListInfo = LIST_INFO 構造体変数 戻り値 : True = 成功 False = 失敗 説明 : RIFF 形式 MPEG Audio ファイルのLISTチャンク情報取得 LIST_INFO 構造体 説明 : RIFF 形式 MPEG Audio ファイルのLISTチャンク情報を格納します。 【定義】 Public Type LIST_INFO INAM As String * 128 '曲名 IART As String * 128 'アーティスト名 IPRD As String * 128 '製品名 ICMT As String * 128 'コメント文字列 ICRD As String * 128 'リリース年号 IGNR As String * 128 'ジャンル名 ICOP As String * 128 '著作権 IENG As String * 128 'エンジニア ISRC As String * 128 'ソース ISFT As String * 128 'ソフトウェア IKEY As String * 128 'キーワード ITCH As String * 128 '技術者 ILYC As String * 128 '歌詞 ICMS As String * 128 'コミッション End Type 【使用例】 Dim listData As LIST_INFO Call vbmp3_getListInfo(listData) ------------------------------------------------------ 関数名 : vbmp3_getFileInfo2() 機能 : MPEG Audio ファイル情報取得 引数 : pszName = ファイル名(パスが異なる場合はパスも指定してください) pTagInfo = TAG_INFO 構造体変数 pMpegInfo = MPEG_INFO 構造体変数 pListInfo = LIST_INFO 構造体変数 戻り値 : True = 成功 False = 失敗 説明 : MPEG Audio ファイル情報を取得します。 ※MPEG2.5 のバージョンは「3」と取得されます 【使用例】 Dim TagData As TAG_INFO Dim MpegData As MPEG_INFO Dim listData As LIST_INFO 'タグ情報取得 Call vbmp3_getFileInfo2("C:\hoge.mp3", TagData, MpegData, listData) ------------------------------------------------------ 関数名 : vbmp3_changeRmp() 機能 : 標準MP3ファイルを RIFF MP3形式ファイルに変換 引数 : pszName = ファイル名(パスが異なる場合はパスも指定してください) 戻り値 : True = 成功 False = 失敗 説明 : 標準MP3ファイルを RIFF MP3形式ファイルに変換します。 この時、SIフィールドが自動付加されます。 【使用例】 'MP3 -> RMP Call vbmp3_changeRmp("C:\hoge.mp3") ------------------------------------------------------ 関数名 : vbmp3_changeWav() 機能 : 標準MP3ファイルを RIFF WAVE形式ファイルに変換 引数 : pszName = ファイル名(パスが異なる場合はパスも指定してください) 戻り値 : True = 成功 False = 失敗 説明 : 標準MP3ファイルを RIFF WAVE形式ファイルに変換します。 この時、SIフィールドが自動付加されます。 【使用例】 'MP3 -> WAV Call vbmp3_changeWav("C:\hoge.mp3") ------------------------------------------------------ 関数名 : vbmp3_changeMp3() 機能 : RIFF形式ファイルを標準MP3ファイルに変換 引数 : pszName = ファイル名(パスが異なる場合はパスも指定してください) 戻り値 : True = 成功 False = 失敗 説明 : RIFF形式ファイルを標準MP3ファイルに変換します。 この時、SIフィールド内容は削除されます。 【使用例】 'RIFFファイル -> MP3 Call vbmp3_changeMp3("C:\hoge.rmp") ------------------------------------------------------ 関数名 : vbmp3_cutMacBinary() 機能 : ファイル内のマックヘッダ除去 引数 : pszName = ファイル名(パスが異なる場合はパスも指定してください) 戻り値 : True = 成功 False = 失敗 説明 : ファイル内のマックヘッダを除去します。 【使用例】 'マックヘッダ除去 Call vbmp3_cutMacBinary("C:\hoge.mp3") ------------------------------------------------------ 関数名 : vbmp3_setListInfo() 機能 : SIフィールド登録・更新 引数 : pszName = ファイル名(パスが異なる場合はパスも指定してください) 戻り値 : True = 成功 False = 失敗 説明 : SIフィールドの登録・更新をします。 【使用例】 Dim ListData As LIST_INFO ListData.INAM = "タイトル" ListData.IART = "アーティスト" 'SIフィールド変更 Call vbmp3_setListInfo("C:\hoge.mp3", ListData) ------------------------------------------------------ 関数名 : vbmp3_getFileType() 機能 : ファイルの種類取得 引数 : pszName = ファイル名(パスが異なる場合はパスも指定してください) 戻り値 : 以下の内容の合計値 0 標準MP3ファイル 1 Riff WAVE形式 2 Riff MP3形式 4 ID3 v2 Tag 有り 8 Macヘッダ有り 16 ID3 v1 Tag 有り 32 LYRICS3 v2.00 有り 64 標準WAVEファイル(リアルPCM) 説明 : RMP などのファイル形式やタグの有無などを取得します。 【使用例】 Dim fType As Long 'ファイルタイプ取得 fType = vbmp3_getFileType("C:\hoge.mp3") ------------------------------------------------------ 関数名 : vbmp3_callback() 機能 : コールバック関数設定 引数 : コールバック関数のアドレス(AddressOf 指定) 戻り値 : True = 成功 False = 失敗 説明 : コールバック関数を設定します。 AddressOf 関数を使用するため VB5 以降のみ使用可能です。 ※この関数は停止状態の時のみ実行できます。 【コールバック関数】 関数名 : 名称任意のSubプロシージャ 機能 : VBMP3.DLL より再生時間、ステータスなどを受信する 引数 : id MSG_EROOR = エラー(0) MSG_STOPING = 停止(1) MSG_PLAYING = 再生中(2) MSG_PAUSING = 一時停止(3) MSG_PLAYDONE = 再生終了(4) param 演奏時間(id = MSG_PLAYING) 戻り値 : 無し 説明 : 受信用のコールバック関数です。 かならず、標準モジュール内に作成してください。 また、コールバック関数内では MagBox などの処理を 止める関数を使用できません。 【使用例】 'コールバック関数指定 Call vbmp3_callback(AddressOf vbmp3_Proc) 【コールバック関数例】 Public Sub vbmp3_Proc(ByVal id As Long, ByVal param As Long) Select Case id Case MSG_ERROR 'エラー時の処理 Case MSG_PLAYING '演奏時間変更時の処理 Case MSG_PAUSING '一時停止時の処理 Case MSG_STOPING '停止時の処理 Case MSG_PLAYDONE '再生終了時の処理 End Select End Sub ------------------------------------------------------ 関数名 : vbmp3_decodeWave() 機能 : MPEG Audio ファイルをWAVEファイルにデコード 引数 : pszWaveName = 出力WAVEファイル名 (パスが異なる場合はパスも指定してください) 戻り値 : True = 成功 False = 失敗 説明 : オープンしている MPEG Audio ファイルをWAVEファイルに デコードします。 ※この関数は停止状態の時のみ実行できます。 【使用例】 'WAVEファイル出力 Call vbmp3_decodeWave("C:\hoge.wav") ------------------------------------------------------ 関数名 : vbmp3_setLyricsFile() 機能 : 読み込ませる歌詞ファイルのセット 引数 : pszLyricsName = 歌詞ファイル名 セット解除したい場合は "" を入力して下さい。 戻り値 : True = 成功 False = 失敗 説明 : 再生時に読み込ませる歌詞ファイルをセットします 【使用例】 '歌詞ファイルセット Call vbmp3_setLyricsFile("C:\hoge.txt") ------------------------------------------------------ 関数名 : vbmp3_getLyrics() 機能 : 歌詞ファイルから歌詞を取得 引数 : pLyricsInfo = LYRICS_INFO 構造体変数 戻り値 : True = 成功 False = 失敗 説明 : 再生中のファイルに対応した歌詞を取得します LYRICS_INFO 構造体 説明 : 歌詞ファイルの情報を格納します。 【定義】 Public Type LYRICS_INFO sec As Long '歌詞ファイルの秒数 LyricsNext2 As String * 128 '2つ先の歌詞 LyricsNext1 As String * 128 '1つ先の歌詞 LyricsCurrent As String * 128 '再生中の歌詞 LyricsPrev1 As String * 128 '1つ前の歌詞 LyricsPrev2 As String * 128 '2つ前の歌詞 End Type 【使用例】 Dim lyricsInfo As LYRICS_INFO '歌詞取得 Call vbmp3_getLyrics(lyricsInfo) ------------------------------------------------------ 関数名 : vbmp3_getVolume() 機能 : 現在の音量取得 引数 : lVol = 左音量 rVol = 右音量 戻り値 : True = 成功 False = 失敗 説明 : 現在の音量取得します。 停止時のみ取得できます。 【使用例】 Dim lVol As Long Dim rVol As Long '音量取得 Call vbmp3_getVolume(lVol, rVol) ------------------------------------------------------ 関数名 : vbmp3_getSpectrum() 機能 : アナライズ結果取得 引数 : pSpecL(255) = 左チャンネルのdB補正値(0〜120) pSpecR(255) = 右チャンネルのdB補正値(0〜120) 戻り値 : True = 成功 False = 失敗 説明 : アナライズ結果を取得します。 【使用例】 Dim pSpecL(255) As Long Dim pSpecR(255) As Long 'アナライズ結果取得 Call vbmp3_getSpectrum(pSpecL(0), pSpecR(0)) ------------------------------------------------------ 関数名 : vbmp3_getPlayFrames() 機能 : 再生フレームの取得 引数 : 無し 戻り値 : フレーム数 説明 : 再生中のフレームを取得します。 【使用例】 Dim frames As Long 'フレーム数取得 frames = vbmp3_getPlayFrames() ------------------------------------------------------ 関数名 : vbmp3_setPlayFrames() 機能 : 指定フレームへ再生位置移動 引数 : frames = フレーム数 戻り値 : True = 成功 False = 失敗 説明 : 指定したフレームに再生位置を変更します。 【使用例】 'フレーム移動 Call vbmp3_setPlayFrames(5000) ------------------------------------------------------ 関数名 : vbmp3_getPlaySamples() 機能 : 再生サンプル数の取得 引数 : 無し 戻り値 : サンプル数 説明 : 再生中の再生サンプル数を取得します。 【使用例】 Dim frames As Long 'サンプル数取得 frames = vbmp3_getPlaySamples() ------------------------------------------------------ 関数名 : vbmp3_getTotalSamples() 機能 : 全サンプル数の取得 引数 : 無し 戻り値 : サンプル数 説明 : オープン中ファイルの全サンプル数を取得します。 【使用例】 Dim frames As Long '全サンプル数取得 frames = vbmp3_getTotalSamples() ------------------------------------------------------ 関数名 : vbmp3_setPlaySamples() 機能 : 指定再生サンプルへ再生位置移動 引数 : samples = サンプル数 戻り値 : True = 成功 False = 失敗 説明 : 指定したサンプルに再生位置を変更します。 【使用例】 'サンプル移動 Call vbmp3_setPlaySamples(5000) ------------------------------------------------------ 関数名 : vbmp3_getWave() 機能 : WAVE成分取得 引数 : pWaveL(255) = 左チャンネルのWAVE成分(-100〜100) pWaveR(255) = 右チャンネルのWAVE成分(-100〜100) 戻り値 : True = 成功 False = 失敗 説明 : 再生中の曲のWAVE成分を取得します。 【使用例】 Dim pWaveL(255) As Long Dim pWaveR(255) As Long 'WAVE成分取得 Call vbmp3_getWave(pWaveL(0), pWaveR(0)) ------------------------------------------------------ 関数名 : vbmp3_setEqualizer() 機能 : グラフィックイコライザ処理 引数 : pTavle(9) = 各周波数帯のデシベル指定(-120[-12dB]〜120[12dB]) ByVal 0& を指定するとグライコ機能が無効になります 戻り値 : True = 成功 False = 失敗 説明 : 音の成分を変更します。 隣の周波数と極端に差があると音質が悪くなります。 ※デコードオプションを変更しているときは無効です。 負荷が高い場合は引数に ByVal 0& を指定することで無効化できます。 【使用例】 Dim pTable(9) As Long pTable(0) = -60 '60Hz pTable(1) = -40 '170Hz pTable(2) = -20 '310Hz pTable(3) = -10 '600Hz pTable(4) = -5 '1KHz pTable(5) = 5 '3KHz pTable(6) = 10 '6KHz pTable(7) = 20 '12KHz pTable(8) = 40 '14KHz pTable(9) = 60 '16KHz 'グラフィックイコライザ処理 Call vbmp3_setEqualizer(pTable(0)) ------------------------------------------------------ 関数名 : vbmp3_getWinampPlayMs() 機能 : Winamp再生時間取得 引数 : 無し 戻り値 : ミリ秒 説明 : Winampでの再生時間を取得します。 ※取得時間はあくまで推定値です。 【使用例】 Dim waPlayMs As Long 'Winamp再生時間取得 waPlayMs = vbmp3_getWinampPlayMs() ------------------------------------------------------ 関数名 : vbmp3_getWinampTotalSec() 機能 : Winamp総演奏時間取得 引数 : 無し 戻り値 : 秒 説明 : Winampでの総演奏時間を取得します。 ※取得時間はあくまで推定値です。 【使用例】 Dim waTotalSec As Long 'Winamp総演奏時間取得 waTotalSec = vbmp3_getWinampTotalSec() ------------------------------------------------------ 関数名 : vbmp3_getPlayBitRate() 機能 : 再生時のビットレート取得 引数 : 無し 戻り値 : ビットレート(kbit/s) 説明 : 再生中データのビットレートを取得します。 【使用例】 Dim bitRate As Long '再生時のビットレート取得 bitRate = vbmp3_getPlayBitRate() ------------------------------------------------------ 関数名 : vbmp3_encodeOpen() 機能 : エンコード対象ファイルを開く 引数 : pszWaveName = エンコード対象ファイル名 (パスが異なる場合はパスも指定してください) pWaveForm = WAVE_FORM構造体 戻り値 : True = 成功 False = 失敗 説明 : エンコード対象となるWAVEファイルを開き情報を取得します。 WAVE_FORM 構造体 説明 : WAVEファイルの情報を格納します。 【定義】 Public Type WAVE_FORM channels As Long 'チャンネル数 bitsPerSample As Long '1サンプルあたりのビット数(8 or 16) samplingRate As Long 'サンプリングレート(44100 等) dataSize As Long 'データサイズ End Type 【使用例】 Dim pWaveForm As WAVE_FORM 'WAVEファイルオープン Call vbmp3_encodeOpen("hoge.wav", pWaveForm) ------------------------------------------------------ 関数名 : vbmp3_encodeStart() 機能 : エンコード開始 引数 : pszMp3Name = 出力ファイル名 戻り値 : True = 成功 False = 失敗 説明 : 出力ファイル名を指定してエンコードを開始します。 あらかじめ、vbmp3_encodeOpen でファイルをオープンしておく 必要があります。 ※エンコードには次の CODEC が必要です。 「Fraunhofer IIS MPEG Layer-3 Codec (professional)」 【使用例】 'エンコード開始 Call vbmp3_encodeStart("hoge.mp3") ------------------------------------------------------ 関数名 : vbmp3_encodeStop() 機能 : エンコード中止 引数 : なし 戻り値 : True = 成功 False = 失敗 説明 : エンコードを中断します。 【使用例】 'エンコード中止 Call vbmp3_encodeStop() ------------------------------------------------------ 関数名 : vbmp3_getEncodeState() 機能 : エンコード状態取得 引数 : readSize = WAVEファイルの読込サイズ encodeSize = MP3ファイルの出力サイズ 戻り値 : 0 = 停止(エンコード終了) 1 = エンコード中 説明 : エンコード時のステータス取得 【使用例】 Dim encState As Long Dim readSize As Long Dim encodeSize As Long 'エンコード状態取得 encState = vbmp3_getEncodeState(readSize, encodeSize) ------------------------------------------------------ 関数名 : vbmp3_setPitch() 機能 : ピッチ変更 引数 : pitch = ピッチ(%) (20以上) 戻り値 : True = 成功 False = 失敗 説明 : 再生ピッチを変更します。再生中も変更可能です。 ※ピッチを上げすぎると正常に再生できなくなりますので 注意して下さい。 【使用例】 'ピッチ変更 Call vbmp3_setPitch(200) ------------------------------------------------------ 関数名 : vbmp3_getPitch() 機能 : ピッチの設定値取得 引数 : なし 戻り値 : ピッチ(%) 説明 : 設定されているピッチ(%)を取得します 【使用例】 Dim pitch As Long 'ピッチの設定値取得 pitch = vbmp3_getPitch() ------------------------------------------------------ 関数名 : vbmp3_reload() 機能 : 再生データ再読込関数 引数 : なし 戻り値 : True = 成功 False = 失敗 説明 : 再生状態を保持した状態でデータを再読込します。 グラフィック・イコライザ等の設定を 即座に反映させたい場合にご利用下さい。 ※関数実行時に一瞬音が途切れます 【使用例】 '再生データ再読込 Call vbmp3_reload() ------------------------------------------------------ 関数名 : vbmp3_fadeOut() 機能 : フェードアウト 引数 : なし 戻り値 : なし 説明 : 再生中の曲をフェードアウトします。 【使用例】 'フェードアウト Call vbmp3_fadeOut() ------------------------------------------------------ 関数名 : vbmp3_setFadeIn() 機能 : フェードインで演奏開始 引数 : fin = 0 通常開始 1 フェードインで開始 戻り値 : なし 説明 : フェードインで演奏を開始します。 【使用例】 'フェードインで演奏開始 Call vbmp3_setFadeIn(1) ------------------------------------------------------ 関数名 : vbmp3_setFadeOut() 機能 : フェードアウトで演奏終了 引数 : fout = 0 通常終了 1 フェードアウトで終了 戻り値 : なし 説明 : フェードアウトで演奏を終了します。 【使用例】 'フェードアウトで演奏終了 Call vbmp3_setFadeOut(1) ------------------------------------------------------ 関数名 : vbmp3_getLastErrorNo() 機能 : 最後に発生したエラー番号取得 引数 : なし 戻り値 : エラー番号 説明 : 最後に発生したエラー番号を取得します。 【使用例】 Dim ErrNo As Long '最後に発生したエラー番号取得 ErrNo = vbmp3_getLastErrorNo ------------------------------------------------------ 関数名 : vbmp3_setStepPitch() 機能 : 再生速度変更 引数 : pitch = 再生速度(倍率) (1以上) frames = 出力時のフレーム数[省略可](一時的に変更) 戻り値 : True = 成功 False = 失敗 説明 : 音程を変えず再生速度を変更します。再生中も変更可能です。 ※速度を上げすぎると正常に再生できなくなりますので 注意して下さい。 ※フレーム数は vbmp3_setVbmp3Option の outputBlock と 同じ物です。倍率 1 を指定すると元の値に戻ります。 ※WindowsNT では使用できません。 【使用例】 '再生速度変更 Call vbmp3_setStepPitch(2, 5) ------------------------------------------------------ 関数名 : vbmp3_getStepPitch() 機能 : 再生速度の設定値取得 引数 : なし 戻り値 : 再生速度 説明 : 設定されている再生速度を取得します 【使用例】 Dim pitch As Long '再生速度の設定値取得 pitch = vbmp3_getStepPitch() ------------------------------------------------------ 関数名 : vbmp3_setOverTime() 機能 : 演奏時間の補正設定 引数 : tmOver : 0 総演奏時間以上はカウントしない 0以外 演奏時間の補正無し 戻り値 : 無し 説明 : 演奏時間がオープン時に取得した総演奏時間を越しても そのままカウントし続けるようにします。 より正確な時間を取得することが出来ますが総演奏時間と 誤差が生じるため利用の際には注意して下さい。 【使用例】 '演奏時間補正無し Call vbmp3_setOverTime(0) ------------------------------------------------------ 関数名 : vbmp3_setSoftVolume() 機能 : ソフトボリュームの変更 引数 : lVol = 左側のソフトボリューム(0 〜 100) rVol = 右側のソフトボリューム(0 〜 100) 戻り値 : 無し 説明 : 左/右のソフトボリュームを調節します。 出力バッファサイズが大きいと反映されるまでに 時間が掛かります。 【使用例】 'ソフトボリューム変更 Call vbmp3_setSoftVolume(70, 70) ------------------------------------------------------ 関数名 : vbmp3_getSoftVolume() 機能 : 現在のソフトボリューム取得 引数 : lVol = 左側のソフトボリューム rVol = 右側のソフトボリューム 戻り値 : 無し 説明 : 現在のソフトボリュームを取得します。 【使用例】 Dim lVol As Long Dim rVol As Long 'ソフトボリューム取得 Call vbmp3_getSoftVolume(lVol, rVol) ------------------------------------------------------ 関数名 : vbmp3_getWaveOutSupport() 機能 : WAVE出力デバイスがボリューム変更可能かチェック 引数 : 無し 戻り値 : 0 = 未サポート 1 = 左チャンネルのみサポート 2 = 左右両チャンネルサポート 説明 : WAVE出力デバイスがボリューム変更可能かチェックします。 【使用例】 Dim Result As Long 'デバイスチェック Result = vbmp3_getWaveOutSupport ------------------------------------------------------ 関数名 : vbmp3_getSilentFrames() 機能 : 無音フレーム数取得 引数 : pszName = チェックするファイル名 戻り値 : フレーム数 説明 : 曲の頭にある無音フレーム数を取得します。 【使用例】 Dim frames As Long '無音フレーム数取得 frames = vbmp3_getSilentFrames("c:\hoge.mp3") ------------------------------------------------------ 関数名 : vbmp3_playDecodeWave() 機能 : 再生しながら WAVE ファイルデコード 引数 : pszWaveName = 出力するWAVEファイル名 戻り値 : True = 成功 False = 失敗 説明 : 再生しながら WAVE ファイルへのデコードを行います。 ※この関数は停止状態の時のみ実行できます。 【使用例】 '再生デコード Call vbmp3_playDecodeWave("c:\hoge.wav") ------------------------------------------------------ 関数名 : vbmp3_setLyrics3InsField() 機能 : LYRICS3 の挿入フィールドを設定 引数 : field = 0 : ILYC に挿入[default] 1 : IID3 に挿入 2 : 挿入しない 戻り値 : 無し 説明 : ファイル形式変換時や SIフィールド更新時に LYRICS3 を挿入する フィールドを設定します。 ※ LYRICS3 を挿入するフィールドの更新は行えません。 すべてのフィールドを更新したい場合は、LYRICS3 を挿入しない 設定にして下さい。 【使用例】 'LYRICS3 挿入フィールド設定 Call vbmp3_setLyrics3InsField(1) ------------------------------------------------------ 関数名 : vbmp3_getFileLyrics3Info() 機能 : LYRICS3 の情報取得 引数 : pszName = 取得もとのMP3ファイル名 pLyrics3Info = LYRICS3_INFO 構造体 戻り値 : True = 成功 False = 失敗 説明 : ファイルにセットされた LYRICS3 情報を取得します。 ※※※※※ VB使用不可 ※※※※※ LYRICS3_INFO 構造体 説明 : LYRICS3 の情報を格納します。 【定義】(C言語での定義) struct LYRICS3_INFO { char IND_LYR; //LYRフィールドの有無 '0':無し '1':有り char IND_TIMETAG; //タイムタグの有無 '0':無し '1':有り char LYR[60000]; //歌詞フィールド char INF[60000]; //情報フィールド char AUT[250]; //作詞/作曲者名 char EAL[250]; //拡張アルバム名 char EAR[250]; //拡張アーティスト名 char ETT[250]; //拡張トラックタイトル char IMG[60000]; //イメージファイルへのリンク }; ------------------------------------------------------ 関数名 : vbmp3_getFileLyrics3InfoVB() 機能 : LYRICS3 の情報取得 引数 : pszName = 取得もとのMP3ファイル名 pLyrics3Info = LYRICS3_INFO_VB 構造体 lyrData = 歌詞フィールド InfData = 情報フィールド ImgData = イメージファイルへのリンク 戻り値 : True = 成功 False = 失敗 説明 : ファイルにセットされた LYRICS3 情報を取得します。 LYRICS3_INFO_VB 構造体 説明 : LYRICS3 の情報を格納します。 【定義】 Public Type LYRICS3_INFO_VB IND_LYR As String * 1 'LYRフィールドの有無 '0':無し '1':有り IND_TIMETAG As String * 1 'タイムタグの有無 '0':無し '1':有り AUT As String * 250 '作詞/作曲者名 EAL As String * 250 '拡張アルバム名 EAR As String * 250 '拡張アーティスト名 ETT As String * 250 '拡張トラックタイトル End Type 【使用例】 Dim lyrData As String * 60000 '歌詞フィールド Dim InfData As String * 60000 '情報フィールド Dim ImgData As String * 60000 'イメージファイルへのリンク Dim Lyrics3Info As LYRICS3_INFO_VB ' LYRICS3 情報を取得 Call vbmp3_getFileLyrics3InfoVB("hoge.mp3", Lyrics3Info, _ lyrData, InfData, ImgData) ------------------------------------------------------ 関数名 : vbmp3_setLyrics3Use() 機能 : LYRICS3 の自動読込設定 引数 : useLyrics3 = 0 : 自動読込しない[default] 1 : 自動読込する 戻り値 : 無し 説明 : ファイルオープン時に LYRICS3 を自動読み込みするかを設定する。 読み込んだ歌詞は vbmp3_getLyrics で取得できます。 【使用例】 'LYRICS3 の自動読込設定 Call vbmp3_setLyrics3Use(1) ------------------------------------------------------ 関数名 : vbmp3_readLyrics3Data() 機能 : LYRICS3 の手動動読込 引数 : 無し 戻り値 : True = 成功 False = 失敗 説明 : LYRICS3 を歌詞として読み込ませます。 読み込んだ歌詞は vbmp3_getLyrics で取得できます。 【使用例】 'LYRICS3 の手動動読込 Call vbmp3_readLyrics3Data() ------------------------------------------------------ 関数名 : vbmp3_clearLyrics() 機能 : 読込済みの歌詞のクリア 引数 : 無し 戻り値 : True = 成功 False = 失敗 説明 : 読み込まれている歌詞をクリアします。 【使用例】 '読込済みの歌詞のクリア Call vbmp3_clearLyrics() ------------------------------------------------------ 関数名 : vbmp3_setFftWindow() 機能 : fft用窓関数指定 引数 : window = 0 : rectangle 1 : hanning 2 : hamming 3 : blackman 戻り値 : 無し 説明 : スペアナで使用する fft関数を指定します。 窓関数により波形が変化します。 ※窓関数定数は code.txt を参照して下さい。 【使用例】 'fft用窓関数指定 Call vbmp3_setFftWindow(1) ------------------------------------------------------ 関数名 : vbmp3_setFileLyrics3Info() 機能 : LYRICS3 の情報を設定 引数 : pszName = 設定するMP3ファイル名 pLyrics3Info = LYRICS3_INFO 構造体 戻り値 : True = 成功 False = 失敗 説明 : LYRICS3 情報を設定します。 ※※※※※ VB使用不可 ※※※※※ ------------------------------------------------------ 関数名 : vbmp3_setFileLyrics3InfoVB() 機能 : LYRICS3 の情報を設定 引数 : pszName = 設定するMP3ファイル名 pLyrics3Info = LYRICS3_INFO_VB 構造体 lyrData = 歌詞フィールド InfData = 情報フィールド ImgData = イメージファイルへのリンク 戻り値 : True = 成功 False = 失敗 説明 : LYRICS3 情報を設定します。 【使用例】 Dim lyrData As String * 60000 '歌詞フィールド Dim InfData As String * 60000 '情報フィールド Dim ImgData As String * 60000 'イメージファイルへのリンク Dim Lyrics3Info As LYRICS3_INFO_VB ' LYRICS3 の情報設定 Call vbmp3_setFileLyrics3InfoVB("hoge.mp3", Lyrics3Info, _ lyrData, InfData, ImgData) ------------------------------------------------------ 関数名 : vbmp3_getListInfoEX() 機能 : SIフィールドの全フィールド情報取得 引数 : pszName = 取得もとのMP3ファイル名 pListInfo = LIST_INFO_EX 構造体 戻り値 : True = 成功 False = 失敗 説明 : SIフィールドのIID3を除く全フィールド情報を取得します。 ※※※※※ VB使用不可 ※※※※※ LIST_INFO_EX 構造体 説明 : SIフィールドの情報を格納します。 【定義】(C言語での定義) #define LIST_SIZE 2048 struct LIST_INFO_EX { char INAM[LIST_SIZE]; //曲名 char IART[LIST_SIZE]; //アーティスト名 char IPRD[LIST_SIZE]; //製品名 char ICMT[LIST_SIZE]; //コメント文字列 char ICRD[LIST_SIZE]; //リリース年号 char IGNR[LIST_SIZE]; //ジャンル名 char ICOP[LIST_SIZE]; //著作権 char IENG[LIST_SIZE]; //エンジニア char ISRC[LIST_SIZE]; //ソース char ISFT[LIST_SIZE]; //ソフトウェア char IKEY[LIST_SIZE]; //キーワード char ITCH[LIST_SIZE]; //技術者 char ICMS[LIST_SIZE]; //コミッション char IMED[LIST_SIZE]; //中間 char ISBJ[LIST_SIZE]; //タイトル char IMP3[LIST_SIZE]; //MP3情報 char ILYC[LIST_SIZE]; //歌詞 }; ------------------------------------------------------ 関数名 : vbmp3_getListInfoExVB() 機能 : SIフィールドの全フィールド情報取得 引数 : pszName = 取得もとのMP3ファイル名 pListInfo = LIST_INFO_EX_VB 構造体 戻り値 : True = 成功 False = 失敗 説明 : SIフィールドのIID3を除く全フィールド情報を取得します。 LIST_INFO_EX_VB 構造体 説明 : SIフィールドの情報を格納します。 【定義】 Public Type LIST_INFO_EX_VB INAM As String * 512 '曲名 IART As String * 512 'アーティスト名 IPRD As String * 512 '製品名 ICMT As String * 512 'コメント文字列 ICRD As String * 512 'リリース年号 IGNR As String * 512 'ジャンル名 ICOP As String * 512 '著作権 IENG As String * 512 'エンジニア ISRC As String * 512 'ソース ISFT As String * 512 'ソフトウェア IKEY As String * 512 'キーワード ITCH As String * 512 '技術者 ICMS As String * 512 'コミッション IMED As String * 512 '中間 ISBJ As String * 512 'タイトル IMP3 As String * 512 'MP3情報 ILYC As String * 512 '歌詞 End Type 【使用例】 Dim ListData As LIST_INFO_EX_VB ' SIフィールドの全フィールド情報取得 Call vbmp3_getListInfoExVB("hoge.rmp", ListData) ------------------------------------------------------ 関数名 : vbmp3_setListInfoEX() 機能 : SIフィールドの全フィールド情報設定 引数 : pszName = 設定するMP3ファイル名 pListInfo = LIST_INFO_EX 構造体 戻り値 : True = 成功 False = 失敗 説明 : SIフィールドのIID3を除く全フィールドを設定します。 ※※※※※ VB使用不可 ※※※※※ ------------------------------------------------------ 関数名 : vbmp3_setListInfoExVB() 機能 : SIフィールドの全フィールド情報設定 引数 : pszName = 設定するMP3ファイル名 pListInfo = LIST_INFO_EX_VB 構造体 戻り値 : True = 成功 False = 失敗 説明 : SIフィールドのIID3を除く全フィールドを設定します。 【使用例】 Dim ListData As LIST_INFO_EX_VB ' SIフィールドの全フィールド情報設定 Call vbmp3_setListInfoExVB("hoge.rmp", ListData) ------------------------------------------------------ 関数名 : vbmp3_getFileTagInfoEX() 機能 : ID3Tag v1.0 および v1.1 情報取得 引数 : pszName = 取得するMP3ファイル名 pTagInfo = TAG_INFO_11 構造体 戻り値 : True = 成功 False = 失敗 説明 : ID3Tag v1.0 および v1.1 の情報を取得します。 TAG_INFO_11 構造体 説明 : ID3Tag v1.0 および v1.1 の情報を格納します。 【定義】 Public Type TAG_INFO_11 szTrackName As String * 128 '曲名 szArtistName As String * 128 'アーティスト名 szAlbumName As String * 128 'アルバム名 szYear As String * 5 'リリース年号 szComment As String * 128 'コメント genre As Long 'ジャンル szGenreName As String * 128 'ジャンル名 trackNo As Long 'トラック番号 (-1 = v1.0) End Type 【使用例】 Dim TagData As TAG_INFO_11 ' ID3Tag v1.0 および v1.1 情報取得 Call vbmp3_getFileTagInfoEX("hoge.rmp", TagData) ------------------------------------------------------ 関数名 : vbmp3_setTagInfoEX() 機能 : ID3Tag v1.0 および v1.1 情報設定 引数 : pszName = 取得するMP3ファイル名 pTagInfo = TAG_INFO_11 構造体 tagSet = 1 : DLL 内部の TAG 情報書き換え(再生中ファイル時指定) 0 : 〃 変更無し 省略可能,デフォルト 0 tagAdd = 1 : ID3Tag v1 が存在しないとき追加する 0 : 〃 追加しない 戻り値 : True = 成功 False = 失敗 説明 : ID3Tag v1.0 および v1.1 の情報を設定します。 v1.0 として登録する場合は TAG_INFO_11 の trackNo に -1 をセットして下さい。 【使用例】 Dim TagData As TAG_INFO_11 ' ID3Tag v1.0 および v1.1 情報設定 Call vbmp3_setTagInfoEX("hoge.rmp", TagData, 1, 1) ------------------------------------------------------ 関数名 : vbmp3_setKaraokeUse() 機能 : カラオケタグ使用設定 引数 : useKaraoke = 0 : 未使用[default] 1 : 使用 戻り値 : 無し 説明 : カラオケタグを使用するかを指定します。 【使用例】 'カラオケタグ使用設定 Call vbmp3_setKaraokeUse(1) ------------------------------------------------------ 関数名 : vbmp3_getLyrics2() 機能 : カラオケタグ対応歌詞取得 引数 : pLyricsInfo = LYRICS_INFO2 構造体 戻り値 : True = 成功 False = 失敗 説明 : カラオケタグの再生位置に対応した歌詞を取得します LYRICS_INFO2 構造体 説明 : カラオケタグ対応歌詞情報を格納します。 【定義】 Public Type LYRICS_INFO2 sec As Long 'ミリ秒 lineno As Long '行数 point As Long 'カレント行でのタグの位置 length As Long 'カレントタグの長さ(ミリ秒) LyricsNext2 As String * 128 '次々行の歌詞 LyricsNext1 As String * 128 '次行の歌詞 LyricsCurrent As String * 128 'カレントタグの歌詞 LyricsCurrentBegin As String * 128 'カレントタグより前の歌詞 LyricsCurrentLyrics As String * 128 'カレントタグまでの歌詞 LyricsCurrentAll As String * 128 'カレント行の歌詞 LyricsPrev1 As String * 128 '前行の歌詞 LyricsPrev2 As String * 128 '前々行の歌詞 End Type 【使用例】 Dim lyricsInfo As LYRICS_INFO2 'カラオケタグ対応歌詞取得 Call vbmp3_getLyrics2(lyricsInfo) ------------------------------------------------------ 関数名 : vbmp3_setLyricsTime() 機能 : 歌詞表示時間切替 引数 : flag = 0 : Winamp時間 1 : 標準時間 2 : 設定時間比 戻り値 : 無し 説明 : 歌詞取得時に適用する時間を指定します。 【使用例】 '歌詞表示時間切替 Call vbmp3_setLyricsTime(1) ------------------------------------------------------ 関数名 : vbmp3_setWaveOutDeviceId() 機能 : wave出力デバイスID設定 引数 : id = waveOutDeviceID 戻り値 : 無し 説明 : wave出力に使用するデバイスIDを指定します。 【使用例】 'wave出力デバイスID設定 Call vbmp3_setWaveOutDeviceId(1) ------------------------------------------------------ 関数名 : vbmp3_delFileLyrics3Info() 機能 : Lyrics3削除 引数 : pszName = MP3ファイル名 戻り値 : 無し 説明 : ファイルに書き込まれたLyrics3データを削除します。 【使用例】 'Lyrics3削除 Call vbmp3_delFileLyrics3Info("hoge.mp3") ------------------------------------------------------ 関数名 : vbmp3_setListInfoEX2() 機能 : SIフィールドの全フィールド情報取得 引数 : pszName = 取得もとのMP3ファイル名 pListInfo = LIST_INFO_EX2 構造体 戻り値 : True = 成功 False = 失敗 説明 : SIフィールドのIID3を除く全フィールド情報を取得します。 LIST_INFO_EX2 構造体 説明 : SIフィールドの情報を格納します。 【定義】 Public Type LIST_INFO_EX2 INAM As String '曲名 IART As String 'アーティスト名 IPRD As String '製品名 ICMT As String 'コメント文字列 ICRD As String 'リリース年号 IGNR As String 'ジャンル名 ICOP As String '著作権 IENG As String 'エンジニア ISRC As String 'ソース ISFT As String 'ソフトウェア IKEY As String 'キーワード ITCH As String '技術者 ICMS As String 'コミッション IMED As String '中間 ISBJ As String 'タイトル IMP3 As String 'MP3情報 ILYC As String '歌詞 End Type 【使用例】 Dim ListData As LIST_INFO_EX2 ' SIフィールドの全フィールド情報取得 Call vbmp3_setListInfoEX2("hoge.rmp", ListData) ------------------------------------------------------ 関数名 : vbmp3_setNotTagLyricsLine() 機能 : 歌詞ファイルのタイムタグ無し行読込設定 引数 : readFlag = 0 : タイムタグ無し行の読込無し 1 : タイムタグ無し行の読込有り[default] 戻り値 : 無し 説明 : 歌詞ファイル内のタイムタグが無い行を読込かを設定します。 【使用例】 ' 歌詞ファイルのタグ無し行読込設定 Call vbmp3_setNotTagLyricsLine(0) ------------------------------------------------------ 関数名 : vbmp3_setNotDataSiWrite() 機能 : データ無しSIフィールド出力設定 引数 : writeFlag = 0 : データの有る SIフィールドのみ出力 1 : すべてのSIフィールドを出力[default] 戻り値 : 無し 説明 : データの設定されていない SI フィールドを作成するか設定します。 【使用例】 ' データ無しSIフィールド出力設定 Call vbmp3_setNotDataSiWrite(0) ------------------------------------------------------ 関数名 : vbmp3_setReadLyrics3Info() 機能 : 読込済み歌詞データLYRICS3登録 引数 : pszName = LYRICS3を書き込むMP3ファイル 戻り値 : True = 成功 False = 失敗 説明 : vbmp3_setLyricsFile などで読み込まれた歌詞情報を LYRICS3形式でファイルに書き込みます。 【使用例】 ' 読込済み歌詞データLYRICS3登録 Call vbmp3_setReadLyrics3Info("hoge.mp3") ------------------------------------------------------ 関数名 : vbmp3_checkKaraokeTag() 機能 : カラオケタグ有無チェック 引数 : 無し 戻り値 : True = カラオケタグ有り False = カラオケタグ無し 説明 : vbmp3_setLyricsFile などで読み込まれた歌詞情報内に カラオケタグがあるかをチェックします。 【使用例】 ' 読込済み歌詞データLYRICS3登録 If vbmp3_checkKaraokeTag() Then MsgBox "カラオケタグが有ります" End If ------------------------------------------------------ 関数名 : vbmp3_setFrameReadFlag() 機能 : フレーム数取得方法設定 引数 : readFlag = 0 : 通常[default] 1 : 完全(ファイル全走査) 戻り値 : 無し 説明 : フレーム数の取得方法を変更します。 1 の場合、正確な値を取得できますが時間が掛かります。 【使用例】 ' フレーム数取得方法設定 Call vbmp3_setFrameReadFlag(1) ------------------------------------------------------ 関数名 : vbmp3_setLyricsAdjustTime() 機能 : 歌詞表示位置の調整 引数 : ms = 歌詞の表示をずらす秒数[ミリ秒] 戻り値 : 無し 説明 : 再生時間にセットさてた時間を加えて歌詞を取得します。 正値なら早く、負値なら遅れて読み込まれます。 【使用例】 ' 歌詞表示位置の調整 Call vbmp3_setLyricsAdjustTime(1000) ------------------------------------------------------ 関数名 : vbmp3_setSeekPlay() 機能 : 停止時シークの再生有無設定 引数 : seekPlay = 0 : 自動再生しない[default] 1 : 自動再生する 戻り値 : 無し 説明 : 停止状態でシークしたとき再生を自動的に開始するか設定します。 【使用例】 ' 停止時シークの再生有無設定 Call vbmp3_setSeekPlay(1) ------------------------------------------------------ 関数名 : vbmp3_setLyricsNextAdjustTime() 機能 : 歌詞行の表示タイミング調整 引数 : ms = 歌詞行の表示をずらす秒数[ミリ秒] 戻り値 : 無し 説明 : 次の行を先行(遅延)表示します 正値なら早く、負値なら遅れて読み込まれます。 【使用例】 ' 歌詞行の表示タイミング調整 Call vbmp3_setLyricsNextAdjustTime(1000) ------------------------------------------------------ 関数名 : vbmp3_quickSeek() 機能 : 高速シーク使用設定 引数 : quickSeekFlag = 0 : 未使用 1 : 使用[default] 戻り値 : 無し 説明 : 1フレーム目の情報を元に、シーク位置を予測しシークします。 ※従来のシーク方法とは違い、数十ミリ秒程誤差が発生します。 【使用例】 ' 高速シーク使用設定 Call vbmp3_quickSeek(1) ------------------------------------------------------ 関数名 : vbmp3_cutID3v2() 機能 : ID3Tag v2 除去 引数 : pszName = MP3ファイル名 戻り値 : True = 成功 False = 失敗 説明 : ファイルに書き込まれID3 Tag v2データを削除します。 【使用例】 'ID3Tag v2 除去 Call vbmp3_cutID3v2("hoge.mp3") ------------------------------------------------------ 関数名 : vbmp3_convTimeW2N() 機能 : 歌詞時間(Winamp->標準時間)変換 引数 : 無し 戻り値 : True = 成功 False = 失敗 説明 : 読込済みの歌詞情報のWinamp時間を標準時間に変換します。 ※この関数を複数回実行すると、回数分補正が掛かり 誤差を広げることになります。 基本的に1回だけ使用するようにしてください。 【使用例】 '歌詞時間(Winamp->標準時間)変換 Call vbmp3_convTimeN2W ------------------------------------------------------ 関数名 : vbmp3_convTimeN2W() 機能 : 歌詞時間(標準時間->Winamp)変換 引数 : 無し 戻り値 : True = 成功 False = 失敗 説明 : 読込済みの歌詞情報の標準時間をWinamp時間に変換します。 ※この関数を複数回実行すると、回数分補正が掛かり 誤差を広げることになります。 基本的に1回だけ使用するようにしてください。 【使用例】 '歌詞時間(標準時間->Winamp)変換 Call vbmp3_convTimeN2W ------------------------------------------------------ 関数名 : vbmp3_outLyricsFile() 機能 : 歌詞ファイル出力 引数 : pszLyricsName = 出力歌詞ファイル名 戻り値 : True = 成功 False = 失敗 説明 : 読込済みの歌詞情報をファイルに出力します。 【使用例】 '歌詞ファイル出力 Call vbmp3_outLyricsFile("hoge.txt") ------------------------------------------------------ 関数名 : vbmp3_useAtMarkTag() 機能 : @タグ読込設定 引数 : useFlag = 0:処理無し  (@タグ行表示)[default] 1:@タグ使用 (@タグ行非表示) 2:@開始行無視(@タグ行非表示) 戻り値 : 無し 説明 : @タグの使用有無を設定します。 ※@タグが存在しない場合は、現在の設定を使用します。 ※設定に関わらず歌詞読込時には@タグの内容を保存されますが @タグ行の表示非表示は、歌詞読込時の設定に依存します。 【@タグによる反映内容】 @TimeRatio : 標準時間に指定を値を掛けた時間を元に歌詞を表示 <未指定時の設定> 1 (vbmp3_setTimeRatioと同様) @Offset : 歌詞の切替を指定時間[ms]分ずらす <未指定時の設定> 0 (vbmp3_setLyricsAdjustTimeと同様) @TimeType : @TimeRatio が未設定時の歌詞用時間を設定 WinAmp = Winamp時間 Normal = 標準時間 <未指定時の設定> 標準時間 (vbmp3_setLyricsTimeと同様) ※他のタグについては、後述の vbmp3_getAtTagData 関数を参照して下さい。 【使用例】 '@タグ読込設定 Call vbmp3_useAtMarkTag(1) ------------------------------------------------------ 関数名 : vbmp3_setTimeRatio() 機能 : 歌詞標準時間比設定 引数 : timeRatio = 標準時に対する時間比を指定 戻り値 : 無し 説明 : 歌詞表示のずれを手動で調整するための関数です。 【使用例】 '歌詞標準時間比設定 Call vbmp3_setTimeRatio(0.9953125) ------------------------------------------------------ 関数名 : vbmp3_checkTimeTag() 機能 : タイムタグ有無チェック 引数 : 無し 戻り値 : 0 = タグ無し 1 = タグ有り 2 = タグ有り(カラオケ) 説明 : vbmp3_setLyricsFile などで読み込まれた歌詞情報内に タイムタグがあるかをチェックします。 【使用例】 ' タイムタグ有無チェック If vbmp3_checkTimeTag <> 0 Then MsgBox "タイムタグが有ります" End If ------------------------------------------------------ 関数名 : vbmp3_getAtTagData() 機能 : @タグ情報取得 引数 : pAtTagData = AT_TAG_DATA 構造体 戻り値 : True = 成功 False = 失敗 説明 : vbmp3_setLyricsFile, vbmp3_readLyrics3Data で読み込んだ 歌詞情報に記述された@タグ情報を取得します。 AT_TAG_DATA 構造体 説明 : @タグの情報を格納します。 【定義】 Public Type AT_TAG_DATA Artist As String * 1024 'アーティスト名 Title As String * 1024 'タイトル Album As String * 1024 'アルバム名 Bgfile As String * 1024 '背景ファイル名 Bgfolder As String * 1024 '背景フォルダ名 TimeRatio As Double '時間比 Offset As Long '補正時間[ms] SilencemSec As Long '無音部時間[ms] TaggingBy As String * 1024 'タグ作成者 EditedBy As String * 1024 'タグ修正者 Silence As Long '無音フレーム数 Flames As Long '総フレーム数 TotalSec As Long '演奏総時間[s] TimeType As String * 1024 '再生時間種別(WinAmp or Normal) End Type 【使用例】 Dim atTagData As AT_TAG_DATA '@タグ情報取得 Call vbmp3_getAtTagData(atTagData) ------------------------------------------------------ 関数名 : vbmp3_getCallbackLyricsData() 機能 : 歌詞情報取得コールバック関数設定 引数 : コールバック関数のアドレス(AddressOf 指定) 戻り値 : True = 成功 False = 失敗 説明 : コールバック関数を設定します。 AddressOf 関数を使用するため VB5 以降のみ使用可能です。 ※この関数は停止状態の時のみ実行できます。 LYRICS_DATA 構造体 説明 : 歌詞情報を格納します。 【定義】 Public Type LYRICS_DATA no As Long '配列番号 sec As Long 'ミリ秒 lineno As Long '行番号 0〜 point As Long '行位置 0〜(0は歌詞先読用) tagFlag As Boolean 'タグ有無 textSize As Long 'テキストサイズ[byte] lyrics As String * 128 '歌詞 End Type 【コールバック関数】 関数名 : 名称任意のSubプロシージャ 機能 : VBMP3.DLL より内部に保持している歌詞情報を取得します。 引数 : lyData = LYRICS_DATA 構造体 戻り値 : 無し 説明 : 歌詞情報取得用のコールバック関数です。 かならず、標準モジュール内に作成してください。 ※文字列は S-JIS コードで取得されるためUnicode に変換する必要があります。 VB, VC の変数の違いにより文頭にゴミがついて変換されるため VBMP3.bas 内の NTRIM2 関数を使用してゴミを除去して下さい。 また、歌詞文字列が 0 バイトの場合は、NTRIM2 でもゴミを除去できないため LYRICS_DATA 構造体 の textSize で判定し、直接 "" などを代入するようにして下さい。 【使用例】 'コールバック関数指定 Call vbmp3_getCallbackLyricsData(AddressOf vbmp3_getLyricsDataProc) 【コールバック関数例】 Public Sub vbmp3_getLyricsDataProc(lyData As LYRICS_DATA) '改行付与 If lyData.point = 1 And lyricsData <> "" Then lyricsData = lyricsData & vbCrLf End If If lyData.textSize <> 0 Then lyricsData = lyricsData & NTrim2(StrConv(lyData.lyrics, vbUnicode)) End If End Sub ------------------------------------------------------ 関数名 : vbmp3_getLyricsPoint() 機能 : カレントタグ位置取得関数 引数 : 無し 戻り値 : タグ位置(配列番号) -1 = 歌詞未読込 説明 : 再生中の歌詞位置を取得する。 【使用例】 Dim lyPoint As Long 'カレントタグ位置取得 lyPoint = vbmp3_getLyricsPoint()