Sorry for my English.
Vegas PRO 8.0. There is a script on Jscript that generates an audiofile. It's not like I can not run it on a schedule. Tried through the timer, but as soon as it comes to working with Vegas for example (Vegas.Transport.CursorPosition = new Timecode (0);) everything stops. Here's the code:
import System;
import System.Timers;
import System.Windows.Forms;
import System.IO;
import System.Drawing;
import Sony.Vegas;
var year,month,day,hours,min,sec,dayOfMonth,dayOfWeek;//Переменные для хранения текущего времянм
var tdnem1,tektemp1,xarpog1,nvetra1,svetra1,davl1;//переменные для хранения погоды
var inputDirectory = "C:\\Users\\Alex\\Documents\\погода\\";
var mediaName = "boney.wav";
var outputDirectory = "C:\\Радио\\погода\\текущая погода";
var outputFile = "текущая погода.wav";
var FadeIn = 500;
var FadeOut = 2000;
var foreStart = 2000;
var backLevel = 0.5;
var t1,t2;//Запуск 2 раза в час. t1,t2 -во сколько минут запускать. t1<t2
t1=13;
t2=48;
var t_son; //Время сна
t_son=6000;
var dt = new Date();
year = dt.getFullYear();
month = dt.getMonth()+1;
day = dt.getDate();
hours= dt.getHours();
min= dt.getMinutes();
sec= dt.getSeconds();
var arMonth : Array = ["января", "февраля", "марта", "апреля", "мая", "июня", "июля", "августа", "сентября", "октября", "ноября", "декабря"];
dayOfMonth = arMonth[month - 1];
var arDays : Array = ["воскресенье", "понедельник", "вторник", "среда", "четверг", "пятница", "суббота"];
var dayNum : Number = dt.getDay();
dayOfWeek = arDays[dayNum];
function prothitat (){
if (File.Exists(inputDirectory + "text.txt"))//Если существует файл text.txt
{
var s3 = File.OpenText(inputDirectory + "text.txt");//Открывает его
var s4 = s3.ReadToEnd(); //Считывает
var s5 = s4.split(","); //Записывает значения в массив,разделителем считает запятую
s3.Close(); //Закрывает
if (s5.length == 7)
{
tdnem1 = s5[0].toString(); //Температура, днем
tektemp1 = s5[1].toString(); //Текущая Температура
xarpog1 = s5[2].toString(); //Характер погоды
nvetra1 = s5[3].toString(); //Направление ветра
svetra1 = s5[4].toString(); //Скорость ветра
davl1 = s5[5].toString();//Атмосферное давление
}
}
}
//public
class B {//extends Vegas {
var rendererRegexp;
var templateRegexp;
function test() {
var timer : System.Timers.Timer = new System.Timers.Timer();
timer.Interval = t_son;
timer.AutoReset = true;
timer.add_Elapsed(elapsed)
timer.Enabled = true;
// var form : Form = new Form();
// Application.Run(form);
}
// static
function elapsed(source:Object,e:ElapsedEventArgs) {
prothitat ();
sformirovat();
var dt = new Date() //Скрипт проснулся,смотрит сколько время
min= dt.getMinutes()
sec= dt.getSeconds()
MessageBox.Show(year+"."+month+"."+day+" "+hours+":"+min+":"+sec+" "+tdnem1+" "+xarpog1)
}
function sformirovat(){
MessageBox.Show("Зашел в процедуру сформировать");
var track; //Переменная для track для создания звукового файла погоды
MessageBox.Show("Переменная track");
Vegas.Transport.CursorPosition = new Timecode(0); //В Вегасе создаёт тайм код с позицией курсроа на 0-ой секунде
MessageBox.Show("Новый таймкод");
var cursor = Vegas.Transport.CursorPosition; //Переменная cursor для определения положения курсора на таймкоде.
MessageBox.Show("Курсор");
track = new AudioTrack();
Vegas.Project.Tracks.Add(track); //Добавляет в проект аудио трек
Vegas.Transport.CursorPosition += Timecode.FromMilliseconds(foreStart); //Смещает позицию таймкода на 2 секунды в право
Vegas.OpenFile(inputDirectory + "obshie_frasi\\погода в славгороде на сегодня.wav");//Открывает звуковой файл Погода в славгороде сегодня
Vegas.Transport.CursorPosition--; //Смещает позицию на 1 влево
Vegas.OpenFile(inputDirectory + "date\\" + day + "." + month + ".wav");//Открывает зву файл даты
Vegas.Transport.CursorPosition--;
Vegas.OpenFile(inputDirectory + "obshie_frasi\\" + dayOfWeek + ".wav"); //Открывает зву файл дня недели(среда), и так далее ... днем...ветер ..темперетура...давление...
Vegas.Transport.CursorPosition--;
Vegas.OpenFile(inputDirectory + "obshie_frasi\\днем.wav");
Vegas.Transport.CursorPosition--;
Vegas.OpenFile(inputDirectory + "harakter\\" + xarpog1 + ".wav");//
Vegas.Transport.CursorPosition--;
Vegas.OpenFile(inputDirectory + "temps\\" + tdnem1 + ".wav");//Температура днем
Vegas.Transport.CursorPosition--;
Vegas.OpenFile(inputDirectory + "veter\\" + nvetra1 + ".wav");//Направление ветра
Vegas.Transport.CursorPosition--;
if (svetra1 > 0 && nvetra1 != "штиль")
{
Vegas.OpenFile(inputDirectory + "skorost_vetra\\" + svetra1 + ".wav");//Скорость ветра
Vegas.Transport.CursorPosition--;
}
Vegas.OpenFile(inputDirectory + "temps vdm\\" + tektemp1 + ".wav");//Текущая Температура
Vegas.Transport.CursorPosition--;
Vegas.OpenFile(inputDirectory + "davlenie\\" + davl1 + ".wav");//Атмосферное Давление
var cursor2 = Vegas.Transport.CursorPosition; //перемнная второг курсора
var track2 = new AudioTrack(); //Второй трек
Vegas.Project.Tracks.Add(track2); //Добавляет второй трек
track.Selected = 0; //Деактивирует выбор первого трека
track2.Selected = 1;
Vegas.Transport.CursorPosition = cursor; //Устанавливает курсор второго трека на уровне конца первого
var media = new Media(inputDirectory + mediaName); //Файл звуковой подложки
var audioStream = media.Streams.GetItemByMediaType(MediaType.Audio, 0);
if (null != audioStream) {
var audioLength = audioStream.Length;
var audioEvent = new AudioEvent(new Timecode(), audioLength);
track2.Events.Add(audioEvent);
var audioTake = new Take(audioStream);
audioEvent.Takes.Add(audioTake);
}//Если аудиопоток не пустой обрезает под длину голоса
Vegas.WaitForIdle();
var env = new Envelope(EnvelopeType.Volume);
track2.Envelopes.Add(env);
var env_p1 = new EnvelopePoint(cursor + Timecode.FromMilliseconds(FadeIn), backLevel);//Дальше звуковые эффекты заглушение в конце и начале
var env_p2 = new EnvelopePoint(cursor2, backLevel);
var cursor3 = cursor2 + Timecode.FromMilliseconds(FadeOut);
var env_p3 = new EnvelopePoint(cursor3, 0);
env.Points[0].Y = 0;
env.Points.Add(env_p1);
env.Points.Add(env_p2);
env.Points.Add(env_p3);
var renderer = FindRenderer(rendererRegexp);
if (null == renderer) {
throw "Failed to find renderer";
}
var renderTemplate = FindRenderTemplate(renderer, templateRegexp);
if (null == renderTemplate) {
throw "Failed to find render template";
}
var newExtension = renderer.FileExtension.substring(1);
var outputFileName = Path.GetFileNameWithoutExtension(outputFile) + newExtension;
var outputPath = Path.Combine(outputDirectory, outputFileName);
var status = Vegas.Render(outputPath, renderTemplate, cursor, cursor3);//Далее создаётся звуковой файл
if (status == RenderStatus.Canceled) {
} else if (status != RenderStatus.Complete) {
throw "Failed on input file: " + outputFile;
}
MessageBox.Show("Вышел из процедуры сформировать");
}
function FindRenderer(rendererRegExp : RegExp) : Renderer {
var rendererEnum : Enumerator = new Enumerator(Vegas.Renderers);
while (!rendererEnum.atEnd()) {
var renderer : Renderer = Renderer(rendererEnum.item());
if (null != renderer.FileTypeName.match(rendererRegExp)) {
return renderer;
}
rendererEnum.moveNext();
}
return null;
}
function FindRenderTemplate(renderer : Renderer, templateRegExp : RegExp) : RenderTemplate {
var templateEnum : Enumerator = new Enumerator(renderer.Templates);
while (!templateEnum.atEnd()) {
var renderTemplate : RenderTemplate = RenderTemplate(templateEnum.item());
if (null != renderTemplate.Name.match(templateRegExp)) {
return renderTemplate;
}
templateEnum.moveNext();
}
return null;
}
}
var b : B = new B();
b.test();