EUGEN27771, а как послать в плагин обратно #string ?
Неужели перебором значений по TrackFX_FormatParamValue?
Неужели перебором значений по TrackFX_FormatParamValue?
да.выполняться будет всякий раз как жмёшь выполнить
//Show Track Info(incl. Sends and Receives)
ShowConsoleMsg("" );
trackId = GetSelectedTrack(0, 0);//Get First Selected track id
GetSetMediaTrackInfo_String(trackId, "P_NAME", #track_name, 0);
ShowConsoleMsg("Track_Name = ");ShowConsoleMsg(#track_name);
ShowConsoleMsg("\n" );
ShowConsoleMsg(" --------------------\n" );
#Pmtr_Name[0] = "D_VOL";
#Pmtr_Name[1] = "D_PAN";
#Pmtr_Name[2] = "D_WIDTH";
#Pmtr_Name[3] = "D_PANLAW";//You can add another Pmtr_Name
Track_Par_Count = 4;//SET parameter count
i_parmtr = 0;
loop(Track_Par_Count,
#Cur_par_name = #Pmtr_Name[i_parmtr];
Norm_Par_Val = GetMediaTrackInfo_Value(trackId, #Cur_par_name);
ShowConsoleMsg(strcat(#Cur_par_name," = "));
ShowConsoleMsg(sprintf(#Norm_Par_Val, "%f",Norm_Par_Val));
ShowConsoleMsg("\n" );
i_parmtr += 1;
);
/////////////////////////////
ShowConsoleMsg(" --------------------\n" );
Send_Count = GetTrackNumSends(trackId, 0);//0=sends,
i_send = 0;
loop(Send_Count,
GetTrackSendName(trackId, i_send, #SendName);
GetTrackSendUIVolPan(trackId, i_send, S_volume,S_pan);
ShowConsoleMsg(sprintf(#i_send, "%d",i_send));
ShowConsoleMsg(" Send Name = "); ShowConsoleMsg( #SendName);ShowConsoleMsg("\n" );
ShowConsoleMsg(" Send Vol = "); ShowConsoleMsg(sprintf(#S_volume, "%f",S_volume));
ShowConsoleMsg(" Send Pan = "); ShowConsoleMsg(sprintf(#S_pan, "%f",S_pan));
ShowConsoleMsg("\n" );
i_send +=1;
);
/////////////////////////////
ShowConsoleMsg(" --------------------\n" );
Recv_Count = GetTrackNumSends(trackId, -1);//is <0 for receives
i_recv = 0;
loop(Recv_Count,
GetTrackReceiveName(trackId, i_recv, #RecvName);
GetTrackReceiveUIVolPan(trackId, i_recv, R_volume,R_pan);
ShowConsoleMsg(sprintf(#i_recv, "%d",i_recv));
ShowConsoleMsg(" Receive Name = "); ShowConsoleMsg( #RecvName);ShowConsoleMsg("\n" );
ShowConsoleMsg(" Receive Vol = "); ShowConsoleMsg(sprintf(#R_volume, "%f",R_volume));
ShowConsoleMsg(" Receive Pan = "); ShowConsoleMsg(sprintf(#R_pan, "%f",R_pan));
ShowConsoleMsg("\n" );
i_recv +=1;
);
Меня этот вопрос также интересует, но немного в другом ракурсе - как запомнить значения считанные с плагина, а потом иметь их возможность в любой момент применить?EUGEN27771, а как послать в плагин обратно #string ?
Неужели перебором значений по TrackFX_FormatParamValue?
D_VOL : double * : trim volume of track (0 (-inf)..1 (+0dB) .. 2 (+6dB) etc ..)
function set_parameter()
(
Undo_BeginBlock();
dB_val = -1; // subtract 1 dB
i = 0;
trackcount = CountTracks(0);
loop(trackcount,
track = GetTrack(0, i);
GetSetMediaTrackInfo_String(track, "P_NAME", #cur_track, 0);
match("KEY01_P1", #cur_track) ? (
fx_index = TrackFX_GetByName(track, "ReaEQ1", 0);
j = 0;
param_count = TrackFX_GetNumParams(track, fx_index);
loop(param_count,
TrackFX_GetParamName(track, fx_index, j, #par_name);
match("Gain-Band 3", #par_name) ? (
trim = pow(10, dB_val / 20.0);
val = trim * TrackFX_GetParam(track, fx_index, j, minval, maxval);
val > maxval ? val = maxval
:
val < minval ? val = minval;
TrackFX_SetParam(track, fx_index, j, val);
);
j += 1;
);
);
i += 1;
);
TrackList_AdjustWindows(0);
Undo_EndBlock("set parameter", 0);
);
set_parameter();
UpdateArrange();
SetProjExtState(0, "blablakey", "blablaval", "переменная");
// забивает string переменную в память
GetProjExtState(0, "blablakey", "blablaval", #val);
ShowConsoleMsg(#val);
// выводит переменную (в т.ч. после новой загрузки проекта)
И я в том числе. Но времени жутко не хватает. Через месяц защита. Но за темой, как ты понял - слежу. ))20 человек отметились, что хотят научиться писать скрипты
да,Eel.это всё EEL
Да,можно.Вечером попробую.для выделенных треков убрать в названии первые несколько символов (превратить например "01-Kick" и "02-Snare" в просто "Kick" и "Snare")
Убрать с начала и конца на выделенных треках:для выделенных треков убрать в названии первые несколько символов
function deletecharsfromname()
(
Undo_BeginBlock();
#inputdata = "0,0";
GetUserInputs("delete", 2, "symbols from start, symbols from end", #inputdata);
match("%d,%d", #inputdata, start, end);
trackcount = CountSelectedTracks(0);
i = 0;
loop(trackcount,
(track = GetSelectedTrack(0, i)) ?
(
GetSetMediaTrackInfo_String(track, "P_NAME", #trackname, 0); // get trackname
len = strlen(#trackname); // get length
offs = len - end; // calculate offset
str_delsub(#trackname, offs, end); // delete from end
strcpy_from(#tracknamenew,#trackname,start); // delete from start
GetSetMediaTrackInfo_String(track, "P_NAME", #tracknamenew, 1); // apply changes
);
i += 1;
);
TrackList_AdjustWindows(0);
Undo_EndBlock("deletecharsfromname", 0);
);
deletecharsfromname();
UpdateArrange();
Будет круто!EUGEN27771, большое спасибо, разобрался. Это я пытаюсь написать скрипт, сравнивающий 2 пресета и выдающий номера и значения параметров, которыми эти пресеты отличаются. Ну и чтобы впоследствии можно было их запоминать-применять. Этакий избирательный пресет.
function compare_presets()
(
Undo_BeginBlock();
GetUserInputs("Get Presets", 2, "preset A name, preset B name", #inputdata);
match("%s,%s", #inputdata, #presetA, #presetB);
(track = GetSelectedTrack(0, 0)) ? (
fxcount = TrackFX_GetCount(track);
i = 0;
loop(fxcount,
fx = TrackFX_GetOpen(track, i) ? (
curpresetidx = TrackFX_GetPresetIndex(track, fx, allpres); // for restoring at the end of comparison
TrackFX_SetPreset(track, fx, #presetA); // set preset A
parcount = TrackFX_GetNumParams(track, fx);
j = 0;
loop(parcount,
param = TrackFX_GetParam(track, fx, j, minvalOut, maxvalOut);
sprintf(#val_A_[j], "%{param}f"); // store all values from preset A
j += 1;
);
TrackFX_SetPreset(track, fx, #presetB); // set preset B
parcount = TrackFX_GetNumParams(track, fx);
j = 0;
loop(parcount,
param = TrackFX_GetParam(track, fx, j, minvalOut, maxvalOut);
sprintf(#val_B_[j], "%{param}f"); // store all values from preset B
j += 1;
);
j = 0;
loop (parcount,
strcmp(#val_A_[j],#val_B_[j]) != 0 ? ( // compare presets. if not match show console
ShowConsoleMsg(#val_B_[j]);
ShowConsoleMsg("\n");
);
j += 1;
);
TrackFX_SetPresetByIndex(track, fx, curpresetidx); // set current preset back
);
i += 1;
);
);
TrackList_AdjustWindows(0);
Undo_EndBlock("compare_presets", 0);
);
compare_presets();
UpdateArrange();
Коллеги, ОЧЕНЬ нужно!!!!!А ничего с JS API в 5-ке нового не сделали? Не появилось ни какой возможности из JS плагина Прямо запускать скрипты или Экшины? Ой как это упростило бы мне жизнь.....
В Экшн-лист,Command id.Но у Вас почему-то другие значения.как вызвать или где подсмотреть перечень этих команд
В Экшн-лист,Command id.Но у Вас почему-то другие значения.
Как же не было? -Так в экшн-листе этих команд никогда и не было.В том и радость ))).