View Full Version : Midi-Frage: "Select every second note" - geht das?
facets
03-10-2012, 10:21 AM
Hallo,
kann ich im Midi-Bereich statt "select all notes" auch nur jede ZWEITE Note automatisch markieren lassen? Klar - manuell geht das mit shift und click, aber würde das auch automatisch funktionieren?
Warum das?
Wer von euch Trilian besitzt, kennt die Presetreihe "true staccato". Die Basstöne einer Range sind drei Oktaven höher nochmals positioniert, nur in einer anderen Artikulation. Demnach könnte ich gemütlich in einer Bassrange Midi aufnehmen und dann würde ich jede zweite Note automatisch selektieren lassen und diese dann 3 Oktaven höher schieben.
Vielen Dank im Voraus!
Andi
gofer
03-10-2012, 11:36 AM
Leider ist diese nützliche Funktion nicht in Reaper eingebaut und auch nicht mit Action Macros zu basteln :(.
Aaaaber:
Wenn du Python (am besten v3.2) auf deinem System installiert hast (oder nix dagegen hast, es zu installieren), so das du ReaScript benutzen kannst gibt es hier http://forum.cockos.com/showthread.php?t=89209 ein Bündel mit nützlichen MIDI Editor Scripts. Eines davon ist "Unselect every second note of the same pitch". Veto hat sich entschieden zu deselektieren, statt zu selektieren, weil man dann dieselbe Aktion nochmal laufen lassen kann und danach jede vierte Note selektiert ist, usw ;).
Ich hab den inzwischen antiquierten Trilogy, auch mit True Staccato Patches. Eigentlich ist für mich der grosse Vorteil beim Live einspielen gerade dass dieselbe Tonhöhe auf zwei Tasten zu haben ist. Aber man braucht natürlich ein entsprechend langes Keyboard. Meins hat nur fünf, da fehlt dann die oberste Oktave auf der Staccato Seite, wenn man auf die Slides in den untersten Oktaven verzichtet (das tiefe B ist auch weg). Macht aber trotzdem Spass :).
Wenn ich damit spiele kommt es aber so gut wie nie vor, dass Original und Staccato-Doublette streng abwechselnd spielen. Mehr vergleichbar mit der Paradiddle Spielweise auf Drums, es entsteht automatisch eine interessante Rhythmik und Velocity Linie.
facets
03-10-2012, 02:59 PM
gofer, vielen Dank erst einmal für die Anleitung.
Reascript ist echt eine neue Welt für mich....und ich dachte immer, ich kenne Reaper schon ziemlich gut :-)
gofer
03-10-2012, 04:59 PM
Im Prinzip ist ReaScript "Extension Light". Während C++, womit Reaper Extensions wie die berühmten SWS Extensions geschrieben werden ein echt hartes Brot ist, kann sogar ein Fliegengewicht-Denker wie ich nach einiger Einarbeitungszeit mit etwas Beharrlichkeit und einem stinknormalen Text Editor sehr interessante Funktionen in Python basteln.
Der Grossteil meiner Scripts tut gar nicht viel anderes als ein normales Reaper Macro, sie triggern einfach nur Actions die es sowieso schon gibt, eine nach der anderen. sehr viele sogar nur eine einzige. Der Grund warum ich sie als ReaScript triggere ist, das man da lustig Main Window und MIDI Editor Actions mischen kann.
Extensions können Actions nur in die Main Window Sektion einbinden. Deswegen sind manche sehr nützliche SWS Aktions für MIDI (z.B "SWS/FNG: Show only used CC lanes", zaubert dir für alle benutzten CC Nummern eine CC Lane in den Editor) nur in der Main Sektion zu finden. Ein simpler Python Zweizeiler triggert diese Aktion und kann in die MIDI Editor Liste importiert werden :D. Ich hab 'zig solcher Ein- und Zweizeiler und benutz' sie dauernd.
Hier ist ein etwas längeres Script, das Aktions aus sowohl der MIDI und der Main Liste kombiniert. Immer noch keine Script-Logic, wenn-dann, Loops, oder sonstwas schlaues drin. Es werden einfach nur existierende Aktions nacheinander abgefeuert.
Es selektiert alle Noten auf der vertikalen Maus Position. Das heisst, man kann es als Klick- oder Doppelklick Aktion für einen Maus Modifier in der Piano Roll verwenden und dann selektiert es komplette Akkorde wenn man an einer Position klickt, die alle Noten schneidet. Ich liebe dieses Script :):
# Select all notes (chord) vertically at mouse cursor in the current active MIDI editor. Use as Mouse modifier action (eg piano roll double click)
# !!Needs SWS extensions!!
SAVE_CURSORPOS = RPR_NamedCommandLookup('_XENAKIOS_DOSTORECURPOS')
SAVE_TS_SLOT1 = RPR_NamedCommandLookup('_SWS_SAVETIME1')
MOVE_CURS_TO_MOUSE = 40443
UNSEL_ALL = 40214
MOVE_CURS_RIGHT_PIX = 40186
MOVE_CURS_LEFT_PIX = 40185
SET_TS_START = 40625
SET_TS_END = 40626
SEL_NOTES_IN_TIMESEL = 40746
RESTORE_TS_SLOT1 = RPR_NamedCommandLookup('_SWS_RESTTIME1')
RESTORE_CURSORPOS = RPR_NamedCommandLookup('_XENAKIOS_DORECALLCURPOS')
# action starts here:
ACTIVE_MIDI_EDITOR = RPR_MIDIEditor_GetActive() # get the current active MIDI editor
RPR_Main_OnCommand(SAVE_CURSORPOS, 0)
RPR_Main_OnCommand(SAVE_TS_SLOT1, 0)
RPR_MIDIEditor_OnCommand(ACTIVE_MIDI_EDITOR, UNSEL_ALL)
RPR_MIDIEditor_OnCommand(ACTIVE_MIDI_EDITOR, MOVE_CURS_TO_MOUSE)
RPR_Main_OnCommand(SET_TS_START, 0)
RPR_MIDIEditor_OnCommand(ACTIVE_MIDI_EDITOR, MOVE_CURS_RIGHT_PIX)
RPR_Main_OnCommand(SET_TS_END, 0)
RPR_MIDIEditor_OnCommand(ACTIVE_MIDI_EDITOR, MOVE_CURS_LEFT_PIX)
RPR_MIDIEditor_OnCommand(ACTIVE_MIDI_EDITOR, SEL_NOTES_IN_TIMESEL)
RPR_Main_OnCommand(RESTORE_TS_SLOT1, 0)
RPR_Main_OnCommand(RESTORE_CURSORPOS, 0)
Es wär halb so lang, wenn ich auf (halbwegs) lesbare Action Beschreibungen verzichtet hätte, aber ich mag's nachvollziehbar ;)
Die MIDI Scripts von Veto sind allerdings schon reichlich komplex. Meine bescheidene Version von "Select all notes of the same Pitch class" war schon kompliziert, aber Veto hat sie auf ein völlig neues Level gehievt :). Wie er die Noten aussortiert, die von Reaper's Filter versteckt werden ist mir immer noch schleierhaft. Aber coooool :cool: und äussesrt sinnvoll.
Da wollt ich nur ne kurze Notiz machen und schreib' nen Roman... ich drück trotzdem auf Submit, ihr müsst ja nicht alles lesen was irgendwo geschrieben steht, haha :).
vBulletin® v3.8.11, Copyright ©2000-2025, vBulletin Solutions Inc.