neonoff
17:52 05-02-2007 Sound Forge 8.0
может кто нить еще пишет скрипты для sound forge 8.0 делитесь
данный скрипт заменяет интервал между двумя маркерами 150 милисекундами тишины, условие корректнойр аботы скрипта, количество маркеров должно быть четным, введены проверки нулевого выделения (два маркера стоят в одной позиции) и отрицательного числа выделения (ибо с отрицательным параметром выделяется весь документ до конца и соответственно удаляется. Плюс, маркеры с именем pro остаются (мало ли, мне вотнадо по работе чтобы маркеры оставались)

и может кто нить знает как увеличить шрифт в встроенном в фордж редакторе скриптов, а то это же надругателльство над человеком какое то!!!! все облазил не нашел, шрифт маленький до остервенения, приходица редактировать в отдельномт екстовике и копи пейстить!

using System;
using System.IO;
using System.Windows.Forms;
using SoundForge;

//Substitutes interval between 2 marks with 150 ms of silence, then removes markers
//Markers named as pro stayes unremoved

//Заменяем интервал между двумя маркерами на 150 мс тишины, затем удаляем маркеры

public class EntryPoint {
public void Begin(IScriptableApp app) {

ISfFileHost file = app.CurrentFile;
if (null == file)
return;
//Starts Undo wrapper in order to create one undo operation
//Создаем единное значения возврата для всех действий
int idUndo = file.BeginUndo("Markers");
//Gets and the size of the massive and creates it
//Получаем размер массива и создаем его
long size = file.MarkerCount;
long[] A = new long[size];
//Fills the massive with the start points of each marker
//Заносим в массив значение расположения маркеров на дорожке
long ii = 1;
foreach (SfAudioMarker mk in file.Markers)
{
A[mk.Ident]= mk.Start;
++ii;
}
Array.Sort(A);
//Cycle inserts between each pair of markers mute with length 150ms
//Цикл заменяет интервал между маркерами на 150 мс тишины
long c = 0;
while(size>0)
{
//Gets the start position of the first marker in pair
//Получаем стартовую позицию первого в паре маркера
long a = A[c];
//Gets the start position of the second marker in pair
//Получаем стартовую позицию второго в паре маркера
long b = A[++c];
//Calculates the interval between two markers in pair
//Рассчитываем интервал между маркерами
long dif = b - a;
//Checks if two markers stays in the same postion to prevent wrong selection area error
//Проверяем, не стоят ли маркеры на одном и том же месте
if (dif == 0)
{
//Если стоят прекращаем цикл и указываем позицию одинаковых маркеров
DPF("Длина выделения равна 0, маркеры " + a + " и " + b + " стоят в одной позиции");
return;
}
//Creates audio selection two markers in pair
//Создаем выделение интервала между маркерами
SfAudioSelection range = new SfAudioSelection(a, dif);
//Inserts mute between two markers in pair
//Мутируем выделенную область
file.MuteAudio(range);
//Checks whether the interval between two markers more then 150ms, if yes
//comletes actions inside condition
//Проверяем, если выделенная зона больше 150 мс, если больше выполняем цикл

if (dif > 6615)
{
//Calculates the interval which must be deleted to make interval between two
//markers in pair 150ms if the interval between these markers more then 150ms
//Рассчитываем интервал, который нужно будет удалить из выделения, чтобы осталось 150мс
long td = dif - 6615;
//Deletes unneccessary interval between two markers
//Удаляем ненужный интервал
file.DeleteAudio(a, td);
}
//Updates information about start points of all markers
//Обновляем информацию о позиции маркеров
foreach (SfAudioMarker mk in file.Markers)
{
A[mk.Ident]= mk.Start;
}
//Sort massive by marker position instead of index to prevent uncorrect difference
//Сортируем массив не по индексу,а по положению маркера
Array.Sort(A);
//Decreaments the varible size on the number of markers which were calculated
//Уменьшаем значение size на количество маркеров в паре для задания количества шагов цикла
size = size - 2;
//Increases varible c for next markers to be selected from the massive
//увеличиваем переменную с для выбора индексов последующего шага
++c;

}
//Removes all the markers except markers named pro
//УБираем все маркеры, кроме тех, которые называются "pro"
SfAudioMarkerList Markers = file.Markers;
int cRemoved = 0;
int cMarkers = Markers.Count;


for (int iii= cMarkers-1; iii >= 0; --iii)
{
SfAudioMarker mn = Markers[iii];
if (mn.Name != "pro")
{
SfAudioMarker mk = Markers[iii];
file.Markers.Remove(mk);
++cRemoved;
}
}

file.EndUndo(idUndo, (cRemoved <= 0));

}

public void FromSoundForge(IScriptableApp app) {
ForgeApp = app; //execution begins here
app.SetStatusText(String.Format("Script '{0}' is running.", Script.Name));
Begin(app);
app.SetStatusText(String.Format("Script '{0}' is done.", Script.Name));
}
public static IScriptableApp ForgeApp = null;
public static void DPF(string sz) { ForgeApp.OutputText(sz); }
public static void DPF(string fmt, object o) { ForgeApp.OutputText(String.Format(fmt,o)); }
public static void DPF(string fmt, object o, object o2) { ForgeApp.OutputText(String.Format(fmt,o,o2)); }
public static void DPF(string fmt, object o, object o2, object o3) { ForgeApp.OutputText(String.Format(fmt,o,o2,o3)); }
public static string GETARG(string k, string d) { string val = Script.Args.ValueOf(k); if (val == null || val.Length == 0) val = d; return val; }
public static int GETARG(string k, int d) { string s = Script.Args.ValueOf(k); if (s == null || s.Length == 0) return d; else return Script.Args.AsInt(k); }
public static bool GETARG(string k, bool d) { string s = Script.Args.ValueOf(k); if (s == null || s.Length == 0) return d; else return Script.Args.AsBool(k); }
} //EntryPoint
Комментарии:
Гость
15:28 02-03-2007
ыъыыыыыыыыыыыыыы?
Eureka
08:47 17-08-2007
oh hey Happy Birthday