Vor ungefähr 20 Jahren trat ich in die Logik ein Es gibt eine Funktion, um die Länge des Klangs mit der TAB-Taste zu verlängern. Ein Memo, von dem ich dachte, dass ein REAPER-Skript etwas Ähnliches tun könnte.
tatAddLength.py
RPR_ClearConsole()
midieditor = RPR_MIDIEditor_GetActive()
take = RPR_MIDIEditor_GetTake( midieditor )
notecntOut = 0
ccevtcntOut = 0
textsyxevtcntOut = 0
( retval, take, notecntOut, ccevtcntOut, textsyxevtcntOut ) = RPR_MIDI_CountEvts(take, notecntOut, ccevtcntOut, textsyxevtcntOut )
noteidx = notecntOut-1 #last note
selectedOut = True
mutedOut = True
startppqposOut = 0
endppqposOut = 0
chanOut = 0
pitchOut = 0
velOut = 0
( retval, take, noteidx, selectedOut, mutedOut, startppqposOut, endppqposOut, chanOut, pitchOut, velOut ) = RPR_MIDI_GetNote(take, noteidx, selectedOut, mutedOut, startppqposOut, endppqposOut, chanOut, pitchOut, velOut )
retval = RPR_MIDI_SetNote( take, noteidx, True, mutedOut, startppqposOut, endppqposOut+240, chanOut, pitchOut, velOut, False )
adjust = 0.125 * 120/RPR_TimeMap2_GetDividedBpmAtTime(0,0.125) # Tempo
RPR_MoveEditCursor(adjust, False)
retval = RPR_MIDI_SetNote( take, noteidx, True, mutedOut, startppqposOut, endppqposOut+240, chanOut, pitchOut, velOut, False )
Der von SetNote angegebene Wert ist ein MIDI-Auflösungswert namens QN. Da die 16. Note die Hauptnote ist, werden 240 durch eine feste Entscheidung hinzugefügt.
** * QN kann unabhängig vom Tempo musikalisch und punktuell gehandhabt werden. Auf der anderen Seite muss auf das globale Tempo Bezug genommen werden, um es in Echtzeit umzuwandeln. ** ** **
960 = Viertelnote 480 = Achtelnote 240 = Achtelnote
adjust = 0.125 * 120/RPR_TimeMap2_GetDividedBpmAtTime(0,0.125) # Tempo
RPR_MoveEditCursor(adjust, False)
MoveEditCursor ... Ich verstehe das nicht wirklich.
Durch Versuch und Irrtum habe ich das Gefühl, dass wenn ich 1 bei BPM120 setze, es um 1 Schlag voranschreitet. Ich dachte, es wäre Zeit, und selbst wenn ich QNTotTime oder ähnliches ausprobierte, war es anders ...
RPR_TimeMap2_GetDividedBpmAtTime(0,0.125) Gibt den gleichen Wert wie das Tempo zurück, beginnen Sie also bei 120 und Jetzt, wo ich die Länge eines Schlags habe, multipliziere ich ihn mit 1/4, um die Länge der 16. Note zu erreichen. ** * Ich bin nicht sicher, ob es hier passt **
Möglicherweise wechselt die TAB-Taste systematisch die Ansicht, sodass sich das Zuweisen von Verknüpfungen nicht gut anfühlt. (Es funktioniert nicht gut, auch wenn es zugewiesen ist) Also entschied ich mich diesmal, das X der unteren linken Taste zu verwenden. Ich benutze oft Ctr-Z, wenn ich einen Fehler mache.
Außerdem habe ich versucht, nur die Achtelnote mit der C-Taste vorzuschieben. Bild mit Pausen.
** * Die X-Taste schlägt auch, um das Fenster zu schließen, und manchmal funktioniert es nicht gut ... ein Rätsel. ** ** **
Zur Zeit von Logic sollte der Sound gedehnt werden (die Länge ist ungewiss), bevor die Note kam, also war es auch ein Akkord. In REAPER wird nur die zuletzt aufgenommene Note erweitert.
――Ich habe die 16. Note korrigiert, aber ich frage mich, ob sie hier geändert werden kann. Passend zum Raster.
( grid, take, swingOutOptional, noteLenOutOptional) = RPR_MIDI_GetGrid(take, 0, 0)
retval = RPR_MIDI_SetNote( take, noteidx, True, mutedOut, startppqposOut, endppqposOut+960*grid, chanOut, pitchOut, velOut, False )
adjust = grid * 60/RPR_TimeMap2_GetDividedBpmAtTime(0,0.25) # Tempo
Ist es so
tatAddLengthGrid.py
RPR_ClearConsole()
midieditor = RPR_MIDIEditor_GetActive()
take = RPR_MIDIEditor_GetTake( midieditor )
notecntOut = 0
ccevtcntOut = 0
textsyxevtcntOut = 0
( retval, take, notecntOut, ccevtcntOut, textsyxevtcntOut ) = RPR_MIDI_CountEvts(take, notecntOut, ccevtcntOut, textsyxevtcntOut )
noteidx = notecntOut-1 #last note
selectedOut = True
mutedOut = True
startppqposOut = 0
endppqposOut = 0
chanOut = 0
pitchOut = 0
velOut = 0
( retval, take, noteidx, selectedOut, mutedOut, startppqposOut, endppqposOut, chanOut, pitchOut, velOut ) = RPR_MIDI_GetNote(take, noteidx, selectedOut, mutedOut, startppqposOut, endppqposOut, chanOut, pitchOut, velOut )
( grid, take, swingOutOptional, noteLenOutOptional) = RPR_MIDI_GetGrid(take, 0, 0)
retval = RPR_MIDI_SetNote( take, noteidx, True, mutedOut, startppqposOut, endppqposOut+960*grid, chanOut, pitchOut, velOut, False )
adjust = grid * 60/RPR_TimeMap2_GetDividedBpmAtTime(0,0.25) # Tempo
RPR_MoveEditCursor(adjust, False)
ToDo: -Erlauben Sie es, mit dem Pedal verlängert zu werden (Dies ist MIDI, aber was tun, wenn es versehentlich explodiert, wenn der Modus anders ist. Ich möchte, dass es nur bei Stufeneingabe funktioniert)
Recommended Posts