Old 09-03-2015, 08:00 AM   #1
Reno.thestraws
Human being with feelings
 
Reno.thestraws's Avatar
 
Join Date: Nov 2009
Location: Belgium
Posts: 10,253
Default [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);
Reno.thestraws is offline   Reply With Quote
Old 09-03-2015, 08:37 AM   #2
creal
Human being with feelings
 
Join Date: Jan 2010
Posts: 2,234
Default

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
creal is offline   Reply With Quote
Old 09-03-2015, 09:02 AM   #3
Reno.thestraws
Human being with feelings
 
Reno.thestraws's Avatar
 
Join Date: Nov 2009
Location: Belgium
Posts: 10,253
Default

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
Reno.thestraws is offline   Reply With Quote
Old 09-03-2015, 09:14 AM   #4
Side
Human being with feelings
 
Side's Avatar
 
Join Date: Sep 2011
Posts: 348
Default

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.
Side is offline   Reply With Quote
Old 09-03-2015, 09:33 AM   #5
Vincent Sermonne
Human being with feelings
 
Vincent Sermonne's Avatar
 
Join Date: Feb 2009
Location: Marseille France
Posts: 6,501
Default

C'est super, vraiment !!! Merci merci merci !
__________________
Vincent
http://www.tchackpoum.fr
Vincent Sermonne is offline   Reply With Quote
Old 09-03-2015, 10:43 AM   #6
Vincent Sermonne
Human being with feelings
 
Vincent Sermonne's Avatar
 
Join Date: Feb 2009
Location: Marseille France
Posts: 6,501
Default

Quote:
Originally Posted by Reno.thestraws View Post
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.
__________________
Vincent
http://www.tchackpoum.fr
Vincent Sermonne is offline   Reply With Quote
Old 09-03-2015, 11:00 AM   #7
Reno.thestraws
Human being with feelings
 
Reno.thestraws's Avatar
 
Join Date: Nov 2009
Location: Belgium
Posts: 10,253
Default

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!
Reno.thestraws is offline   Reply With Quote
Old 09-03-2015, 11:01 AM   #8
Reno.thestraws
Human being with feelings
 
Reno.thestraws's Avatar
 
Join Date: Nov 2009
Location: Belgium
Posts: 10,253
Default

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

Reno.thestraws is offline   Reply With Quote
Old 09-03-2015, 11:12 AM   #9
Vincent Sermonne
Human being with feelings
 
Vincent Sermonne's Avatar
 
Join Date: Feb 2009
Location: Marseille France
Posts: 6,501
Default

Quote:
Originally Posted by Reno.thestraws View Post
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 !!!
__________________
Vincent
http://www.tchackpoum.fr

Last edited by Vincent Sermonne; 09-03-2015 at 11:40 AM.
Vincent Sermonne is offline   Reply With Quote
Old 09-04-2015, 02:50 AM   #10
creal
Human being with feelings
 
Join Date: Jan 2010
Posts: 2,234
Default

Quote:
Originally Posted by Reno.thestraws View Post
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!
creal is offline   Reply With Quote
Old 09-04-2015, 02:51 AM   #11
creal
Human being with feelings
 
Join Date: Jan 2010
Posts: 2,234
Default

Quote:
Originally Posted by Side View Post
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
creal is offline   Reply With Quote
Old 09-04-2015, 03:27 AM   #12
Reno.thestraws
Human being with feelings
 
Reno.thestraws's Avatar
 
Join Date: Nov 2009
Location: Belgium
Posts: 10,253
Default

Quote:
Originally Posted by creal View Post
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
Reno.thestraws is offline   Reply With Quote
Old 09-04-2015, 06:39 AM   #13
Vincent Sermonne
Human being with feelings
 
Vincent Sermonne's Avatar
 
Join Date: Feb 2009
Location: Marseille France
Posts: 6,501
Default

Quote:
Originally Posted by Reno.thestraws View Post
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é.
__________________
Vincent
http://www.tchackpoum.fr
Vincent Sermonne is offline   Reply With Quote
Old 09-04-2015, 10:14 AM   #14
Reno.thestraws
Human being with feelings
 
Reno.thestraws's Avatar
 
Join Date: Nov 2009
Location: Belgium
Posts: 10,253
Default

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
Reno.thestraws is offline   Reply With Quote
Old 09-14-2015, 12:18 PM   #15
Patatac
Human being with feelings
 
Patatac's Avatar
 
Join Date: Oct 2011
Location: Suisse
Posts: 311
Default

Waw c'est super ce truc !merçi un peux dur de choisir parmis toutes ces possibiltés
Patatac is offline   Reply With Quote
Old 09-14-2018, 05:04 PM   #16
grandfougue
Human being with feelings
 
grandfougue's Avatar
 
Join Date: Sep 2016
Posts: 237
Default

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
grandfougue is offline   Reply With Quote
Old 09-15-2018, 07:16 AM   #17
Reno.thestraws
Human being with feelings
 
Reno.thestraws's Avatar
 
Join Date: Nov 2009
Location: Belgium
Posts: 10,253
Default

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
Reno.thestraws is offline   Reply With Quote
Old 09-22-2018, 06:40 PM   #18
grandfougue
Human being with feelings
 
grandfougue's Avatar
 
Join Date: Sep 2016
Posts: 237
Default

Merci tout de mëme.
grandfougue is offline   Reply With Quote
Old 12-19-2019, 04:22 AM   #19
Vincent Sermonne
Human being with feelings
 
Vincent Sermonne's Avatar
 
Join Date: Feb 2009
Location: Marseille France
Posts: 6,501
Default

je reveil le thread:
L'id d'une action script reste blanche et du coup ne fonctionne pas:
__________________
Vincent
http://www.tchackpoum.fr
Vincent Sermonne is offline   Reply With Quote
Old 12-19-2019, 04:54 AM   #20
Reno.thestraws
Human being with feelings
 
Reno.thestraws's Avatar
 
Join Date: Nov 2009
Location: Belgium
Posts: 10,253
Default

@ 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")
Reno.thestraws is offline   Reply With Quote
Old 09-15-2020, 04:01 PM   #21
grandfougue
Human being with feelings
 
grandfougue's Avatar
 
Join Date: Sep 2016
Posts: 237
Default

Bonjour je ne retrouve pas le fil pour la nouvelle version avec plus de fontion pouvez vous maider ?
grandfougue is offline   Reply With Quote
Old 09-20-2020, 02:40 PM   #22
joffo78
Human being with feelings
 
joffo78's Avatar
 
Join Date: May 2012
Posts: 1,170
Default

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 !
joffo78 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 03:01 AM.


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