複数のmp3ファイルの音声の長さをミリ秒で取得して、ファイルに書き出します。
mp3ファイルの一覧を取得するには
processingで扱うデータは、ソースコードのフォルダにdataフォルダを作り、そこに配置することになっている。そのdataフォルダ内のファイル一覧を取得したいのだが、pythonで広く使われているos.getcwd()でカレントディレクトリを取得〜os.listdir()でファイル一覧を取得するが使えない。どうやらprocessing.pyでos.getcwd()をすると実行時の一時フォルダが返されてしまう模様。そのため、汎用性がなくて気に入らないが、dataフォルダを直接指定することにした。
【参考】サウンドライブラリminimのリファレンス
https://code.compartmental.net/minim/
import os
add_library("minim")
mi = None
def setup():
global mi
size(300,300)
mi = Minim(this)
# 現在のノートブックのディレクトリパスを取得する
# Processing.pyの都合なのか実行時の一時フォルダーが返されてしまう
# CURRENT_DIR = os.getcwd()
# 仕方がないので直接指定
CURRENT_DIR = "/Users/kasaiyuuichi/Desktop/soundlength/data/"
# ファイル一覧取得
FILES = os.listdir(CURRENT_DIR)
# データ書き出し用ファイルの準備
output = createWriter("length.txt")
# mp3ファイルを読み込み長さを調べる
for f in FILES:
# mp3ファイルのみ
if f.find(".mp3") > 0:
print(CURRENT_DIR + f)
BGM = mi.loadFile(f)
output.print(f + ",")
output.println(BGM.length()) # 単位はミリ秒
output.flush()
output.close()