LoginSignup
0
0

More than 1 year has passed since last update.

ADX2スクリプトで16bit44100Hzに変換

Last updated at Posted at 2021-07-17

はじめに

前回原音再生をやってみたのですが、
どうもPyAudioだと32bitFloat波形が読めないようなので、
選択中のマテリアルを16bit44100Hzにすることで対処した。

環境:CRI AotmCraft 3.45.00

説明

変換したいマテリアルをツリーで選択し、スクリプトを実行する。
あらかじめffmpegのインストールが必要かもです。(自分の環境では入れていたので未確認)

破壊的な操作なので中間ファイル(_bak)など
万が一の時のために生成していますが、不要なら削除してください。
(無いように書くこともできるけど、元波形が失われる操作なので注意)
image.png
プログラムで消すと後で戻せないから本当に要らなくなった時に手動で消すのが安全

スクリプト

backup_folder のパスは適宜変えてください。

ffmpeg-pythonを使って
wav to wav変換しています。
(レートの指定も外したかったけど、外すと変なファイルができてしまうようでした)

Conv16bit44100WAV.py
# --Description:[tatmos][Conv]マテリアルを16bit44100Hzに変換する
import ffmpeg
import shutil
import os
import cri.atomcraft.project as acproject
import cri.atomcraft.debug as acdebug

#元波形のコピー先
backup_folder = "C:/MyDearest/backup/"

selectedMaterials = acproject.get_selected_objects("Material")["data"]

if len(selectedMaterials) == 0:
    acdebug.warning("変換するマテリアルを選択してください。")
    sys.exit()

for selectedMaterial in selectedMaterials:
    input_path = acproject.get_value(selectedMaterial, "SrcFileAbsolutePath")["data"]

    print(input_path)
    print(src_path)

    #元ファイルをコピー(作業フォルダへコピー)
    src_path = backup_folder + os.path.basename(input_path)
    shutil.copyfile(input_path, src_path)

    #元ファイルリネーム(念のためその場にもバックアップファイル化)
    os.rename(input_path,input_path + "_bak")

    #16bit44100Hzに変換する
    stream = ffmpeg.input(src_path)
    stream = ffmpeg.output(stream, input_path, f='wav',ar=44100,acodec='pcm_s16le')
    ffmpeg.run(stream)
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0