|
|
|
09-03-2015, 08:00 AM
|
#1
|
Human being with feelings
Join Date: Nov 2009
Location: Belgium
Posts: 10,474
|
[Tuto Vidéo] Action contextuelle.
Bonjour à tous, suite à une demande de Vincent Sermone, voici un tutoriel vidéo sur les action contextuelles dans REAPER 5
http://youtu.be/CwpxyIvuzUM
INSTALLATION SWS OBLIGATOIRE!!!
merci à BREEDER pour l'aide du code!
Code:
///GABARIT pour la realisation d'action contexutelle par ReNo Mellow. Thanks to Breeder for the golden starting point!
/// Mode d'emploi :
/// pour appeller une action il suffit de noter action suivi de l'action ID entre parenthese
/// exemple : action (65535)
/// pour appeller une action SWS, une custom action ou un script, utilisez sws suivi de l'ID de l'action
// entre parentheses et entre guillemets
/// exemple : sws("_S&M_MOUSE_L_CLICK")
/// pour appeller une action MIDI, une custom action ou un script, utilisez midi suivi de l'ID de l'action
// entre parentheses
/// exemple : midi (65535)
///pour appeller une action SWS, une custom action ou un script de l'editeur MIDI, utilisez midisws suivi de l'ID de l'action
// entre parentheses et entre guillemets
/// exemple : midisws ("_S&M_MOUSE_L_CLICK")
/// NE PAS TOUCHER CETTE PARTIE
function action (param)
(
Main_OnCommand(param,0);
);
function sws (param)
(
Main_OnCommand(NamedCommandLookup (param), 0);
);
function midi (param)
(
MIDIEditor_LastFocused_OnCommand(param,0);
);
function midisws (param)
(
MIDIEditor_LastFocused_OnCommand(NamedCommandLookup(param), 0);
);
Undo_BeginBlock();
// Call BR_GetMouseCursorContext API from SWS to get current details for stuff under mouse cursor
extension_api("BR_GetMouseCursorContext", #window, #segment, #details);
overTimeSel = 0;
// Get time selection info
GetSet_LoopTimeRange2(0, 0, 0, tStart, tEnd, 0);
(tStart != tEnd) ?
(
mousePos = extension_api("BR_GetMouseCursorContext_Position"); // call this only after calling BR_GetMouseCursorContext to obtain data for current mouse position
mousePos >= tStart && mousePos <= tEnd ? overTimeSel = 1;
);
/// ZONE d'EDITION UTILISATEUR ////////////////////////////////
// Si la souris est au dessus de la barre de Transport :
!strcmp(#window, "transport") ?
(
action(65535);
)
/// Si la souris est au dessus du tcp :
: !strcmp(#window, "tcp") && !strcmp(#segment, "track") ?
(
action(65535);
)
/// Si la souris est au dessus du tcp vide :
: !strcmp(#window, "tcp") && !strcmp(#segment, "empty") ?
(
action(65535);
)
/// Si la souris est au dessus du ecp :
: !strcmp(#window, "tcp") && !strcmp(#segment, "envelope") ?
(
action(65535);
)
/// Si la souris est au dessus du mcp :
: !strcmp(#window, "mcp") && !strcmp(#segment, "track") ?
(
action(65535);
)
/// Si la souris est au dessus du mcp vide :
: !strcmp(#window, "mcp") && !strcmp(#segment, "empty") ?
(
action(65535);
)
/// Si la souris est au dessus de la ligne des regions :
: !strcmp(#window, "ruler") && !strcmp(#segment, "region_lane") ?
(
action(65535);
)
/// Si la souris est au dessus de la ligne des marqueurs :
: !strcmp(#window, "ruler") && !strcmp(#segment, "marker_lane") ?
(
action(65535);
)
/// Si la souris est au dessus de la ligne des marqueurs de tempo :
: !strcmp(#window, "ruler") && !strcmp(#segment, "tempo_lane") ?
(
action(65535);
)
/// Si la souris est au dessus de la ligne temporelle (ruler)
: !strcmp(#window, "ruler") && !strcmp(#segment, "timeline") ?
(
action(65535);
)
/// Si la souris est au dessus d'un section de piste vide
: !strcmp(#window, "arrange") && !strcmp(#segment, "track") && !strcmp(#details, "empty") ?
(
action(65535);
)
/// Si la souris est au dessus d'un item (objet):
: !strcmp(#window, "arrange") && !strcmp(#segment, "track") && !strcmp(#details, "item") ?
(
action(65535);
)
/// Si la souris est au dessus d'un marqueur d'etirement (stretch marker) :
: !strcmp(#window, "arrange") && !strcmp(#segment, "track") && !strcmp(#details, "item_stretch_marker") ?
(
action(65535);
)
/// Si la souris est au dessus d'un point d'envelope de prise:
: !strcmp(#window, "arrange") && !strcmp(#segment, "track") && !strcmp(#details, "env_point") ?
(
action(65535);
)
/// Si la souris est au dessus d'un segment d'envelope de pris :
: !strcmp(#window, "arrange") && !strcmp(#segment, "track") && !strcmp(#details, "env_segment") ?
(
action(65535);
)
/// Si la souris est au dessus d'une envelope vide
: !strcmp(#window, "arrange") && !strcmp(#segment, "envelope") && !strcmp(#details, "empty") ?
(
action(65535);
)
/// Si la souris est au dessus d'un point d'envelope
: !strcmp(#window, "arrange") && !strcmp(#segment, "envelope") && !strcmp(#details, "env_point") ?
(
action(65535);
)
/// Si la souris est au dessus d'un segment d'envelope
: !strcmp(#window, "arrange") && !strcmp(#segment, "envelope") && !strcmp(#details, "env_segment") ?
(
action(65535);
)
/// Si la souris est au dessus d'une partie vide de l'arrangement
: !strcmp(#window, "arrange") && !strcmp(#segment, "empty") ?
(
action(65535);
)
/// MIDI ////////////////////////////////////////////////////
/// Si la souris est au dessus de la ligne temporelle (ruler) de l'editeur MIDI
: !strcmp(#window, "midi_editor") && !strcmp(#segment, "ruler") ?
(
midi(65535);
)
/// Si la souris est au dessus du Piano (gauche de l'ecran)
: !strcmp(#window, "midi_editor") && !strcmp(#segment, "piano") ?
(
midi(65535);
)
/// Si la souris est au dessus du piano roll ou d'un note
: !strcmp(#window, "midi_editor") && !strcmp(#segment, "notes") ?
(
midi(65535);
)
/// Si la souris est au dessus du selecteur de cc
: !strcmp(#window, "midi_editor") && !strcmp(#segment, "cc_lane") && !strcmp(#details, "cc_selector") ?
(
midi(65535);
)
/// Si la souris est au dessus de la ligne d'edition des cc
: !strcmp(#window, "midi_editor") && !strcmp(#segment, "cc_lane") && !strcmp(#details, "cc_lane") ?
(
midi(65535);
)
////////////// STOP ////////////////
;
UpdateArrange();
/////N'oubliez pas le nom de votre action
Undo_EndBlock("Contextual action name", 0);
|
|
|
09-03-2015, 08:37 AM
|
#2
|
Human being with feelings
Join Date: Jan 2010
Posts: 2,691
|
Merci Reno,
finalement, ce n'est pas si compliqué que ça...
mine de rien c'est tellement pratique que ça mériterait d'être implémenté, je vais relancer le thread anglais d'ici peu
|
|
|
09-03-2015, 09:02 AM
|
#3
|
Human being with feelings
Join Date: Nov 2009
Location: Belgium
Posts: 10,474
|
Quote:
finalement, ce n'est pas si compliqué que ça...
|
Tu vois, par contre, pour mettre le template en place, j'ai quand meme un peu eu du mal m'voyez Bon Breeder m'a bien aidé
Là, maintenant; je parie que t'es en train de mettre des action ID dans des parenthèses
|
|
|
09-03-2015, 09:14 AM
|
#4
|
Human being with feelings
Join Date: Sep 2011
Posts: 353
|
Classe le Gabarit !!
merci,
Perso je saute pas dessus mais je vais y venir c'est certain
Et ce qui serai cool, (je l'ai déja lu y a quelque temps ici), c'est :
un Sticky "Script FR"
Ton gabarit laisse le choix et explique bien comment on fait, c'est le genre de truc qu'on doit pouvoir retrouver direct sans chercher.
|
|
|
09-03-2015, 09:33 AM
|
#5
|
Petit manitou
Join Date: Feb 2009
Location: Mars
Posts: 7,356
|
C'est super, vraiment !!! Merci merci merci !
|
|
|
09-03-2015, 10:43 AM
|
#6
|
Petit manitou
Join Date: Feb 2009
Location: Mars
Posts: 7,356
|
Quote:
Originally Posted by Reno.thestraws
Bonjour à tous, suite à une demande de Vincent Sermone, voici un tutoriel vidéo sur les action contextuelles dans REAPER 5
http://youtu.be/CwpxyIvuzUM
INSTALLATION SWS OBLIGATOIRE!!!
merci à BREEDER pour l'aide du code!
Code:
///GABARIT pour la realisation d'action contexutelle par ReNo Mellow. Thanks to Breeder for the golden starting point!
/// Mode d'emploi :
/// pour appeller une action il suffit de noter action suivi de l'action ID entre parenthese
/// exemple : action (65535)
/// pour appeller une action SWS, une custom action ou un script, utilisez sws suivi de l'ID de l'action
// entre parentheses et entre guillemets
/// exemple : sws("_S&M_MOUSE_L_CLICK")
/// pour appeller une action MIDI, une custom action ou un script, utilisez midi suivi de l'ID de l'action
// entre parentheses
/// exemple : midi (65535)
///pour appeller une action SWS, une custom action ou un script de l'editeur MIDI, utilisez midisws suivi de l'ID de l'action
// entre parentheses et entre guillemets
/// exemple : midisws ("_S&M_MOUSE_L_CLICK")
/// NE PAS TOUCHER CETTE PARTIE
function action (param)
(
Main_OnCommand(param,0);
);
function sws (param)
(
Main_OnCommand(NamedCommandLookup (param), 0);
);
function midi (param)
(
MIDIEditor_LastFocused_OnCommand(param,0);
);
function midisws (param)
(
MIDIEditor_LastFocused_OnCommand(NamedCommandLookup(param), 0);
);
Undo_BeginBlock();
// Call BR_GetMouseCursorContext API from SWS to get current details for stuff under mouse cursor
extension_api("BR_GetMouseCursorContext", #window, #segment, #details);
overTimeSel = 0;
// Get time selection info
GetSet_LoopTimeRange2(0, 0, 0, tStart, tEnd, 0);
(tStart != tEnd) ?
(
mousePos = extension_api("BR_GetMouseCursorContext_Position"); // call this only after calling BR_GetMouseCursorContext to obtain data for current mouse position
mousePos >= tStart && mousePos <= tEnd ? overTimeSel = 1;
);
/// ZONE d'EDITION UTILISATEUR ////////////////////////////////
// Si la souris est au dessus de la barre de Transport :
!strcmp(#window, "transport") ?
(
action(65535);
)
/// Si la souris est au dessus du tcp :
: !strcmp(#window, "tcp") && !strcmp(#segment, "track") ?
(
action(65535);
)
/// Si la souris est au dessus du tcp vide :
: !strcmp(#window, "tcp") && !strcmp(#segment, "empty") ?
(
action(65535);
)
/// Si la souris est au dessus du ecp :
: !strcmp(#window, "tcp") && !strcmp(#segment, "envelope") ?
(
action(65535);
)
/// Si la souris est au dessus du mcp :
: !strcmp(#window, "mcp") && !strcmp(#segment, "track") ?
(
action(65535);
)
/// Si la souris est au dessus du mcp vide :
: !strcmp(#window, "mcp") && !strcmp(#segment, "empty") ?
(
action(65535);
)
/// Si la souris est au dessus de la ligne des regions :
: !strcmp(#window, "ruler") && !strcmp(#segment, "region_lane") ?
(
action(65535);
)
/// Si la souris est au dessus de la ligne des marqueurs :
: !strcmp(#window, "ruler") && !strcmp(#segment, "marker_lane") ?
(
action(65535);
)
/// Si la souris est au dessus de la ligne des marqueurs de tempo :
: !strcmp(#window, "ruler") && !strcmp(#segment, "tempo_lane") ?
(
action(65535);
)
/// Si la souris est au dessus de la ligne temporelle (ruler)
: !strcmp(#window, "ruler") && !strcmp(#segment, "timeline") ?
(
action(65535);
)
/// Si la souris est au dessus d'un section de piste vide
: !strcmp(#window, "arrange") && !strcmp(#segment, "track") && !strcmp(#details, "empty") ?
(
action(65535);
)
/// Si la souris est au dessus d'un item (objet):
: !strcmp(#window, "arrange") && !strcmp(#segment, "track") && !strcmp(#details, "item") ?
(
action(65535);
)
/// Si la souris est au dessus d'un marqueur d'etirement (stretch marker) :
: !strcmp(#window, "arrange") && !strcmp(#segment, "track") && !strcmp(#details, "item_stretch_marker") ?
(
action(65535);
)
/// Si la souris est au dessus d'un point d'envelope de prise:
: !strcmp(#window, "arrange") && !strcmp(#segment, "track") && !strcmp(#details, "env_point") ?
(
action(65535);
)
/// Si la souris est au dessus d'un segment d'envelope de pris :
: !strcmp(#window, "arrange") && !strcmp(#segment, "track") && !strcmp(#details, "env_segment") ?
(
action(65535);
)
/// Si la souris est au dessus d'une envelope vide
: !strcmp(#window, "arrange") && !strcmp(#segment, "envelope") && !strcmp(#details, "empty") ?
(
action(65535);
)
/// Si la souris est au dessus d'un point d'envelope
: !strcmp(#window, "arrange") && !strcmp(#segment, "envelope") && !strcmp(#details, "env_point") ?
(
action(65535);
)
/// Si la souris est au dessus d'un segment d'envelope
: !strcmp(#window, "arrange") && !strcmp(#segment, "envelope") && !strcmp(#details, "env_segment") ?
(
action(65535);
)
/// Si la souris est au dessus d'une partie vide de l'arrangement
: !strcmp(#window, "arrange") && !strcmp(#segment, "empty") ?
(
action(65535);
)
/// MIDI ////////////////////////////////////////////////////
/// Si la souris est au dessus de la ligne temporelle (ruler) de l'editeur MIDI
: !strcmp(#window, "midi_editor") && !strcmp(#segment, "ruler") ?
(
midi(65535);
)
/// Si la souris est au dessus du Piano (gauche de l'ecran)
: !strcmp(#window, "midi_editor") && !strcmp(#segment, "piano") ?
(
midi(65535);
)
/// Si la souris est au dessus du piano roll ou d'un note
: !strcmp(#window, "midi_editor") && !strcmp(#segment, "notes") ?
(
midi(65535);
)
/// Si la souris est au dessus du selecteur de cc
: !strcmp(#window, "midi_editor") && !strcmp(#segment, "cc_lane") && !strcmp(#details, "cc_selector") ?
(
midi(65535);
)
/// Si la souris est au dessus de la ligne d'edition des cc
: !strcmp(#window, "midi_editor") && !strcmp(#segment, "cc_lane") && !strcmp(#details, "cc_lane") ?
(
midi(65535);
)
////////////// STOP ////////////////
;
UpdateArrange();
/////N'oubliez pas le nom de votre action
Undo_EndBlock("Contextual action name", 0);
|
J'ai un message d'erreur quand je veux sauver:
Pourtant j'ai bien fait trois fois la manip de copie pensant à une maladresse (asses courante) de ma part.
|
|
|
09-03-2015, 11:00 AM
|
#7
|
Human being with feelings
Join Date: Nov 2009
Location: Belgium
Posts: 10,474
|
Simplement quand tu copies le template?
je viens d'essayer!
ca marche!
la dernier ligne doit être
Undo_EndBlock("Contextual action name", 0);
et les ; sont important à chaque ligne!
|
|
|
09-03-2015, 11:01 AM
|
#8
|
Human being with feelings
Join Date: Nov 2009
Location: Belgium
Posts: 10,474
|
ARFFF8 je viens de voir ton image plus en détail!
c'est un SCRIPT EEL et non un LUA...
tu dois enregistrer ton script en
blabla.eel
et non blabla.lua
|
|
|
09-03-2015, 11:12 AM
|
#9
|
Petit manitou
Join Date: Feb 2009
Location: Mars
Posts: 7,356
|
Quote:
Originally Posted by Reno.thestraws
ARFFF8 je viens de voir ton image plus en détail!
c'est un SCRIPT EEL et non un LUA...
tu dois enregistrer ton script en
blabla.eel
et non blabla.lua
|
aaaah j'y retourne alors! edit: ça marche !!!
Last edited by Vincent Sermonne; 09-03-2015 at 11:40 AM.
|
|
|
09-04-2015, 02:50 AM
|
#10
|
Human being with feelings
Join Date: Jan 2010
Posts: 2,691
|
Quote:
Originally Posted by Reno.thestraws
Là, maintenant; je parie que t'es en train de mettre des action ID dans des parenthèses
|
et bien pas vraiment, je suis surtout en train de réfléchir à comment je vais m'organiser, car les possibilités sont VRAIMENT NOMBREUSES!
|
|
|
09-04-2015, 02:51 AM
|
#11
|
Human being with feelings
Join Date: Jan 2010
Posts: 2,691
|
Quote:
Originally Posted by Side
Classe le Gabarit !!
Et ce qui serai cool, (je l'ai déja lu y a quelque temps ici), c'est :
un Sticky "Script FR"
|
pleuss ouane
|
|
|
09-04-2015, 03:27 AM
|
#12
|
Human being with feelings
Join Date: Nov 2009
Location: Belgium
Posts: 10,474
|
Quote:
Originally Posted by creal
et bien pas vraiment, je suis surtout en train de réfléchir à comment je vais m'organiser, car les possibilités sont VRAIMENT NOMBREUSES!
|
Une belle façon d'organiser les choses dans un premier temps et sans perturber trop ses habitudes c'est de raccorder les actions contextuelles aux raccourcis + shift (ou alt ou autre combi)
Comme ca, par exemple ton S, il fait toujours pareil et c'est shift s qui est contextuel.
Tu peux également utiliser un dummy toggle général qui tu nommes pas exemple "context"
En gros si ton dummy toggle est actif, tes raccourics clavier sont contextuelS, si non, il sont normaux
|
|
|
09-04-2015, 06:39 AM
|
#13
|
Petit manitou
Join Date: Feb 2009
Location: Mars
Posts: 7,356
|
Quote:
Originally Posted by Reno.thestraws
Une belle façon d'organiser les choses dans un premier temps et sans perturber trop ses habitudes c'est de raccorder les actions contextuelles aux raccourcis + shift (ou alt ou autre combi)
Comme ca, par exemple ton S, il fait toujours pareil et c'est shift s qui est contextuel.
Tu peux également utiliser un dummy toggle général qui tu nommes pas exemple "context"
En gros si ton dummy toggle est actif, tes raccourics clavier sont contextuelS, si non, il sont normaux
|
Le dernier point est tres bien mais je craint d'alambiquer un peu plus. Je pense que le plus sage est d'en faire le minimum, les plus logique, les plus utilisé.
|
|
|
09-04-2015, 10:14 AM
|
#14
|
Human being with feelings
Join Date: Nov 2009
Location: Belgium
Posts: 10,474
|
Oui, faut pas trop de changements d'un coup
Parmi ceux que j'emploi
Contextual split
Contextuel loop
Group
Duplicate
Delete (ca c'est ultimement pratique en le construisant bien
|
|
|
09-14-2015, 12:18 PM
|
#15
|
Human being with feelings
Join Date: Oct 2011
Location: Suisse
Posts: 311
|
Waw c'est super ce truc !merçi un peux dur de choisir parmis toutes ces possibiltés
|
|
|
09-14-2018, 05:04 PM
|
#16
|
Human being with feelings
Join Date: Sep 2016
Posts: 513
|
bounjour reno
Je c bien que ce fil n"est pas très jeune j'utilise ce scripte depuis un bon moment ca me facilite grandement la vie.
je me permet de te demander si tu n'aurais pas implémenter les automations item ?
merci tout de meme
|
|
|
09-15-2018, 07:16 AM
|
#17
|
Human being with feelings
Join Date: Nov 2009
Location: Belgium
Posts: 10,474
|
J'aimerais beaucoup, malheureusement C'est au niveau de l'ami des sms que ça coince et sur lequel je j'ai aucun contrôle
|
|
|
09-22-2018, 06:40 PM
|
#18
|
Human being with feelings
Join Date: Sep 2016
Posts: 513
|
Merci tout de mëme.
|
|
|
12-19-2019, 04:22 AM
|
#19
|
Petit manitou
Join Date: Feb 2009
Location: Mars
Posts: 7,356
|
je reveil le thread:
L'id d'une action script reste blanche et du coup ne fonctionne pas:
|
|
|
12-19-2019, 04:54 AM
|
#20
|
Human being with feelings
Join Date: Nov 2009
Location: Belgium
Posts: 10,474
|
@ vincent
met le nom de l'ID entre " "
et surtout, a la ligne du TCP, tu appelle un script
ton code doit donc être
sws ("RS4552......a1")
et non
action (RS4552.....a1")
|
|
|
09-15-2020, 04:01 PM
|
#21
|
Human being with feelings
Join Date: Sep 2016
Posts: 513
|
Bonjour je ne retrouve pas le fil pour la nouvelle version avec plus de fontion pouvez vous maider ?
|
|
|
09-20-2020, 02:40 PM
|
#22
|
Human being with feelings
Join Date: May 2012
Posts: 1,279
|
Salut Reno, Tu es rentré de vacances ? Tu as passé un bel été ?
Tu as eu l'occasion de jeter un œil à mon poste :
https://forum.cockos.com/showthread.php?t=242018
;-)
On est littéralement perdus sans toi !
|
|
|
03-09-2021, 03:57 PM
|
#23
|
Human being with feelings
Join Date: Sep 2019
Location: france
Posts: 2,317
|
bonjour
est ce qu'il y a possibilité de faire des actions quand on est au dessus de l'éditeur midi en ligne svp?
merci
|
|
|
03-14-2021, 02:14 PM
|
#24
|
Human being with feelings
Join Date: Jun 2017
Location: Paris-Bruxelles
Posts: 1,266
|
Quote:
Originally Posted by tohubohu
bonjour
est ce qu'il y a possibilité de faire des actions quand on est au dessus de l'éditeur midi en ligne svp?
merci
|
Pas à ma connaissance, les actions seront identiques à celles qui gèrent les Items. Pas à l'édition midi d'un Item . Sauf à être dans la page midi editor qui n'est plus la page principale.
|
|
|
12-30-2023, 11:07 AM
|
#26
|
Petit manitou
Join Date: Feb 2009
Location: Mars
Posts: 7,356
|
Déterrage pour signaler que la fonction existe maintenant en natif sans faire de script mais que je la trouve moins "naturel". Faut une icone en plus
|
|
|
12-30-2023, 01:23 PM
|
#27
|
Human being with feelings
Join Date: May 2020
Location: Tours
Posts: 45
|
Est ce que c'est le bon sujet pour demander a Reno s'il a mis les outils comme l'élastic ( E) a jour avec la version 7?
|
|
|
12-30-2023, 01:55 PM
|
#28
|
Petit manitou
Join Date: Feb 2009
Location: Mars
Posts: 7,356
|
non pas vraiment, c'est pas le sujet, envoi lui un mp.
|
|
|
Thread Tools |
|
Display Modes |
Linear Mode
|
Posting Rules
|
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts
HTML code is Off
|
|
|
All times are GMT -7. The time now is 02:28 PM.
|