PUBLICIDAD

Welcome to videoedicion.org (v8.3). Please login or sign up.

27 de Abril de 2024, 22:02:46

Login with username, password and session length

Temas Recientes

598 Visitantes, 0 Usuarios

Compra y colabora

Si usas estos banners para hacer tus compras, recibiremos una pequeña comisión. ¡Gracias por colaborar!


 




Código VID15 para
un 15% en planes anuales


Automatización de Time Stretch al 95% y 105% en clips de audio de voz

Iniciado por manellopez, 28 de Junio de 2023, 18:38:51

Tema anterior - Siguiente tema

manellopez

¡Hola a todos!

Voy a crear una cuestión de esas raras que suelo hacer, pero que puede facilitarme mucho el trabajo:

Estoy buscando crear una secuencia de comandos que me facilite el trabajo al aplicar automáticamente el efecto Time Stretch al 95% o 105% en un clip de audio de voz seleccionado en Magix Vegas. Quisiera cargar esta secuencia de comandos en el menú de herramientas para acceder fácilmente a ella cuando sea necesario.

La razón detrás de esta necesidad es que, al reducir la duración de un audio de voz, el rango del 95% al 105% es el límite máximo que puedo aplicar sin distorsionar demasiado el contenido.

¿Alguien tiene alguna idea o sugerencia sobre cómo puedo lograr esto? Aprecio cualquier ayuda o consejo que puedan brindarme.
Dj, editor de audio y video.
Lleida

XarquS

Para usar scripts en Vegas hay que programarlos y para eso hay que saber hacerlo. Magix facilita el paquete informático para ello y lo que necesitas debe contemplarlo, si no, no se puede programar el script.

