65 lines
1.8 KiB
C#
65 lines
1.8 KiB
C#
using Sony.Vegas;
|
|
using System;
|
|
using System.IO;
|
|
using System.Linq;
|
|
|
|
namespace VegasToTempoBlasterPlugin
|
|
{
|
|
|
|
public class ProjectUsefulInfo
|
|
{
|
|
private readonly string _takeName;
|
|
private readonly Vegas _vegas;
|
|
|
|
public string TakeName { get { return _takeName; } }
|
|
|
|
public AudioTrack Track { get; private set; }
|
|
|
|
public AudioEvent Event { get; private set; }
|
|
|
|
public Take Take { get; private set; }
|
|
|
|
public bool HasAllInfo
|
|
{
|
|
get { return (null != Track) && (null != Event) && (null != Take); }
|
|
}
|
|
|
|
public ProjectUsefulInfo(Vegas vegas, string wavePath)
|
|
{
|
|
_takeName = Path.GetFileNameWithoutExtension(wavePath);
|
|
_vegas = vegas;
|
|
Update();
|
|
}
|
|
|
|
public void Update()
|
|
{
|
|
var audioTracks = _vegas.Project.Tracks
|
|
.Where(trackCur => trackCur.MediaType == MediaType.Audio)
|
|
.Cast<AudioTrack>();
|
|
|
|
foreach (var audioTrack in audioTracks)
|
|
{
|
|
var audioEvents = audioTrack.Events
|
|
.Where(audioEventCur => audioEventCur.MediaType == MediaType.Audio)
|
|
.Cast<AudioEvent>();
|
|
|
|
foreach (var audioEvent in audioEvents)
|
|
{
|
|
var audioTake = audioEvent.Takes
|
|
.FirstOrDefault<Take>(audioTakeCur => audioTakeCur.Name.Equals(TakeName, StringComparison.CurrentCultureIgnoreCase));
|
|
|
|
if (null != audioTake)
|
|
{
|
|
Track = audioTrack;
|
|
Event = audioEvent;
|
|
Take = audioTake;
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
Track = null;
|
|
Event = null;
|
|
Take = null;
|
|
}
|
|
}
|
|
}
|