View Full Version : MIDI Item teilen II
Hallo,
Habe den Thread 'Midi Item teilen Problem! Gelöst!!!' verfolgt und frage mich, ob man dass von solger vorgeschlagene script:
me = reaper.MIDIEditor_GetActive()
reaper.MIDIEditor_OnCommand(me, reaper.NamedCommandLookup("_RS7d3c_1ca5fd29e7f002f 078e6771848b2d26606beaab6")) -- Script: sr_Select notes under edit cursor.lua
reaper.MIDIEditor_OnCommand(me, 40791) -- Edit: Trim right edge of note to edit cursor
reaper.Main_OnCommand(40757, 0) -- Item: Split items at edit cursor (no change selection)
dahingehend verfeinern kann, dass es 'misst' welcher Teil der Midi-Notes, die zerteilt werden sollen, der kürzere ist und nur diesen trimmt (oder den Teil, der unter einem definierten Längenwert ist). Kann man in einem script auslesen, wie lange eine MIDI-note rechts und links vom cursor ist und dann (nur) den kürzeren Teil trimmen? Das würde das script 'smart' machen.. Vielleicht liest das ja jemand hier, der weiss, ob sowas geht, ansonsten würde ich mal im scripting-Unterforum einen thread anfangen..
solger
10-04-2019, 01:06 PM
EDIT: Skript ist über ReaPack verfügbar (siehe Post #12)
Hallo,
hab mal auf die Schnelle eine erste adaptierte Version vom [MIDI EDITOR] Script: me2beats_Split notes (select left).lua zum Ausprobieren gemacht (siehe Anhang), die den kürzereren Teil von selektierten Noten anhand der Cursorposition trimmt.
Kann man sicher noch optimieren :)
1) Angehängtes Skript in die [MAIN] Sektion von der Action List laden
2a) Dann in der [MAIN] Sektion entweder eine Custom Action erstellen mit:
Script: sr_Select notes under edit cursor.lua
Script: trim-shorter-note-part-at-cursor.lua
Item: Split items at edit cursor (no change selection)
2b) Oder folgendes .lua Script erstellen (und jeweils die entsprechende Command ID aus der Action Liste per Rechts-Klick kopieren und zwischen den " " im Skript einsetzen):
me = reaper.MIDIEditor_GetActive()
reaper.MIDIEditor_OnCommand(me, reaper.NamedCommandLookup("<hier entsprechende Command ID einfügen>")) -- Script: sr_Select notes under edit cursor.lua
reaper.MIDIEditor_OnCommand(me, reaper.NamedCommandLookup("<hier entsprechende Command ID einfügen>")) -- Script: trim-shorter-note-part-at-cursor.lua
reaper.Main_OnCommand(40757, 0) -- Item: Split items at edit cursor (no change selection)
Hallo,
hab mal auf die Schnelle eine erste adaptierte Version vom [MIDI EDITOR] Script: me2beats_Split notes (select left).lua zum Ausprobieren gemacht (siehe Anhang), die den kürzereren Teil von selektierten Noten anhand der Cursorposition trimmt.
Kann man sicher noch optimieren :)
1) Angehängtes Skript in die [MIDI Editor] Sektion von der Action List laden
2a) Dann in der [MIDI Editor] Sektion entweder eine Custom Action erstellen mit:
Script: sr_Select notes under edit cursor.lua
Script: trim-shorter-note-part-at-cursor.lua
2b) Oder folgendes .lua Script erstellen (und jeweils die entsprechende Command ID aus der Action Liste per Rechts-Klick kopieren und zwischen den " " im Skript einsetzen):
Erstmal vielen Dank!!
Auf den ersten click funktioniert es super, werde es jetzt noch länger testen.
In die Custom action muss am Ende natürlich die item split action noch rein, ich nehme an, ein Flüchtigkeitsfehler:
Script: sr_Select notes under edit cursor.lua
Script: trim-shorter-note-part-at-cursor.lua
Item: Split items at edit cursor (no change selection)
Nach welchen Kriterien wird die kurze Seite ermittelt? Hier wäre ein Schwellenwert vielleicht interessant, damit ab einer bestimmten Länge die Midi-note erhalten bleibt..?
Nochmal Danke!
solger
10-05-2019, 02:54 PM
In die Custom action muss am Ende natürlich die item split action noch rein, ich nehme an, ein Flüchtigkeitsfehler:
Script: sr_Select notes under edit cursor.lua <-- [MIDI Editor] Action
Script: trim-shorter-note-part-at-cursor.lua <-- [MIDI Editor] Action
Item: Split items at edit cursor (no change selection) <-- [Main] Action
Mittels Custom Actions lassen sich leider keine Actions von verschiedenen Sektionen (wie in diesem Fall von MIDI Editor und Main) kombinieren - was mittels Skript möglich ist.
D.h. die Custom Action in Post #2 mit den zwei MIDI Editor Actions stimmt schon so.
Die Custom Action Variante kann man z.B. direkt im MIDI Editor ausführen (wenn man keinen Item-Split benötigen sollte). Oder in Skripts aufrufen bzw. in anderen Custom Actions verwenden.
Als Beispiel könnte man im Skript auch die beiden MIDI Editor Actions durch eine Custom Action (welche die beiden Actions beinhaltet) ersetzen:
me = reaper.MIDIEditor_GetActive()
reaper.MIDIEditor_OnCommand(me, reaper.NamedCommandLookup("<hier entsprechende Command ID einfügen>")) -- Custom Action (von Post #2 mit 'select notes under edit cursor' and 'trim shorter note part')
reaper.Main_OnCommand(40757, 0) -- Item: Split items at edit cursor (no change selection)
Nach welchen Kriterien wird die kurze Seite ermittelt? Hier wäre ein Schwellenwert vielleicht interessant, damit ab einer bestimmten Länge die Midi-note erhalten bleibt..?
In der derzeitigen Version wird einfach nur verglichen, ob der linke Teil (Notenstart - Cursorposition) oder der rechte Teil (Cursorposition - Notenende) kürzer ist.
Hier noch zusätzlich einen Schwellenwert zu ergänzen, sollte eigentlich möglich sein. Ich werde mir das mal ansehen und das Skript entsprechend überarbeiten.
Mittels Custom Actions lassen sich leider keine Actions von verschiedenen Sektionen (wie in diesem Fall von MIDI Editor und Main) kombinieren - was mittels Skript möglich ist.
D.h. die Custom Action in Post #2 mit den zwei MIDI Editor Actions stimmt schon so.
Aha, ich habe aber in der Main Section genau aus den 3 von mir genannten scripts bzw. actions eine Custom Action gemacht und die funktioniert 1a..?
In der derzeitigen Version wird einfach nur verglichen, ob der linke Teil (Notenstart - Cursorposition) oder der rechte Teil (Cursorposition - Notenende) kürzer ist.
Hier noch zusätzlich einen Schwellenwert zu ergänzen, sollte eigentlich möglich sein. Ich werde mir das mal ansehen und das Skript entsprechend überarbeiten.
Super, ein Schwellenwert macht das script perfekt (für mich)..
Danke!
https://imgur.com/3IltwJH.jpg
solger
10-05-2019, 03:55 PM
Aha, ich habe aber in der Main Section genau aus den 3 von mir genannten scripts bzw. actions eine Custom Action gemacht und die funktioniert 1a..?
Ah, OK. Dann nehme ich mal an, dass bei dir alle 3 Einzel-Actions/Skripte in der Main Section vorhanden sind, oder?
Bei mir ist das 'trim shorter note part' Skript nur in der [MIDI Editor] Section drinnen. Hab's noch gar nicht anders probiert (das Skript in die Main Section zu importieren), da es ja eigentlich ein MIDI Editor Skript ist :)
EDIT: Ja, hab's gerade probiert. Die 'select notes under cursor' und 'trim shorter note part' Skripte funktionieren auch in der [Main] Section. D.h. Custom Action funktioniert dann hier auch mit allen drei Einträgen (wie in deinem Screenshot). Habe Post #2 entsprechend aktualisiert.
_Stevie_
10-05-2019, 05:53 PM
Du kannst gerne mein select notes script verwursten, wenn du willst.
Ergibt vielleicht mehr Sinn alles in ein Skript zu packen.
solger
10-06-2019, 07:03 AM
Du kannst gerne mein select notes script verwursten, wenn du willst.
Ergibt vielleicht mehr Sinn alles in ein Skript zu packen.
Cool. Danke!
_Stevie_
10-06-2019, 07:10 AM
Gerne :)
solger
10-09-2019, 07:31 AM
Kurze Zwischeninfo: wird voraussichtlich noch bis Ende dieser Woche dauern, bis die geplanten Skripte (einmal mit 'trim left note part', mit 'trim right note part' und 'trim shorter note part') soweit fertig sind, dass diese auf ReaPack geladen werden können - muss noch an ein paar Einzelheiten (u.a beim Thema 'Verwendung eines Schwellenwerts') feilen.
Kurze Zwischeninfo: wird voraussichtlich noch bis Ende dieser Woche dauern, bis die geplanten Skripte (einmal mit 'trim left note part', mit 'trim right note part' und 'trim shorter note part') soweit fertig sind, dass diese auf ReaPack geladen werden können - muss noch an ein paar Einzelheiten (u.a beim Thema 'Verwendung eines Schwellenwerts') feilen.
Danke für die Info und danke für die Arbeit!
Freue mich auf die Scripte!
solger
10-16-2019, 12:26 PM
Die erste Version des Smart split MIDI item Script-Bundles ist nun auf ReaPack verfügbar :)
Nach Installation sind in den beiden [Main] Sections der Action List folgende drei Skripte verfügbar:
Script: solger_Smart split MIDI item (trim left note parts at cursor).lua
Script: solger_Smart split MIDI item (trim right note parts at cursor).lua
Script: solger_Smart split MIDI item (trim shorter note parts at cursor).lua
Der Schwellenwert für die (linke, rechte oder kürzere) Notenteil-Länge, die getrimmt werden soll, kann man innerhalb der Skripte anhand der noteLength und noteMultiplier Parameter anpassen - standardmäßig werden alle Notenteile getrimmt.
Die 3 Schritte (Noten selektieren, Trimmen und Item splitten) wurde jetzt alle in ein einzelnes Skript gepackt, d.h. eine Custom Action ist jetzt auch nicht mehr notwendig.
@Stevie: danke auch nochmals fürs Verwenden vom Code!
_Stevie_
10-16-2019, 01:09 PM
Super Solger!
Ich habe in der Zwischenzeit noch eine Sache herausgefunden, die mir vorher nicht bewusst war, zwecks Optimierung.
Wenn man vor einer "Noten-Funktion" reaper.MIDI_DisableSort(take) nutzt
und am Ende der Funktion "reaper.MIDI_Sort(take)" aufruft, dann ist die Ausführung
um einiges schneller. Dazu muss man aber in allen MIDI_SetNote() den letzen Wert auf "nil" setzen. Sonst wird bei jedem Durchgang MIDI Sort aufgerufen, was natürlich Zeit frisst.
Die erste Version des Smart split MIDI item Script-Bundles ist nun auf ReaPack verfügbar :)
Nach Installation sind in den beiden [Main] Sections der Action List folgende drei Skripte verfügbar:
Script: solger_Smart split MIDI item (trim left note parts at cursor).lua
Script: solger_Smart split MIDI item (trim right note parts at cursor).lua
Script: solger_Smart split MIDI item (trim shorter note parts at cursor).lua
Der Schwellenwert für die (linke, rechte oder kürzere) Notenteil-Länge, die getrimmt werden soll, kann man innerhalb der Skripte anhand der noteLength und noteMultiplier Parameter anpassen - standardmäßig werden alle Notenteile getrimmt.
Die 3 Schritte (Noten selektieren, Trimmen und Item splitten) wurde jetzt alle in ein einzelnes Skript gepackt, d.h. eine Custom Action ist jetzt auch nicht mehr notwendig.
@Stevie: danke auch nochmals fürs Verwenden vom Code!
Danke nochmal! Ich kann aber leider keines der Scripte in Reapack finden..sind sie noch nicht hochgeladen oder muss ich noch irgendwas anderes tun..?
Danke nochmal! Ich kann aber leider keines der Scripte in Reapack finden..sind sie noch nicht hochgeladen oder muss ich noch irgendwas anderes tun..?
Sorry for the noise, habe 'Synchronize packages' gefunden und damit auch das Script!
solger
10-17-2019, 12:45 PM
Ich habe in der Zwischenzeit noch eine Sache herausgefunden, die mir vorher nicht bewusst war, zwecks Optimierung.
Wenn man vor einer "Noten-Funktion" reaper.MIDI_DisableSort(take) nutzt
und am Ende der Funktion "reaper.MIDI_Sort(take)" aufruft, dann ist die Ausführung
um einiges schneller. Dazu muss man aber in allen MIDI_SetNote() den letzen Wert auf "nil" setzen. Sonst wird bei jedem Durchgang MIDI Sort aufgerufen, was natürlich Zeit frisst.
Danke für den Hinweis, hab's in meiner Liste ergänzt.
Es kommen sicherlich auch noch irgendwelche anderen Punkte auf, an die man noch nicht gedacht hat und wo man fürs nächste Update optimieren kann. Aber irgendwann muss eine Version 1.0 ja mal raus als Anfangspunkt :D
_Stevie_
10-17-2019, 01:58 PM
Alles gut! Ich wollte nur meine neuen Erkenntnisse teilen :p
Ich muss meinen ganzen Skripte dahingehend ändern... :D
solger
10-19-2019, 11:01 AM
Version 2.0 ist nun verfügbar :)
_Stevie_
10-19-2019, 11:46 AM
Yeah, danke! :)
vBulletin® v3.8.11, Copyright ©2000-2025, vBulletin Solutions Inc.