haroldlinke / VEGASPython

Provides Python Support for VEGAS Video Editor
BSD 3-Clause "New" or "Revised" License
8 stars 1 forks source link

Where do i find a documentation for pyVEGAS? #1

Open Peda1996 opened 4 years ago

Peda1996 commented 4 years ago

Hello,

I just stumbled upon your great project. As I am an Python Enthusiast, I really appreciate your work :).

Do you know, where I can get the documentation for pyVegas?

haroldlinke commented 4 years ago

Hallo Peter,

thank you for y<our interest in the project.

For sure I have some information about pyVEGAS.

Some info you can find here:

https://www.hlinke.de/dokuwiki/doku.php?id=en:vegas_python

What information are you looking for?

If you need any additional help, please ask. I am happy to help you.

Kind regards

Harold

By the way: Nach deinem Namen zu urteilen, können wir auch in Deutsch diskutieren.

Von: Peter Wassermair notifications@github.com Gesendet: Freitag, 13. März 2020 11:41 An: haroldlinke/VEGASPython VEGASPython@noreply.github.com Cc: Subscribed subscribed@noreply.github.com Betreff: [haroldlinke/VEGASPython] Where do i find a documentation for pyVEGAS? (#1)

Hello,

I just stumbled upon your great project. As I am an Python Enthusiast, I really appreciate your work :).

Do you know, where I can get the documentation for pyVegas?

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/haroldlinke/VEGASPython/issues/1 , or unsubscribe https://github.com/notifications/unsubscribe-auth/AKNR4QSO5CC37XSFTSGVKF3RHIETVANCNFSM4LG7USZQ . https://github.com/notifications/beacon/AKNR4QX7ZLEB6PN6AFHQDDTRHIETVA5CNFSM4LG7USZ2YY3PNVWWK3TUL52HS4DFUVEXG43VMWVGG33NNVSW45C7NFSM4IUZ6U7A.gif

Peda1996 commented 4 years ago

Ah, perfekt :) Ich habe vorher noch nie mit Vegas Scripting gearbeitet, aus diesem Grund war mir neu das eine Dokumentation nicht direkt online zur Verfügung steht. Hat sich mitlerweile gelöst.

Hab jetzt mithilfe von Python ein Skript geschrieben, welches .mid Daten einlest und dann zu den jeweiligen Positionen den gerade ausgewählten Clip kopiert. Bin echt begeistert von der guten Python Integration :). Auf jeden Fall kann ich nun automatisiert Teile, wie z.b. in diesem Video sind zusammenschneiden lassen (mithilfe von mido, pydub, tkinter): https://www.youtube.com/watch?v=fm7mnRqty1E (Kanal gehört einen Bekannten von mir, und der Arbeitet sonst an so einem Video so 6 Stunden^^)

Gibt es irgendwelche Möglichkeiten, die Erweiterungen direkt in die Vegas GUI zu integrieren? Derzeit verwende ich ein tkinter Fenster, welches sich beim Ausführen der Erweiterung öffnet.

haroldlinke commented 4 years ago

Hallo Peter,

when I read your mail a 2nd time I saw that you might look for information about how to access the VEGAS API and how it works.

You can find this information on this page:

https://www.hlinke.de/dokuwiki/doku.php?id=en:vegas_python_tutorial

In the section further links you will find links to all information that Magix and Sony provide for the VEGAS API.

I have adapted the FAQ they provided for VEGASPython: https://www.hlinke.de/dokuwiki/doku.php?id=en:vegas_python_faq

Maybe this can help you for your first steps.

If you have further questions please do not hesitate to ask.

Kind regards

Harold

