Old 10-03-2019, 07:57 AM   #1
o_e
Human being with feelings
 
o_e's Avatar
 
Join Date: May 2016
Posts: 681
Default 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:

Code:
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..
o_e is offline   Reply With Quote
Old 10-04-2019, 01:06 PM   #2
solger
Human being with feelings
 
solger's Avatar
 
Join Date: Mar 2013
Posts: 5,854
Default

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:
Code:
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):
Quote:
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)
__________________
ReaLauncher

Last edited by solger; 04-29-2020 at 06:39 AM.
solger is offline   Reply With Quote
Old 10-05-2019, 02:27 AM   #3
o_e
Human being with feelings
 
o_e's Avatar
 
Join Date: May 2016
Posts: 681
Default

Quote:
Originally Posted by solger View Post
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:
Code:
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:
Code:
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!
o_e is offline   Reply With Quote
Old 10-05-2019, 02:54 PM   #4
solger
Human being with feelings
 
solger's Avatar
 
Join Date: Mar 2013
Posts: 5,854
Default

Quote:
Originally Posted by o_e View Post
In die Custom action muss am Ende natürlich die item split action noch rein, ich nehme an, ein Flüchtigkeitsfehler:
Code:
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:
Quote:
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)

Quote:
Originally Posted by o_e View Post
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.
__________________
ReaLauncher

Last edited by solger; 10-05-2019 at 03:32 PM.
solger is offline   Reply With Quote
Old 10-05-2019, 03:45 PM   #5
o_e
Human being with feelings
 
o_e's Avatar
 
Join Date: May 2016
Posts: 681
Default

Quote:
Originally Posted by solger View Post
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..?


Quote:
Originally Posted by solger View Post
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!


o_e is offline   Reply With Quote
Old 10-05-2019, 03:55 PM   #6
solger
Human being with feelings
 
solger's Avatar
 
Join Date: Mar 2013
Posts: 5,854
Default

Quote:
Originally Posted by o_e View Post
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.
__________________
ReaLauncher

Last edited by solger; 10-05-2019 at 04:41 PM.
solger is offline   Reply With Quote
Old 10-05-2019, 05:53 PM   #7
_Stevie_
Human being with feelings
 
_Stevie_'s Avatar
 
Join Date: Oct 2017
Location: Black Forest
Posts: 5,067
Default

Du kannst gerne mein select notes script verwursten, wenn du willst.
Ergibt vielleicht mehr Sinn alles in ein Skript zu packen.
__________________
My Reascripts forum thread | My Reascripts on GitHub
If you like or use my scripts, please support the Ukraine: Ukraine Crisis Relief Fund | DirectRelief | Save The Children | Razom
_Stevie_ is offline   Reply With Quote
Old 10-06-2019, 07:03 AM   #8
solger
Human being with feelings
 
solger's Avatar
 
Join Date: Mar 2013
Posts: 5,854
Default

Quote:
Originally Posted by _Stevie_ View Post
Du kannst gerne mein select notes script verwursten, wenn du willst.
Ergibt vielleicht mehr Sinn alles in ein Skript zu packen.
Cool. Danke!
__________________
ReaLauncher
solger is offline   Reply With Quote
Old 10-06-2019, 07:10 AM   #9
_Stevie_
Human being with feelings
 
_Stevie_'s Avatar
 
Join Date: Oct 2017
Location: Black Forest
Posts: 5,067
Default

Gerne
__________________
My Reascripts forum thread | My Reascripts on GitHub
If you like or use my scripts, please support the Ukraine: Ukraine Crisis Relief Fund | DirectRelief | Save The Children | Razom
_Stevie_ is offline   Reply With Quote
Old 10-09-2019, 07:31 AM   #10
solger
Human being with feelings
 
solger's Avatar
 
Join Date: Mar 2013
Posts: 5,854
Default

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.
__________________
ReaLauncher
solger is offline   Reply With Quote
Old 10-09-2019, 01:51 PM   #11
o_e
Human being with feelings
 
o_e's Avatar
 
Join Date: May 2016
Posts: 681
Default

Quote:
Originally Posted by solger View Post
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!
o_e is offline   Reply With Quote
Old 10-16-2019, 12:26 PM   #12
solger
Human being with feelings
 
solger's Avatar
 
Join Date: Mar 2013
Posts: 5,854
Default

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!
__________________
ReaLauncher
solger is offline   Reply With Quote
Old 10-16-2019, 01:09 PM   #13
_Stevie_
Human being with feelings
 
_Stevie_'s Avatar
 
Join Date: Oct 2017
Location: Black Forest
Posts: 5,067
Default

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.
__________________
My Reascripts forum thread | My Reascripts on GitHub
If you like or use my scripts, please support the Ukraine: Ukraine Crisis Relief Fund | DirectRelief | Save The Children | Razom
_Stevie_ is offline   Reply With Quote
Old 10-17-2019, 01:49 AM   #14
o_e
Human being with feelings
 
o_e's Avatar
 
Join Date: May 2016
Posts: 681
Default

Quote:
Originally Posted by solger View Post
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..?
o_e is offline   Reply With Quote
Old 10-17-2019, 03:55 AM   #15
o_e
Human being with feelings
 
o_e's Avatar
 
Join Date: May 2016
Posts: 681
Default

Quote:
Originally Posted by o_e View Post
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!
o_e is offline   Reply With Quote
Old 10-17-2019, 12:45 PM   #16
solger
Human being with feelings
 
solger's Avatar
 
Join Date: Mar 2013
Posts: 5,854
Default

Quote:
Originally Posted by _Stevie_ View Post
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
__________________
ReaLauncher
solger is offline   Reply With Quote
Old 10-17-2019, 01:58 PM   #17
_Stevie_
Human being with feelings
 
_Stevie_'s Avatar
 
Join Date: Oct 2017
Location: Black Forest
Posts: 5,067
Default

Alles gut! Ich wollte nur meine neuen Erkenntnisse teilen
Ich muss meinen ganzen Skripte dahingehend ändern...
__________________
My Reascripts forum thread | My Reascripts on GitHub
If you like or use my scripts, please support the Ukraine: Ukraine Crisis Relief Fund | DirectRelief | Save The Children | Razom
_Stevie_ is offline   Reply With Quote
Old 10-19-2019, 11:01 AM   #18
solger
Human being with feelings
 
solger's Avatar
 
Join Date: Mar 2013
Posts: 5,854
Default

Version 2.0 ist nun verfügbar
__________________
ReaLauncher
solger is offline   Reply With Quote
Old 10-19-2019, 11:46 AM   #19
_Stevie_
Human being with feelings
 
_Stevie_'s Avatar
 
Join Date: Oct 2017
Location: Black Forest
Posts: 5,067
Default

Yeah, danke!
__________________
My Reascripts forum thread | My Reascripts on GitHub
If you like or use my scripts, please support the Ukraine: Ukraine Crisis Relief Fund | DirectRelief | Save The Children | Razom
_Stevie_ is offline   Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -7. The time now is 01:32 PM.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2024, vBulletin Solutions Inc.