こんばんは くろねこです。
オリンピック四連休、如何お過ごしでしょうか?
なんだかんだ言ってましたくろねこも開会式はちょっと感動しました。
無観客のなか、出場するアスリートの皆様も複雑な思いかと思いますが、これまでの成果を発揮し、大いに楽しんでください。
さて、本題に入ります。
今回は、久々のBMWネタです。
以前に、BMW G20 でのプレイリストの記事を投稿しました。
今回はその応用編の位置づけで、プレイリストに収録できる曲数の上限を調査しました。
その調査を以下の流れで紹介します。
iDriveの曲数制限
以前の愛車 BMW F30 (先代3シリーズ)は2015年式 320i MSport プレイリストに収録できる曲数は、(詳細な曲数の上限値は未調査であるが)概ね、200曲を見安に作成していました。
当時の記事はこちらになります。
プレイリストの作成方法は、F30と基本的には同じで、PCのWindows Media Playerを使用して、wplファイルを作成します。
F30では、この方法で作成したプレイリストで曲数制限を超えた場合、エラーにはならず、単純に無視されるだけでした。
時は流れ、3シリーズも7代目のG20に
くろねこの愛車も2020年にG20(M340i xDrive)になり、iDriveもversion7(ID7)になりました。
F30時代の制限はどうなったのでしょうか?
曲数制限確認用プレイリスト作成
曲数制限をどうやって確認するか?
まさか、いちいち数えるなんてできません。
そこで、曲番号をつけたmp3ファイルを用意して、それらをプレイリストに登録すれば、BMWが読み込んだ曲リストを確認するだけで曲数が分ります。
とりあえず、具体的な目標として、1000曲のプレイリストが再生できるかを確認します。
できるだけシンプルに確認作業を実施するため、特定のmp3ファイルを複数のフォルダに分けながら1000個にコピーして、それぞれのファイル名を0000.mp3 ~ 9999.mp3 に変更します。フォルダは、000 ~ 009 の合計10個のフォルダに順番に100個のmp3ファイルを格納します。
言葉で書くとこんな感じですが、これでは簡単に作れないと思う方もいらっしゃると思いますので、Excel VBAを使ってこれらの作業を自動化します。
フォルダとファイルの準備
プレイリストを作成するPC(Windows)の作業ドライブ(ここでは、Dドライブを例として進めます。)に下記フォルダを作成します。
D:\
| +- MP3-Test
| +- Base
| +- Dest
上記のBaseフォルダに、適当なmp3ファイルをコピーして、ファイル名を Base.mp3 にリネームします。
Excel(できれば、2010以降)を起動し、新規ブック作成し、Shift+F11でVBAの画面を呼び出します。VBAProjectに挿入で標準モジュールを追加します。
追加した標準モジュールに下記のコードを貼り付けます。
Option Explicit Public Sub CreateMP3Data() Const pcBase = "D:\MP3-Test\Base\Base.mp3" Const pcDest = "D:\MP3-Test\Dest" Dim i As Integer Dim wkInt As Integer Dim wkStr As String Dim pvDestPath As String For i = 0 To 999 wkInt = i \ 100 wkStr = Format(wkInt, "000") pvDestPath = pcDest & "\" & wkStr If (i Mod 100) = 0 Then MkDir pvDestPath End If Call CopyFile(pcBase, pvDestPath & "\" & Format(i, "0000") & ".mp3", True) Next MsgBox "END!" End Sub Private Function CopyFile(pFrom, pTo, pOverwrite) Dim pvAns Dim pvFileSysObj Dim pvTo Dim pvFileName Set pvFileSysObj = CreateObject("Scripting.FileSystemObject") On Error Resume Next pvFileSysObj.CopyFile pFrom, pTo, pOverwrite If Err.Number <> 0 Then Select Case Err.Number Case -2147024784 'エラーハンドリングするとErr.Descriptionが通知さないため MsgBox "ディスクに十分な空き領域がありません。" Case Else MsgBox Err.Description End Select pvAns = False End If On Error GoTo 0 Set pvFileSysObj = Nothing End Function
このExcelブックを、D:\MP3-Tset\testmp3.xlsm で保存します。(マクロ有効ブック)
1000個のmp3ファイル作成
testmp3.xlsmのシートを表示した状態で、Alt+F8 でマクロ画面を表示し、「CreateMP3Data」マクロを実行します。
メッセージボックスで「END!」と表示されたら出来上がりです。
D:\MP3-Test\Destフォルダの配下にフォルダ(000 ~ 009)が作成され、それぞれのフォルダに100個ずつのmp3ファイルが出来上がっているはずです。
Windows Media Playerでプレイリスト作成
ファイルエクスプローラで、D:\MP3-Test\Destフォルダを開きます。
検索ボックスに「*.mp3」と入力し検索します。
1000個のmp3ファイルが検索結果として表示されます。
検索結果を全選択します。(Ctrl+A)
Windows Media Playerを起動し、先ほど検索した1000個のmp3ファイルを Windows Media Player にドラッグします。
Windows Media Player で曲が再生さるのを確認したら、この再生リストに名前を付け保存します。今回は「testmp3」とします。
保存先は通常なら、C:\Users\XXXXXXXX\Music\Playlistsフォルダになります。
データの編集(ドライブ名の削除)
BMWでは「ドライブ名」の概念が無いので、wplファイルに記述されたドライブ名を撤去します。
USBメモリへのコピー
USBメモリを準備し、FAT32でフォーマットします。
D:\MP3-Tsetフォルダをそのまま、USBメモリにコピーします。
(余計なExcelファイルも含まれていますが、ここは曲数制限の確認のためなので余計なものもコピーします。)
作成したプレイリストをBMWで再生する
USBメモリをBMWにやさしく挿入し、
Media → USBメモリの名称 → プレイリスト → mp3test
を選択して再生します。
プレイリストが正しく表示されない場合は、BMWがUSBメモリのローディングを実施中なので、しばらく待ってから再生します。
くろねこのG20は5月の点検時にシステムバージョンアップしてから、USBのローディングが格段に速くなった気がします。
ランダム表示をOFFにします。先頭が 0000 になります。
画面をスクロールして、ファイル名を確認します。(連番になっています。)
末尾までくると 0999 になります。
これで、1000曲のプレイリストが正常にBMWに認識されました。
曲数制限は大幅に改善されているようです。
まあ、1000曲もあれば、十分ではないでしょうか?
それでは、また。