Von: Harold Linke harold.linke@t-online.de Gesendet: Samstag, 14. März 2020 16:47 An: 'haroldlinke/VEGASPython' reply@reply.github.com; 'haroldlinke/VEGASPython' VEGASPython@noreply.github.com Cc: 'Subscribed' subscribed@noreply.github.com Betreff: AW: [haroldlinke/VEGASPython] Where do i find a documentation for pyVEGAS? (#1)

Hallo Peter,

thank you for y<our interest in the project.

For sure I have some information about pyVEGAS.

Some info you can find here:

https://www.hlinke.de/dokuwiki/doku.php?id=en:vegas_python

What information are you looking for?

If you need any additional help, please ask. I am happy to help you.

Kind regards

Harold

By the way: Nach deinem Namen zu urteilen, können wir auch in Deutsch diskutieren.

Von: Peter Wassermair <notifications@github.com mailto:notifications@github.com > Gesendet: Freitag, 13. März 2020 11:41 An: haroldlinke/VEGASPython <VEGASPython@noreply.github.com mailto:VEGASPython@noreply.github.com > Cc: Subscribed <subscribed@noreply.github.com mailto:subscribed@noreply.github.com > Betreff: [haroldlinke/VEGASPython] Where do i find a documentation for pyVEGAS? (#1)

Hello,

I just stumbled upon your great project. As I am an Python Enthusiast, I really appreciate your work :).

Do you know, where I can get the documentation for pyVegas?

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/haroldlinke/VEGASPython/issues/1 , or unsubscribe https://github.com/notifications/unsubscribe-auth/AKNR4QSO5CC37XSFTSGVKF3RHIETVANCNFSM4LG7USZQ . https://github.com/notifications/beacon/AKNR4QX7ZLEB6PN6AFHQDDTRHIETVA5CNFSM4LG7USZ2YY3PNVWWK3TUL52HS4DFUVEXG43VMWVGG33NNVSW45C7NFSM4IUZ6U7A.gif

haroldlinke commented 4 years ago

Hallo Peter,

da haben sich unsers Mails überschnitten.

Die Integration ist ganz einfach, Du musst das Pythonscript nur in das directory VEGASPython_PN legen. Beim Neustart von VEGAS wird es automatisch erkannt und kann unter Extras->Erweiterungen kann es dann direkt aufgerufen werden.

Hilft Dir das weiter?

Wenn Du ein gutes Script hast, dass Du veröffentlichen möchtest, kann ich das gerne auf meine Seite mit hinzufügen.

Viele Grüsse

Harold

Von: Peter Wassermair notifications@github.com Gesendet: Samstag, 14. März 2020 16:58 An: haroldlinke/VEGASPython VEGASPython@noreply.github.com Cc: haroldlinke harold.linke@t-online.de; Comment comment@noreply.github.com Betreff: Re: [haroldlinke/VEGASPython] Where do i find a documentation for pyVEGAS? (#1)

Ah, perfekt :) Ich habe vorher noch nie mit Vegas Scripting gearbeitet, aus diesem Grund war mir neu das eine Dokumentation nicht direkt online zur Verfügung steht. Hat sich mitlerweile gelöst.

Hab jetzt mithilfe von Python ein Skript geschrieben, welches .mid Daten einlest und dann zu den jeweiligen Positionen den gerade ausgewählten Clip kopiert. Bin echt begeistert von der guten Python Integration :). Auf jeden Fall kann ich nun automatisiert Teile, wie z.b. in diesem Video sind zusammenschneiden lassen (mithilfe von mido, pydub, tkinter): https://www.youtube.com/watch?v=fm7mnRqty1E (Kanal gehört einen Bekannten von mir, und der Arbeitet sonst an so einem Video so 6 Stunden^^)

Gibt es irgendwelche Möglichkeiten, die Erweiterungen direkt in die Vegas GUI zu integrieren? Derzeit verwende ich ein tkinter Fenster, welches sich beim Ausführen der Erweiterung öffnet.

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/haroldlinke/VEGASPython/issues/1#issuecomment-599085498 , or unsubscribe https://github.com/notifications/unsubscribe-auth/AKNR4QSRGMRLOHMZQEA3KYLRHOSOXANCNFSM4LG7USZQ . https://github.com/notifications/beacon/AKNR4QVIBMB6CGSAJCBHNV3RHOSOXA5CNFSM4LG7USZ2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEO2VDOQ.gif

Peda1996 commented 4 years ago

Hallo, soweit hab ichs verstanden 👌 Ich wollte jedoch wissen ob es möglich ist, das Script direkt wie die python debugging Umgebung in die Vegas UI einzubinden.

haroldlinke commented 4 years ago

Wenn ich das richtig verstehe, möchtest Du ein dockable Fenster erzeugen, in dem sich Dein Tkinter Frame befindet.

Ein dockable Fenster zu erzeugen ist kein Problem:

Kopiere diesen Code in das interactive fenster und lasse ihn ausführen:

from System.Windows.Forms import *

clr.AddReference('ScriptPortal.Vegas')

import ScriptPortal.Vegas

from ScriptPortal.Vegas import *

clr.AddReference('System.Drawing')

