ファイル一覧の取得と音声長の取得

複数の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()

コメントする