Espero me puedan ayudar, gracias.
Dividir una pista midi en varias,(la bateria) kick,snare,etc
OFERTASVer todas
-
-7%Modal Argon8 (B-Stock)
-
-40%Roland SPD-20 Pro BK Octapad
-
-13%Roland Juno-D6
Baneado
Pues sí !!! SE PUEDE!!!!
aún que no directamente con alguna función al uso sinó utilizando una herramienta muy descocida del Cakawalk-Sonar que se llama CAL.
CAL es un lengage de progra,mación propio del Cakewalk, muy parecido al C, que nos permite hacer casi cualquier cosa que se nos haya podido pasar nunca por la cabeza y que logicamente los seqüenciadores todas, todas las funciones no pueden incorporar.
Éste que te paso a continuación es el códogo que hace exactamente lo que tu pides. Para ejecutarlo copia el código en un fichero de texto que de deberás poner la extensión *.cal y lo ejecutas desde el SONAR en Proces>Run CAL. La pista que tengas seleccionada te la habrá porcionado en pistas!!!!!!!!!!
Por cierto; éste código no es mío, se ecuentra el la red y es de dominio público. Sólo hay que buscar un poco....
Espero que te/os sirva.
Saludos. Danisero.
;
; SPLITNOT.CAL
;
; This routine modifies a source track, splitting it by note# into
; separate destination tracks. Only notes are split ... all other
; track parameters (Controllers, Tempos, Meters and Markers),
; if any, remain in the source track.
;
; Use this routine for splitting up a drum machine or other type
; of instrument track where voices are assigned by note number.
;
; = Courtesy Red Nile Productions 1993 (714)498-7515 CIS:70044,2733
;
; = Modified 12/10/93 by Greg Hendershott at user's request to
; have this display notes as names (like C#5) rather than numbers
; in the track names. Caveat: The note names always use sharps
; and assume BaseOctave=0.
(do
(if (< VERSION 20)
(do
(pause "This CAL program requires CAL version 2.0 or higher")
(exit)
)
)
(include "need20.cal") ; Require version 2.0 or higher of CAL
(int nOctave)
(int nSrcTrk 1)
(int nDestTrk (+ nSrcTrk 1))
(int nDestChan 0)
(int nDestPort 1)
(int nNote 0)
(int bEvent FALSE)
(getInt nSrcTrk "Source Track?" 1 256)
(-- nSrcTrk) ; CAL uses 0..255
(getInt nDestTrk "First Destination Track?" 1 256)
(-- nDestTrk) ; CAL uses 0..255
(getInt nDestChan "Destination Channel?" 0 16)
(-- nDestChan) ; CAL uses -1..15
(getInt nDestPort "Destination Port?" 1 16)
(-- nDestPort) ; 0 .. 15
; If markers not set, select entire range
(if (== From Thru)
(do
(= From 0)
(= Thru End)
)
)
; Select only source track
(TrackSelect 0 -1)
(TrackSelect 1 nSrcTrk)
; Set filter params. Split notes only ..
; Controllers stay in source track.
(ResetFilter 0 TRUE)
(SetFilterKind 0 NOTE TRUE)
(SetFilterKind 0 KEYAFT FALSE)
(SetFilterKind 0 CONTROL FALSE)
(SetFilterKind 0 PATCH FALSE)
(SetFilterKind 0 CHANAFT FALSE)
(SetFilterKind 0 WHEEL FALSE)
(while (< nNote 127)
(do
; Check for note events at current note # ...
(forEachEvent
(if (&& (== Event.Kind NOTE) (== Note.Key nNote))
(= bEvent TRUE)
)
)
; If there are note events, paste them to the destination track
(if (== bEvent TRUE)
(do
; Status message
(message "Note # " nNote " --> Track " (+ 1 nDestTrk))
; Set up filter .. item 0, NOTE, in the range nNote..nNote
(SetFilterRange 0 0 TRUE nNote nNote)
; Cut/Paste the filtered events to the destintation track
(EditCut From Thru TRUE TRUE FALSE FALSE FALSE FALSE)
(EditPasteToTrack From 1 1 TRUE FALSE FALSE FALSE nDestTrk)
; Name dest track
(= nOctave (/ nNote 12))
(switch (% nNote 12)
0 (TrackName (format "Split Note C" nOctave) nDestTrk)
1 (TrackName (format "Split Note C#" nOctave) nDestTrk)
2 (TrackName (format "Split Note D" nOctave) nDestTrk)
3 (TrackName (format "Split Note D#" nOctave) nDestTrk)
4 (TrackName (format "Split Note E" nOctave) nDestTrk)
5 (TrackName (format "Split Note F" nOctave) nDestTrk)
6 (TrackName (format "Split Note F#" nOctave) nDestTrk)
7 (TrackName (format "Split Note G" nOctave) nDestTrk)
8 (TrackName (format "Split Note G#" nOctave) nDestTrk)
9 (TrackName (format "Split Note A" nOctave) nDestTrk)
10 (TrackName (format "Split Note A#" nOctave) nDestTrk)
11 (TrackName (format "Split Note B" nOctave) nDestTrk)
)
; Set forced channel & port, and unmute it
(TrackChannel nDestChan nDestTrk)
(TrackPort nDestPort nDestTrk)
(TrackActive TRUE nDestTrk)
(++ nDestTrk)
(= bEvent FALSE)
)
)
; Else
(++ nNote)
)
)
)
aún que no directamente con alguna función al uso sinó utilizando una herramienta muy descocida del Cakawalk-Sonar que se llama CAL.
CAL es un lengage de progra,mación propio del Cakewalk, muy parecido al C, que nos permite hacer casi cualquier cosa que se nos haya podido pasar nunca por la cabeza y que logicamente los seqüenciadores todas, todas las funciones no pueden incorporar.
Éste que te paso a continuación es el códogo que hace exactamente lo que tu pides. Para ejecutarlo copia el código en un fichero de texto que de deberás poner la extensión *.cal y lo ejecutas desde el SONAR en Proces>Run CAL. La pista que tengas seleccionada te la habrá porcionado en pistas!!!!!!!!!!
Por cierto; éste código no es mío, se ecuentra el la red y es de dominio público. Sólo hay que buscar un poco....
Espero que te/os sirva.
Saludos. Danisero.
;
; SPLITNOT.CAL
;
; This routine modifies a source track, splitting it by note# into
; separate destination tracks. Only notes are split ... all other
; track parameters (Controllers, Tempos, Meters and Markers),
; if any, remain in the source track.
;
; Use this routine for splitting up a drum machine or other type
; of instrument track where voices are assigned by note number.
;
; = Courtesy Red Nile Productions 1993 (714)498-7515 CIS:70044,2733
;
; = Modified 12/10/93 by Greg Hendershott at user's request to
; have this display notes as names (like C#5) rather than numbers
; in the track names. Caveat: The note names always use sharps
; and assume BaseOctave=0.
(do
(if (< VERSION 20)
(do
(pause "This CAL program requires CAL version 2.0 or higher")
(exit)
)
)
(include "need20.cal") ; Require version 2.0 or higher of CAL
(int nOctave)
(int nSrcTrk 1)
(int nDestTrk (+ nSrcTrk 1))
(int nDestChan 0)
(int nDestPort 1)
(int nNote 0)
(int bEvent FALSE)
(getInt nSrcTrk "Source Track?" 1 256)
(-- nSrcTrk) ; CAL uses 0..255
(getInt nDestTrk "First Destination Track?" 1 256)
(-- nDestTrk) ; CAL uses 0..255
(getInt nDestChan "Destination Channel?" 0 16)
(-- nDestChan) ; CAL uses -1..15
(getInt nDestPort "Destination Port?" 1 16)
(-- nDestPort) ; 0 .. 15
; If markers not set, select entire range
(if (== From Thru)
(do
(= From 0)
(= Thru End)
)
)
; Select only source track
(TrackSelect 0 -1)
(TrackSelect 1 nSrcTrk)
; Set filter params. Split notes only ..
; Controllers stay in source track.
(ResetFilter 0 TRUE)
(SetFilterKind 0 NOTE TRUE)
(SetFilterKind 0 KEYAFT FALSE)
(SetFilterKind 0 CONTROL FALSE)
(SetFilterKind 0 PATCH FALSE)
(SetFilterKind 0 CHANAFT FALSE)
(SetFilterKind 0 WHEEL FALSE)
(while (< nNote 127)
(do
; Check for note events at current note # ...
(forEachEvent
(if (&& (== Event.Kind NOTE) (== Note.Key nNote))
(= bEvent TRUE)
)
)
; If there are note events, paste them to the destination track
(if (== bEvent TRUE)
(do
; Status message
(message "Note # " nNote " --> Track " (+ 1 nDestTrk))
; Set up filter .. item 0, NOTE, in the range nNote..nNote
(SetFilterRange 0 0 TRUE nNote nNote)
; Cut/Paste the filtered events to the destintation track
(EditCut From Thru TRUE TRUE FALSE FALSE FALSE FALSE)
(EditPasteToTrack From 1 1 TRUE FALSE FALSE FALSE nDestTrk)
; Name dest track
(= nOctave (/ nNote 12))
(switch (% nNote 12)
0 (TrackName (format "Split Note C" nOctave) nDestTrk)
1 (TrackName (format "Split Note C#" nOctave) nDestTrk)
2 (TrackName (format "Split Note D" nOctave) nDestTrk)
3 (TrackName (format "Split Note D#" nOctave) nDestTrk)
4 (TrackName (format "Split Note E" nOctave) nDestTrk)
5 (TrackName (format "Split Note F" nOctave) nDestTrk)
6 (TrackName (format "Split Note F#" nOctave) nDestTrk)
7 (TrackName (format "Split Note G" nOctave) nDestTrk)
8 (TrackName (format "Split Note G#" nOctave) nDestTrk)
9 (TrackName (format "Split Note A" nOctave) nDestTrk)
10 (TrackName (format "Split Note A#" nOctave) nDestTrk)
11 (TrackName (format "Split Note B" nOctave) nDestTrk)
)
; Set forced channel & port, and unmute it
(TrackChannel nDestChan nDestTrk)
(TrackPort nDestPort nDestTrk)
(TrackActive TRUE nDestTrk)
(++ nDestTrk)
(= bEvent FALSE)
)
)
; Else
(++ nNote)
)
)
)
No sé que programa utilizas, pero si estás en Cubase VST seleccionas la pista de batería, pones los localizadores derecho e izquierdo al principio y final de la pista (respectivamente). Conviertes la pista midi de batería en una drum track (eso lo haces haciendo clic a la izquierda de la pista donde hay dibujada una corchea y seleccionas drum track). A continuación vas al menú de arriba y seleccionas Structure y después Explode by channel. Te apareceran nuevas pistas con los instrumentos de percusión separados en cada una. Recuerda cambiar el canal midi de las pistas resultantes al canal 10.
Si usas Cubase SX elijes la pista de batería, pones los localizadores derecho e izquierdo al principio y al final de la misma. Y en el menú de arriba vas a MIDI y Disolver Parte.
Espero haberte sido de ayuda.
Un saludo,
Jacq33
Si usas Cubase SX elijes la pista de batería, pones los localizadores derecho e izquierdo al principio y al final de la misma. Y en el menú de arriba vas a MIDI y Disolver Parte.
Espero haberte sido de ayuda.
Un saludo,
Jacq33
CAL es probablemente la característica más desconocida de Cakewalk SONAR, presente desde las primeras versiones de Cakewalk para Windows. El CAL es un lenguaje de scripting que te permite hacer tus propias macros o rutinas en un lenguaje que es una mezcla de C y LISP. O lo que es lo mismo, te permite ampliar la funcionalidad de SONAR de la misma forma que las macros de Word permiten ampliar la funcionalidad de Word.
El uso habitual es para ejecutar unas acciones específicas en un conjunto de notas seleccionadas, pistas, etc. El ejemplo más bueno es el deSplitNoteToTracks. Igualmente podrías programar un CAL que cogiera varias pistas y las uniera en una sola.
El uso habitual es para ejecutar unas acciones específicas en un conjunto de notas seleccionadas, pistas, etc. El ejemplo más bueno es el deSplitNoteToTracks. Igualmente podrías programar un CAL que cogiera varias pistas y las uniera en una sola.
#8
Hola, veo esta funcion de Cakewalk que me parece muy interesante. Hice un copiar y pegar y me aparece este mensaje CAL error 001: Error de sintaxis. He intentado conseguir el fichero original o sea Split_Notes_to_Tracks_CAL.zip pero lamentablmente sin suerte. Me podrás ayudar a corregir el error?
Desde ya muchas gracias
Hola, veo esta funcion de Cakewalk que me parece muy interesante. Hice un copiar y pegar y me aparece este mensaje CAL error 001: Error de sintaxis. He intentado conseguir el fichero original o sea Split_Notes_to_Tracks_CAL.zip pero lamentablmente sin suerte. Me podrás ayudar a corregir el error?
Desde ya muchas gracias
Hilos similares
Nuevo post
Regístrate o identifícate para poder postear en este hilo