import System.Drawing

dockView = DockableControl("HellowWorldView")

label = Label()

label.Dock = DockStyle.Fill

label.Text = "test text"

dockView.Controls.Add(label)

pyVEGAS.LoadDockView(dockView)

Das Problem ist, Tkinter zu sagen, dass es neue Frames in dieses Fenster einbauen soll.

Bis jetzt habe ich noch keine Möglichkeit gefunden, die mit Tkinter zu machen.

Wenn Du eine Möglichkeit findest, wäre ich sehr daran interessiert.

Viele Grüsse

Harold

Von: Peter Wassermair notifications@github.com Gesendet: Samstag, 14. März 2020 17:20 An: haroldlinke/VEGASPython VEGASPython@noreply.github.com Cc: haroldlinke harold.linke@t-online.de; Comment comment@noreply.github.com Betreff: Re: [haroldlinke/VEGASPython] Where do i find a documentation for pyVEGAS? (#1)

Hallo, soweit hab ichs verstanden 👌 Ich wollte jedoch wissen ob es möglich ist, das Script direkt wie die python debugging Umgebung in die Vegas UI einzubinden.

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/haroldlinke/VEGASPython/issues/1#issuecomment-599089645 , or unsubscribe https://github.com/notifications/unsubscribe-auth/AKNR4QRYSPGIGRY2UB7CM4DRHOVBXANCNFSM4LG7USZQ . https://github.com/notifications/beacon/AKNR4QW6L33EF4CFYVTW53DRHOVBXA5CNFSM4LG7USZ2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEO2WD3I.gif

Peda1996 commented 4 years ago

Danke für die Info.

Dann werde ich das ganze wohl mit der externen Gui belassen, da ich keine Erfahrung mit der Art von Fenstern habe und das ganze jetzt nicht noch umschreiben will ^^.

So siehts derzeit aus:

Man kann Midis importieren, und das ausgewählte Feld wird je nach Spur kopiert. grafik

Code ist halt teilweise nicht ganz so schön, aber funktionieren tuts ^^.

from collections import defaultdict
from tkinter import filedialog
# open gui
from tkinter import *
from tkinter.ttk import Combobox
from typing import Callable

import pydub
from mido import MidiFile
import clr

clr.AddReference('ScriptPortal.Vegas')
import ScriptPortal.Vegas
from ScriptPortal.Vegas import *

clr.AddReference('System.Drawing')
import System.Drawing

class GUI:
    def __init__(self, window, pyVEGAS):
        self.window = window
        self.pyVEGAS = pyVEGAS
        self.midi_file = None
        self.positions = None
        window.title("Midi To Clip")
        window.geometry('350x160')

        # file chooser:
        self.label_midi_chooser = Label(window, text="Choose Midi File")
        self.label_midi_chooser.grid(column=0, row=0)

        self.btn = Button(window, text="Choose Midi File", command=self.file_chooser)
        self.btn.grid(column=1, row=0)

        # choosen midi file
        self.choosen_midi_file = Label(window, text="No file choosen")
        self.choosen_midi_file.grid(row=1, columnspan=2)

        # set tempo
        self.label_video_bpm = Label(window, text="Set Midi BPM")
        self.label_video_bpm.grid(row=2, column=0)

        self.bpm = Entry(window)
        self.bpm.grid(row=2, column=1)

        # video offset
        self.label_video_offset = Label(window, text="Set Video Offset in s")
        self.label_video_offset.grid(row=3, column=0)

        self.offset = Entry(window)
        self.offset.grid(row=3, column=1)

        # choose midi track
        self.label_midi_track = Label(window, text="Set midi track")
        self.label_midi_track.grid(row=4, column=0)

        self.track = Combobox(window, values=[])
        self.track.grid(row=4, column=1)

        # use selection
        self.selection = IntVar()
        self.selection_button = Checkbutton(window, text="only insert in selection", variable=self.selection)
        self.selection_button.grid(row=5)

        # set execute button
        self.btn = Button(window, text="Execute Script", command=self.exec)
        self.btn.grid(column=1, row=6)

        window.grid_columnconfigure(1, weight=1)
        window.mainloop()

    def exec(self):
        self.btn.configure(text="Read Midi")
        self.read_midi()
        self.btn.configure(text="Get Track Positions")

        positions = self.positions[int(self.track.current())]
        if len(positions) <= 0:
            return

        offset = int(float(self.offset.get()) * 1000)

        _from = None
        _to = None
        if self.selection.get() == 1:
            _from = self.pyVEGAS.Transport.LoopRegionStart.ToMilliseconds()
            _to = self.pyVEGAS.Transport.LoopRegionLength.ToMilliseconds() + _from
            if _from > _to:
                _from, _to = _to, _from

        self.btn.configure(text="Getting selected Track")
        # self.pyVEGAS.Project.AddVideoTrack()
        selected = []
        for track in self.pyVEGAS.Project.Tracks:
            for ev in track.Events:
                if ev.Selected:
                    selected.append((track, ev))
        self.btn.configure(text="Copy selected Track")
        for track, ev in selected:
            last_start = None
            for start, end in positions:
                start = start + offset

                if last_start is not None and _from is not None and _to is not None:
                    if last_start < _from or last_start > _to:
                        last_start = start
                        print("skipping:", "start", start, "_from", _from, "start", start, "_to", _to)
                        continue

                if last_start is not None and start - last_start > 1:
                    # copy track
                    copy = ev.Copy(track, Timecode.FromMilliseconds(last_start))
                    # self.pyVEGAS.UpdateUI()

                    # cut the track
                    dLength = Timecode.FromMilliseconds(start - last_start)
                    dStart = copy.Start.ToMilliseconds()
                    # print(str(start - last_start))
                    copy.AdjustStartLength(Timecode(dStart), dLength, True)
                    self.pyVEGAS.UpdateUI()

                last_start = start
            if _from is not None and _to is not None:
                if last_start < _from or last_start > _to:
                    pass  # well didn't want to write the not xD
            else:
                copy = ev.Copy(track, Timecode.FromMilliseconds(last_start))
                self.pyVEGAS.UpdateUI()

        self.btn.configure(text="Done")

    def file_chooser(self):
        self.midi_file = filedialog.askopenfilename(filetypes=(("midi files", "*.mid"), ("all files", "*.*")))
        self.choosen_midi_file.configure(text=self.midi_file)
        self.track.configure(values=self.get_midi_tracks())

    def get_midi_tracks(self):
        mid = MidiFile(self.midi_file)
        return [i.name for i in mid.tracks]

    def read_midi(self):
        bpm = float(self.bpm.get())
        mid = MidiFile(self.midi_file)
        self.positions = []

        def ticks_to_ms(ticks):
            tick_ms = (60000.0 / bpm) / mid.ticks_per_beat
            return ticks * tick_ms

        for track in mid.tracks:
            t = []
            # position of rendering in ms
            current_pos = 0.0

            current_notes = defaultdict(dict)
            # current_notes = {
            #   channel: {
            #     note: (start_time, message)
            #   }
            # }

            for msg in track:
                # TODO CHANGE THIS FROM MS TO NORMAL TICKS, TO REDUCE ERRORS!!
                current_pos += ticks_to_ms(msg.time)
                # ticks_to_ms(current_pos)
                try:
                    if msg.type == 'note_on' and msg.velocity != 0:
                        current_notes[msg.channel][msg.note] = (current_pos, msg)

                    if msg.type == 'note_off' or (msg.velocity == 0 and msg.type == 'note_on'):
                        start_pos, start_msg = current_notes[msg.channel].pop(msg.note)
                        duration = current_pos - start_pos  # - 125
                        t.append((start_pos, current_pos))
                except AttributeError:
                    pass
                except KeyError:
                    pass

            self.positions.append(t)
        return self.positions

def FromVegas(pyVEGAS):
    GUI(Tk(), pyVEGAS)

if __name__ == "__main__":
    FromVegas(pyVEGAS)

Das Problem derzeit ist halt, das es von vielen externen Libraries abhängig ist, also falls du es zu den Skripten hinzufügen möchtest, müsste das irgendwo dabei stehen das die Libraries extra installiert werden müssen.

LG

haroldlinke commented 4 years ago

Hallo Peter,

danke für das Pythonlisting.

Man kann es etwas vereinfachen.

Du brauchst kein Threading. Der Pythoninterpreter ist schon in einem eigenen Thread, so dass das Fenster unabhängig vom VEGAS funktioniert.

Auf den Import von pydub, collections and typing kann man dann verzichten.

Bleibt noch Mido was aber kein Problem ist. Ich habe es bei mir mal eingebunden.

Allerdings habe ich noch nicht herausbekommen, was das Programm eigentlich genau machen soll.

Auserdem gibt es noch ein Problem, dass das Fenster nicht geschlossen wird, wenn VEGAS beendet wird.

Da muss ich mir mal überlegen, was man da machen kann.

Viele Grüsse

Harold

Von: Peter Wassermair notifications@github.com Gesendet: Samstag, 14. März 2020 20:28 An: haroldlinke/VEGASPython VEGASPython@noreply.github.com Cc: haroldlinke harold.linke@t-online.de; Comment comment@noreply.github.com Betreff: Re: [haroldlinke/VEGASPython] Where do i find a documentation for pyVEGAS? (#1)

Danke für die Info.

Dann werde ich das ganze wohl mit der externen Gui belassen, da ich keine Erfahrung mit der Art von Fenstern habe und das ganze jetzt nicht noch umschreiben will ^^.

So siehts derzeit aus:

https://user-images.githubusercontent.com/1789749/76688934-e1720c80-6631-11ea-904f-1aa9c739b39b.png

Code ist halt teilweise nicht ganz so schön, aber funktionieren tuts ^^.

from collections import defaultdict

from tkinter import filedialog

open gui

from tkinter import *

from tkinter.ttk import Combobox

from typing import Callable

import pydub

from mido import MidiFile

import clr

clr.AddReference('ScriptPortal.Vegas')

import ScriptPortal.Vegas

from ScriptPortal.Vegas import *

clr.AddReference('System.Drawing')

import System.Drawing

class GUI:

def __init__(self, window, pyVEGAS):

    self.window = window

    self.pyVEGAS = pyVEGAS

    self.midi_file = None

    self.positions = None

    window.title("Midi To Clip")

    window.geometry('350x160')

    # file chooser:

    self.label_midi_chooser = Label(window, text="Choose Midi File")

    self.label_midi_chooser.grid(column=0, row=0)

    self.btn = Button(window, text="Choose Midi File", command=self.file_chooser)

    self.btn.grid(column=1, row=0)

    # choosen midi file

    self.choosen_midi_file = Label(window, text="No file choosen")

    self.choosen_midi_file.grid(row=1, columnspan=2)

    # set tempo

    self.label_video_bpm = Label(window, text="Set Midi BPM")

    self.label_video_bpm.grid(row=2, column=0)

    self.bpm = Entry(window)

    self.bpm.grid(row=2, column=1)

    # video offset

    self.label_video_offset = Label(window, text="Set Video Offset in s")

    self.label_video_offset.grid(row=3, column=0)

    self.offset = Entry(window)

    self.offset.grid(row=3, column=1)

    # choose midi track

    self.label_midi_track = Label(window, text="Set midi track")

    self.label_midi_track.grid(row=4, column=0)

    self.track = Combobox(window, values=[])

    self.track.grid(row=4, column=1)

    # use selection

    self.selection = IntVar()

    self.selection_button = Checkbutton(window, text="only insert in selection", variable=self.selection)

    self.selection_button.grid(row=5)

    # set execute button

    self.btn = Button(window, text="Execute Script", command=self.exec)

    self.btn.grid(column=1, row=6)

    window.grid_columnconfigure(1, weight=1)

    window.mainloop()

def exec(self):

    self.btn.configure(text="Read Midi")

    self.read_midi()

    self.btn.configure(text="Get Track Positions")

    positions = self.positions[int(self.track.current())]

    if len(positions) <= 0:

        return

    offset = int(float(self.offset.get()) * 1000)

    _from = None

    _to = None

    if self.selection.get() == 1:

        _from = self.pyVEGAS.Transport.LoopRegionStart.ToMilliseconds()

        _to = self.pyVEGAS.Transport.LoopRegionLength.ToMilliseconds() + _from

        if _from > _to:

            _from, _to = _to, _from

    self.btn.configure(text="Getting selected Track")

    # self.pyVEGAS.Project.AddVideoTrack()

    selected = []

    for track in self.pyVEGAS.Project.Tracks:

        for ev in track.Events:

            if ev.Selected:

                selected.append((track, ev))

    self.btn.configure(text="Copy selected Track")

    for track, ev in selected:

        last_start = None

        for start, end in positions:

            start = start + offset

            if last_start is not None and _from is not None and _to is not None:

                if last_start < _from or last_start > _to:

                    last_start = start

                    print("skipping:", "start", start, "_from", _from, "start", start, "_to", _to)

                    continue

            if last_start is not None and start - last_start > 1:

                # copy track

                copy = ev.Copy(track, Timecode.FromMilliseconds(last_start))

                # self.pyVEGAS.UpdateUI()

                # cut the track

                dLength = Timecode.FromMilliseconds(start - last_start)

                dStart = copy.Start.ToMilliseconds()

                # print(str(start - last_start))

                copy.AdjustStartLength(Timecode(dStart), dLength, True)

                self.pyVEGAS.UpdateUI()

            last_start = start

        if _from is not None and _to is not None:

            if last_start < _from or last_start > _to:

                pass  # well didn't want to write the not xD

        else:

            copy = ev.Copy(track, Timecode.FromMilliseconds(last_start))

            self.pyVEGAS.UpdateUI()

    self.btn.configure(text="Done")

def file_chooser(self):

    self.midi_file = filedialog.askopenfilename(filetypes=(("midi files", "*.mid"), ("all files", "*.*")))

    self.choosen_midi_file.configure(text=self.midi_file)

    self.track.configure(values=self.get_midi_tracks())

def get_midi_tracks(self):

    mid = MidiFile(self.midi_file)

    return [i.name for i in mid.tracks]

def read_midi(self):

    bpm = float(self.bpm.get())

    mid = MidiFile(self.midi_file)

    self.positions = []

    def ticks_to_ms(ticks):

        tick_ms = (60000.0 / bpm) / mid.ticks_per_beat

        return ticks * tick_ms

    for track in mid.tracks:

        t = []

        # position of rendering in ms

        current_pos = 0.0

        current_notes = defaultdict(dict)

        # current_notes = {

        #   channel: {

        #     note: (start_time, message)

        #   }

        # }

        for msg in track:

            # TODO CHANGE THIS FROM MS TO NORMAL TICKS, TO REDUCE ERRORS!!

            current_pos += ticks_to_ms(msg.time)

            # ticks_to_ms(current_pos)

            try:

                if msg.type == 'note_on' and msg.velocity != 0:

                    current_notes[msg.channel][msg.note] = (current_pos, msg)

                if msg.type == 'note_off' or (msg.velocity == 0 and msg.type == 'note_on'):

                    start_pos, start_msg = current_notes[msg.channel].pop(msg.note)

                    duration = current_pos - start_pos  # - 125

                    t.append((start_pos, current_pos))

            except AttributeError:

                pass

            except KeyError:

                pass

        self.positions.append(t)

    return self.positions

def threaded(fn: Callable) -> Callable:

def wrapper(*args, **kwargs):

    import threading

    thread = threading.Thread(target=fn, args=args, kwargs=kwargs)

    thread.start()

    return thread

return wrapper

@threaded

def FromVegas(pyVEGAS):

GUI(Tk(), pyVEGAS)

if name == "main":

FromVegas(pyVEGAS)

Das Problem derzeit ist halt, das es von vielen externen Libraries abhängig ist, also falls du es zu den Skripten hinzufügen möchtest, müsste das irgendwo dabei stehen das die Libraries extra installiert werden müssen.

LG

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/haroldlinke/VEGASPython/issues/1#issuecomment-599124757 , or unsubscribe https://github.com/notifications/unsubscribe-auth/AKNR4QX72SKKIL3CUSGCGXLRHPLETANCNFSM4LG7USZQ . https://github.com/notifications/beacon/AKNR4QWKOCGZU4WP4FBGIEDRHPLETA5CNFSM4LG7USZ2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEO26WFI.gif

Peda1996 commented 4 years ago

Das ganze Skript ist teilweise bisschen willkürlich entstanden, dadurch noch einige unnötige Imports und die komische Struktur^^.

Threading wollte ich aufgrund eines Bugs in Sony Vegas einbinden, welcher sobald das Fenster offen ist die korrekte Zeigeranzeige stoppt.

Threading als fix hat leider nix gebracht, wodurch ich das wieder entfernt habe.

Ich hab ein kleines Video dazu gemacht, wo man das ganze in Aktion sieht. Grundsätzlich soll dieses Tool dafür verwendet werden automatisch die Videos an den Midi Startpositionen einzufügen. https://www.youtube.com/watch?v=vPV8A2ScD9Y

Das mit dem Schließen des Fensters ist denke ich ein Problem von Tkinter.

Vielleicht sollte ich mir mal das andere Fenster Verwaltungs-system anschauen.