Mp3に変換したい約130の.aupファイル(すべてのビニールの録音)がたくさんあります。各.aupはビニールの全面です(トラックを分割したくありません-1つのmp3として全体が問題ありません)。私の問題は、これらすべてのaupsを一度にmp3にバッチ変換する方法です。各.aupを一度に1つずつ開き、[チェーンの適用]ダイアログで開くのは非常に面倒です。130個のファイルに対して[現在のプロジェクトに適用]を1つずつ選択します。
誰かがコードを変更したり、そうでなければ解決策を考え出すことができましたか?
私はそれを(BatchProcessDialog.cpp)の以下のメソッドまでたどりました
void BatchProcessDialog::OnApplyToProject(wxCommandEvent &event)
{
long item = mChains->GetNextItem(-1,
wxLIST_NEXT_ALL,
wxLIST_STATE_SELECTED);
if (item == -1) {
wxMessageBox(_("No chain selected"));
return;
}
wxString name = mChains->GetItemText(item);
wxDialog d(this, wxID_ANY, GetTitle());
ShuttleGui S(&d, eIsCreating);
S.StartHorizontalLay(wxCENTER, false);
{
S.StartStatic(wxT(""), false); // deliberately not translated (!)
{
S.SetBorder(20);
S.AddFixedText(wxString::Format(_("Applying '%s' to current project"),
name.c_str()));
}
S.EndStatic();
}
S.EndHorizontalLay();
d.Layout();
d.Fit();
d.CenterOnScreen();
d.Move(-1, 0);
d.Show();
Hide();
wxWindowDisabler wd;
gPrefs->Write(wxT("/Batch/ActiveChain"), name);
mBatchCommands.ReadChain(name);
if (!mBatchCommands.ApplyChain()) {
return;
}
}
私は自分のスクリプトをautohotkeyでロールすることにしました(少し不安定ですが、一度にいくつかのファイルを処理できます):
SetTitleMatchMode 2
#p::Pause
#x::Exit
#a::
direc = C:\Documents and Settings\Test\My Documents\myaups\
FileList = ; Initialize to be blank.
Loop, %direc%*.aup
FileList = %FileList%%A_LoopFileName%`n
Loop, parse, FileList, `n
{
Sleep 2500
Run, "C:\Program Files\Audacity 1.3 Beta (Unicode)\audacity.exe"
Sleep 2500
WinWait, Audacity,
IfWinNotActive, Audacity, , WinActivate, Audacity,
WinWaitActive, Audacity,
if A_LoopField = ; Ignore the blank item at the end of the list.
continue
Sleep 2500
Send, {CTRLDOWN}o{CTRLUP}
Sleep 3000
WinWait, Select one or more audio files...,
IfWinNotActive, Select one or more audio files..., , WinActivate, Select one or more audio files...,
WinWaitActive, Select one or more audio files...,
Sleep, 2800
Send, %direc%
Sleep, 2600
Send, {Enter}
Sleep, 2600
Send, %A_LoopField% ;filename from direc loop
Sleep, 2600
Send, {Enter}
Sleep, 4000
IfWinActive, Warning - Opening Old Project File
{
Send, {Enter}
Sleep, 1000
}
Sleep, 3800
IfWinActive, Warning - Orphan Block File(s)
{
Send {Tab}
Sleep 1000
Send {Tab}
Sleep 1000
Send, {Enter}
}
Sleep, 3000
Send, {SHIFTDOWN}c{SHIFTUP} ;first must set the keyboard shortcut in audacity to Shift+C
Sleep, 3600
WinWait, Apply Chain,
IfWinNotActive, Apply Chain, , WinActivate, Apply Chain,
WinWaitActive, Apply Chain,
Sleep 500
Send, {TAB}{ENTER}
Sleep 4000
Loop ;wait till conversion finishes
{
if !WinExist("Apply Chain")
break ; Terminate the loop
else
Sleep 200
}
Sleep 3800
Send, {CTRLDOWN}q{CTRLUP} ;exit audacity
Sleep, 3800
WinWait, Save changes?,
IfWinNotActive, Save changes?, , WinActivate, Save changes?,
WinWaitActive, Save changes?,
Sleep 500
Send, {TAB}{ENTER}
Sleep 6500
}
Return
mChains
オブジェクトがインスタンス化されるクラス構造について知って、それをチェーンするための適切な関数を呼び出す必要があるため、C++の知識がない場合は多少注意が必要です。
別の方法として、GUIクリックをエミュレートする AutoIt を使用してスクリプトを作成することもできます。
Audacity(少なくとも最近のバージョン)はからの対話にあります File >> Apply Chain... ボタン Apply to Files... これにより、チェーンを一度に複数のファイルに適用できます。