Donaciones

videoedicion.org es una web sin ánimo de lucro que se mantiene gracias a las donaciones de sus usuarios. Todas las donaciones, desde 1 €, son extremadamente valiosas.
[ PINCHA AQUÍ
PARA MÁS INFORMACIÓN
]

Haz una donación para ocultar este bloque
Welcome to videoedicion.org (v9). Please login or sign up.

02 de Diciembre de 2024, 07:53:54

Login with username, password and session length

Temas Recientes

275 Visitantes, 0 Usuarios

Colaboraciones

Estas empresas colaboran con videoedicion.org, bien ofreciendo algún descuento a los  usuarios que se registren usando estos banners o bien ofreciéndonos una pequeña comisión que nos ayudará con los gastos de la web.


 


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

Dj, editor de audio y video.
Lleida

XarquS

Magia potagia, tío. Lo dicho, si te hace el juego, rien à dire ;-)

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

manellopez

Pues a mi me va genial, lo tengo asignado a mi ShuttlePRO v2 y lo uso mucho, aunque me gustaría tener un atajo para acortar y otro para alargar...

Dj, editor de audio y video.
Lleida

XarquS

Sip; sería muy práctico para tí. Es una pena que no se pueda programar con el Shuttle.

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

manellopez

SOLUCIÓN:
Hola chicos, por fin tengo la solución para que lo haga correctamente, tanto en el audio como en la longitud del clip, gracias a la IA:

velocidad al 95% (ralentizar)

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;
        AdjustPlaybackRate(0.95f); // Aplicar directamente el 95% al abrir la ventana
        dlog.Close(); // Cerrar la ventana automáticamente
    }

    void AdjustPlaybackRate(float rate)
    {
        foreach (Track track in myVegas.Project.Tracks)
        {
            foreach (TrackEvent trackEvent in track.Events)
            {
                if (trackEvent.Selected)
                {
                    // Ajustar tanto audio como video relacionados
                    SyncAndAdjustEvent(trackEvent, rate);
                }
            }
        }
    }

    void SyncAndAdjustEvent(TrackEvent selectedEvent, float rate)
    {
        // Ajustar el evento seleccionado (audio o video)
        AdjustEvent(selectedEvent, rate);

        // Buscar el evento relacionado (audio o video)
        foreach (Track track in myVegas.Project.Tracks)
        {
            foreach (TrackEvent trackEvent in track.Events)
            {
                // Si encontramos un evento relacionado con el seleccionado
                if (trackEvent != selectedEvent && AreEventsLinked(selectedEvent, trackEvent))
                {
                    // Ajustar el evento relacionado para que coincida
                    AdjustEvent(trackEvent, rate, selectedEvent.Length);
                }
            }
        }
    }

    bool AreEventsLinked(TrackEvent event1, TrackEvent event2)
    {
        // Consideramos que los eventos están vinculados si comparten la misma posición de inicio
        return event1.Start == event2.Start && event1.Length == event2.Length;
    }

    void AdjustEvent(TrackEvent trackEvent, float rate, Timecode syncedLength = null)
    {
        // Ajustar eventos de audio
        if (trackEvent.Track.IsAudio())
        {
            trackEvent.AdjustPlaybackRate(rate, true); // Ajustar la tasa de reproducción del audio
            if (syncedLength != null)
            {
                trackEvent.Length = syncedLength; // Sincronizar duración con el video
            }
            else
            {
                // Ajustar la duración del evento de audio
                double newLengthInSeconds = trackEvent.Length.ToMilliseconds() / 1000.0 / rate;
                trackEvent.Length = new Timecode(newLengthInSeconds * 1000);
            }
        }

        // Ajustar eventos de video
        if (trackEvent.Track.IsVideo())
        {
            VideoEvent videoEvent = trackEvent as VideoEvent;
            if (videoEvent != null)
            {
                videoEvent.PlaybackRate = rate; // Ajustar la tasa de reproducción del video
                if (syncedLength != null)
                {
                    videoEvent.Length = syncedLength; // Sincronizar duración con el audio
                }
                else
                {
                    // Ajustar la longitud del evento de video
                    double newLengthInSeconds = videoEvent.Length.ToMilliseconds() / 1000.0 / rate;
                    videoEvent.Length = new Timecode(newLengthInSeconds * 1000);
                }
            }
        }
    }
}

velocidad al 105% (acelerar)


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;
        AdjustPlaybackRate(1.05f); // Aplicar directamente el 105% al abrir la ventana
        dlog.Close(); // Cerrar la ventana automáticamente
    }

    void AdjustPlaybackRate(float rate)
    {
        foreach (Track track in myVegas.Project.Tracks)
        {
            foreach (TrackEvent trackEvent in track.Events)
            {
                if (trackEvent.Selected)
                {
                    // Ajustar tanto audio como video relacionados
                    SyncAndAdjustEvent(trackEvent, rate);
                }
            }
        }
    }

    void SyncAndAdjustEvent(TrackEvent selectedEvent, float rate)
    {
        // Ajustar el evento seleccionado (audio o video)
        AdjustEvent(selectedEvent, rate);

        // Buscar el evento relacionado (audio o video)
        foreach (Track track in myVegas.Project.Tracks)
        {
            foreach (TrackEvent trackEvent in track.Events)
            {
                // Si encontramos un evento relacionado con el seleccionado
                if (trackEvent != selectedEvent && AreEventsLinked(selectedEvent, trackEvent))
                {
                    // Ajustar el evento relacionado para que coincida
                    AdjustEvent(trackEvent, rate, selectedEvent.Length);
                }
            }
        }
    }

    bool AreEventsLinked(TrackEvent event1, TrackEvent event2)
    {
        // Consideramos que los eventos están vinculados si comparten la misma posición de inicio
        return event1.Start == event2.Start && event1.Length == event2.Length;
    }

    void AdjustEvent(TrackEvent trackEvent, float rate, Timecode syncedLength = null)
    {
        // Ajustar eventos de audio
        if (trackEvent.Track.IsAudio())
        {
            trackEvent.AdjustPlaybackRate(rate, true); // Ajustar la tasa de reproducción del audio
            if (syncedLength != null)
            {
                trackEvent.Length = syncedLength; // Sincronizar duración con el video
            }
            else
            {
                // Ajustar la duración del evento de audio
                double newLengthInSeconds = trackEvent.Length.ToMilliseconds() / 1000.0 / rate;
                trackEvent.Length = new Timecode(newLengthInSeconds * 1000);
            }
        }

        // Ajustar eventos de video
        if (trackEvent.Track.IsVideo())
        {
            VideoEvent videoEvent = trackEvent as VideoEvent;
            if (videoEvent != null)
            {
                videoEvent.PlaybackRate = rate; // Ajustar la tasa de reproducción del video
                if (syncedLength != null)
                {
                    videoEvent.Length = syncedLength; // Sincronizar duración con el audio
                }
                else
                {
                    // Ajustar la longitud del evento de video
                    double newLengthInSeconds = videoEvent.Length.ToMilliseconds() / 1000.0 / rate;
                    videoEvent.Length = new Timecode(newLengthInSeconds * 1000);
                }
            }
        }
    }
}
Dj, editor de audio y video.
Lleida

El spam de este foro está controlado por CleanTalk