Yo he reprogramado algunos facilongos, pero en realidad no tengo ni repajolera idea.
X.
Pienso, ergo molesto >-(
Mis tutoriales: https://www.youtube.com/XarquS

manellopez

Bueno, se lo he comentado a ChatGPT y me ha creado un par de códigos que no han funcionado...

mediaItem = vegas.Project.MediaPool:GetSelectedMediaItem(0)
take = mediaItem.Takes[0]
start = mediaItem.Position
length = mediaItem.Length

fx = take.FX
fxTimeStretch = nil

for i = 0, fx.Count-1 do
    if fx[i].Name == "Time Stretch" then
        fxTimeStretch = fx[i]
        break
    end
end

if fxTimeStretch == nil then
    fxTimeStretch = vegas.VideoFX:AddVideoFXByName("VEGAS Time Stretch")
end

fxTimeStretch:StartParamEdit()
fxTimeStretch:SetFloat("Rate", 95)
fxTimeStretch:EndParamEdit()

fxTimeStretch:StartPlugEdit()
fxTimeStretch:SetFloat("Start", start)
fxTimeStretch:SetFloat("Length", length)
fxTimeStretch:EndPlugEdit()

y este otro:

using System;
using Sony.Vegas;

public class Script
{
    public void Main(Vegas vegas)
    {
        TimeStretchPlugin timeStretch = GetTimeStretchPlugin(vegas);

        foreach (Track track in vegas.Project.Tracks)
        {
            foreach (TrackEvent trackEvent in track.Events)
            {
                if (trackEvent.Selected)
                {
                    timeStretch.TimeStretch(trackEvent.Start, trackEvent.Length, 0.95);
                }
            }
        }
    }

    private TimeStretchPlugin GetTimeStretchPlugin(Vegas vegas)
    {
        foreach (FxType fxType in vegas.VideoFX.Types)
        {
            if (fxType.ClassName == "TimeStretch")
            {
                return fxType.NewPlugin() as TimeStretchPlugin;
            }
        }

        return null;
    }
}
Dj, editor de audio y video.
Lleida

juanedwin

#3
hize una pequeña prueba lastima que no puede compilar bien el VB asi que lo hice en C# aunque no se casi nada de ese lenguaje algo es algo, aqui el codigo puse una pista de audio y unos audios de manera que si seleccionas un audio o los que tengas lo puedes hacer pero prueba con uno,  ha y esta al 0.95% lo puedes cambiar.. pruebalo quizas lo probe en vegas 14
using ScriptPortal.Vegas;

public class EntryPoint
{
    public void FromVegas(Vegas vegas)
    {
        foreach (Track track in vegas.Project.Tracks)
        {
            foreach (TrackEvent trackEvent in track.Events)
            {
                if (trackEvent.Selected)
                {
                    trackEvent.AdjustPlaybackRate(0.95, true);
                }
            }
        }
       
    }
}

manellopez

#4
El 95% Funciona perfecto, pero no consigo el 105%, o sea reducirlo, incluso se lo he puesto al Chatgpt y aunque parece entender el codigo, nada...
Dj, editor de audio y video.
Lleida

PUBLICIDAD


juanedwin


manellopez

Si, lo he probado de diferentes maneras y sigue haciendo lo mismo.
Dj, editor de audio y video.
Lleida

juanedwin

bueno deberia, lo he probado en vegas 14 y funciona bien, espero que otros usuarios puedan probar haber que tal, es raro. aqui dejo otro codigo, es bueno que un experto lo pueda evaluar esto.
using System;
using System.Windows.Forms;
using ScriptPortal.Vegas;

public class EntryPoint
{
    Vegas myVegas = null;
    Form dlog = new Form();
    public void FromVegas(Vegas vegas)
    {
        myVegas = vegas;
        dlog.Text = "Ajustar PlaybackRate";
        dlog.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow;
        dlog.StartPosition = FormStartPosition.CenterScreen;
        dlog.Width = 246;
        dlog.Height = 74;

        Button Button1;
        Button1 = new Button();
        Button1.Left =  4;
        Button1.Top =  2;
        Button1.Width = 50;
        Button1.Height = 30;
        Button1.Text = "95%";
        Button1.Click += Button1_Click;
        dlog.Controls.Add(Button1);

        Button Button2;
        Button2 = new Button();
        Button2.Left = 58;
        Button2.Top = 2;
        Button2.Width = 50;
        Button2.Height = 30;
        Button2.Text = "100%";
        Button2.Click += Button1_Click;
        dlog.Controls.Add(Button2);

        Button Button3;
        Button3 = new Button();
        Button3.Left = 166;
        Button3.Top = 2;
        Button3.Width = 60;
        Button3.Height = 30;
        Button3.Text = "Cancelar";
        Button3.Click += Button3_Click;
        dlog.Controls.Add(Button3);
        dlog.CancelButton = Button3;

        Button Button4;
        Button4 = new Button();
        Button4.Left = 112;
        Button4.Top = 2;
        Button4.Width = 50;
        Button4.Height = 30;
        Button4.Text = "105%";
        Button4.Click += Button1_Click;
        dlog.Controls.Add(Button4);

        dlog.ShowDialog(vegas.MainWindow);
    }
  void Button1_Click(Object sender, EventArgs args)
    {
        Button b = (Button)sender;
        float p ;
        if (b.Text == "95%")
            p = 0.95f;
        else if (b.Text == "105%")
            p = 1.05f;
        else
            p = 1.00f;
        foreach (Track track in myVegas.Project.Tracks)
        {
            if (track.IsAudio())
                foreach (TrackEvent trackEvent in track.Events)
                {
                    if (trackEvent.Selected)
                    {
                        trackEvent.AdjustPlaybackRate(p,true);
                    }
                }
        }
        dlog.Close();
    }
    void Button3_Click(Object sender, EventArgs args)
    {
        dlog.Close();
        dlog.Dispose();
    }

}

XarquS

He probado este último y funciona en la 14 y la 18 pero con un factor limitante que lo hace poco práctico y es que eligiendo el 95% el clip lo recorta al final y al 105% crea un punto de bucle al final. En ambos casos debería ajustar el clip (o evento en el lenguaje de Vegas) proporcionalmente al porcentaje de duración, es decir, sin cortes ni extensiones. Si se corrigiese esta incidencia creo que quedaría útil.

Mañana lo pruebo en la 20, pero me figuro que hará lo mismo que en la 18 y adjunto el archivo ya preparado para quien quiera probarlo.

[url="https://videoedicion.org/foro/index.php?action=dlattach;attach=28947;type=preview;file"]Ajustar PlaybackRate.cs[/url]
[url="https://videoedicion.org/foro/index.php?action=dlattach;attach=28947;type=preview;file"]Ajustar PlaybackRate.cs[/url] 

X.
Pienso, ergo molesto >-(
Mis tutoriales: https://www.youtube.com/XarquS

manellopez

Hola, lo acabo de probar y va perfecto, la única pega es que los botos se ven pequeños y un poco recortados, pero para mí es muy útil, al editar muchos videos y de manera muy rápida.



Ahora solo faltará crear un atajo, que puestos a pedir, estaría bien que con una tecla de mi Shuttle Pro pudiera poner a 95% o 105%

Muchas gracias por la ayuda.
Dj, editor de audio y video.
Lleida

XarquS

#10
¿Te va bien, Manel? He grabado un clip mostrando la incidencia que observo en dos sistemas con Vegas Pro 14-18-20.


https://youtu.be/Dz62iTCLn_g

Y he hecho un iconito por si os sirve para colocarlo como acceso directo:

[url="https://videoedicion.org/foro/index.php?action=dlattach;attach=28948;type=preview;file"]Ajustar PlaybackRate.zip[/url]
[url="https://videoedicion.org/foro/index.php?action=dlattach;attach=28948;type=preview;file"]Ajustar PlaybackRate.zip[/url]
Pienso, ergo molesto >-(
Mis tutoriales: https://www.youtube.com/XarquS

manellopez

Sí, me va perfecto, aunque estaría muy bien poder asignar una tecla independiente para cada opción, pero me imagino que eso ya es más complicado.

¡Me va a servir de mucho, muchas gracias!
Dj, editor de audio y video.
Lleida

manellopez

He modificado un poco el código para que sea vea mejor en mi pantalla

Dj, editor de audio y video.
Lleida

XarquS

Cita de: manellopez en 07 de Julio de 2023, 01:12:29Sí, me va perfecto
¡¡¡Innnnssssss!! Toy traumatizado porque no sé que pasa para que no me funcione aunque no lo vaya a usar. Pero si te va bien a ti, perfecto; de eso se trata.

X.
Pienso, ergo molesto >-(
Mis tutoriales: https://www.youtube.com/XarquS

juanedwin

XarquS tiene toda la razón, creo que tiene que haber algo más que solo un comando o sentencia o funcion, me parece que es asignarle un nuevo valor de longitud al clip, pero lo hice y si hace el trabajo pero no es preciso, de manera que este script no es funcional.... 

PUBLICIDAD

El spam de este foro está controlado por CleanTalk