Welcome to %s forums

BrainModular Users Forum

Login Register

Initiation à l'iml

j'ai besoin d'aide sur un patch
joffo78
Member
Posts: 1033

Unread post by joffo78 » 12 Sep 2012, 21:39

Bonsoir à tous.
En train de peaufiner mon workspace de loop je me demande si l'iml ne pourrait pas m’intéresser.
En effet,j'utiise actuellement un tas de send midi to usine pour envoyer des commande en interne interprètées
par midi learn. Cela fonctionne très bien mais l'ennui est que lorsque je souhaite envoyer des contôles midi par ailleurs
je risque de rentrer en conflit avec des contrôles déjà utiliser.Pour palier au problème, j'utilise des canaux midi rarement utilisés
(11,12,13,14) mais je me dis que si je souhaite partager mon workspace, je me dois de le rendre le plus stable possible.
Aussi, me demandé-je si il n'existerait pas une solution simple avec l'iml. L'idée étant de creer un page de contrôle avec des switch,button,fader knob et que ces contrôles envoient des messages iml pour contrôler d'autre contrôles se situant sur d'autres
pistes ou patches. Je ne sais pas si ma requête est très claire.
Merci à tous d'avance en tout cas.
Joffo

joffo78
Member
Posts: 1033

Unread post by joffo78 » 12 Sep 2012, 21:49

Je crois que j'ai trouvé la moitié de ma réponse à ma question en fouillant dans patch advanced iml qui offre plein de possibilité.
La seul question que je me pose est comment envoyer ma donnée ailleurs que dans le patch où est situé le script.
Je précise également que je souhaite spécifier une déstination précise (du genre line 5 track 2) et pas envoyer mon info partout dans usine. Enfin j'aimerais également mais dans un autre temps...:)

joffo78
Member
Posts: 1033

Unread post by joffo78 » 12 Sep 2012, 22:01

Ah j'oubliais. J'aimerais bien introduire une variable dans le script advanced iml pour définir justement la "target" de mon message.

User avatar
nay-seven
Site Admin
Posts: 5684
Location: rennes France
Contact:

Unread post by nay-seven » 12 Sep 2012, 22:10

tu trouvera pas mal de piste sur la page dédié à l'iml:

http://www.sensomusic.com/wiki/doku.php ... l_messages

exemple:

SET_TARGET_PATCH track line Set the patch on track number and line of the grid as the target

Code: Select all

SET_TARGET_PATCH 1 2  // activate the patch on track 1 and line 2

joffo78
Member
Posts: 1033

Unread post by joffo78 » 12 Sep 2012, 23:26

Merci Nay
J'ai effectivement essayé cette syntaxe sans succès :|

User avatar
nay-seven
Site Admin
Posts: 5684
Location: rennes France
Contact:

Unread post by nay-seven » 13 Sep 2012, 00:12

voila un example ?
Download

joffo78
Member
Posts: 1033

Unread post by joffo78 » 13 Sep 2012, 00:12

Voilà un exemple de wkp avec le script iml modifié : http://www.sensomusic.com/forums/upload ... lfirst.wkp
le script est le suivant:
// Send value to vst param
////////////////////////////////////////////

// parameters declaration
var input1 : Tparameter;
var input2 : Tparameter;
var input3 : Tparameter;
var s : String;


// destroy
procedure Destroy;
begin
end;

// initialisation : create parameters
procedure init;
begin
Input1 := CreateParam('plug name',ptTextField);
Input2 := CreateParam('param name',ptTextField);
Input3 := CreateParam('param value',ptDataField);

SetIsOutPut(Input1,false);
SetIsOutPut(Input2,false);
SetIsOutPut(Input3,false);


end;


procedure Callback(n:integer);
var i : integer;
begin
SendInternalMsg(' SET_TARGET_PATCH 2 2' );
if n =1 //retreive the old value
then begin
SendInternalMsg ('GET_VALUE',GetStringValue(Input1),GetStringValue(Input2),'THEPARAMVALUE');
SendInternalMsg ('SET_VALUE','PARAM','1','THEPARAMVALUE');
end
else begin
SendInternalMsg('SET_VALUE',GetStringValue(Input1),GetStringValue(Input2),FloatTostr(GetValue(Input3)));
end;

end;

// no process bloc
Avec la ligne modifiée :
SendInternalMsg(' SET_TARGET_PATCH 2 2' );
J'ai du zapper quelque chose car cela ne fonctionne pas

User avatar
nay-seven
Site Admin
Posts: 5684
Location: rennes France
Contact:

Unread post by nay-seven » 13 Sep 2012, 00:23

je ne suis pas un pro du script, mais la tu envoie le message au fader nommé PARAM, qui lui est dans le meme patch..donc ça ne peux pas marcher..?

SendInternalMsg ('SET_VALUE','PARAM','1','THEPARAMVALUE');

il te suffit de renommer ( click droit , pas le caption) le fader qui est dans la piste 2
PARAM
et la ça marche?

edit : bizarre, je n'y arrives plus...
à revoir demain....

joffo78
Member
Posts: 1033

Unread post by joffo78 » 13 Sep 2012, 01:22

Ce que je cherche à piloter,c'est le fader situé piste 2 ligne 2 nommé effectivement par le clique droit "toto".
Normalement cela suffit...

User avatar
nay-seven
Site Admin
Posts: 5684
Location: rennes France
Contact:

Unread post by nay-seven » 13 Sep 2012, 09:40

ok, par contre pourquoi l' IML par rapport à l'utilisation de bus..? dans la mesure ou tu envoie dans une autre piste , il faut que je vérifies mais je penses que tu aura 1 block de délai de la même manière..?

joffo78
Member
Posts: 1033

Unread post by joffo78 » 13 Sep 2012, 12:04

Le problème des buses c'est qu'il neutralise le contrôle de mes parametres. Meme avec des pass if has change c'est la zone.
Si par exemple j'enclenche en switch à distance avec un autre switch qui distribue des valeurs à pluseurs switches, quand je retourne à mon premier switch celui ci récupère la valeur du switch maître etc...
Non le iml est assurément le type de message qu'il me faut. Et je ne pense pas que cela rajoute un bloc comme les buses.

User avatar
nay-seven
Site Admin
Posts: 5684
Location: rennes France
Contact:

Unread post by nay-seven » 13 Sep 2012, 13:16

voila un exemple sans script, je pense qu'il faut appliquer cette méthode à ton script
cad, utiliser sender_patch pour récupérer l'info et ensuite seulement donner les indications de track et ligne
download

joffo78
Member
Posts: 1033

Unread post by joffo78 » 14 Sep 2012, 00:49

Merci infiniment je zieute ça !

joffo78
Member
Posts: 1033

Unread post by joffo78 » 14 Sep 2012, 01:35

Bon on progresse mais ce n'est pas encore ça.
Afin d'avancer davantage, j'ai déclaré deux nouvelles variables à mon script pour choisir la piste et la ligne concernée.
Voici le script :
/////////////////////////////////////////////
// Send value to vst param
////////////////////////////////////////////

// parameters declaration
var input1 : Tparameter;
var input2 : Tparameter;
var input3 : Tparameter;
var input4 : Tparameter;
var input5 : Tparameter;
var s : String;


// destroy
procedure Destroy;
begin
end;

// initialisation : create parameters
procedure init;
begin
Input1 := CreateParam('plug name',ptTextField);
Input2 := CreateParam('param name',ptTextField);
Input3 := CreateParam('param value',ptDataField);
Input4 := CreateParam('track',ptDataField);
Input5 := CreateParam('line',ptDataField);

SetIsOutPut(Input1,false);
SetIsOutPut(Input2,false);
SetIsOutPut(Input3,false);
SetIsOutPut(Input4,false);
SetIsOutPut(Input5,false);


end;


procedure Callback(n:integer);
var i : integer;
begin
SendInternalMsg('SET_TARGET_PATCH (Input4)(input5)');
if n =1 //retreive the old value
then begin
SendInternalMsg ('GET_VALUE',GetStringValue(Input1),GetStringValue(Input2),'THEPARAMVALUE');
SendInternalMsg ('SET_VALUE','PARAM','1','THEPARAMVALUE');
end
else begin
SendInternalMsg('SET_VALUE',GetStringValue(Input1),GetStringValue(Input2),FloatTostr(GetValue(Input3)));
end;

end;

// no process bloc
J'ignore ce qui ne va pas.
Ai je le droit de me servir des variables dans un iml comme sur cette ligne :
SendInternalMsg('SET_TARGET_PATCH (Input4)(input5)');
Y'a t'il un truc qui m'aurait échappé.
J'avoue avoir un peu du mal à savoir où placer le set target patch avec les infos qui suivent et le sender patch.
Voici mon wkp : iml
Avis aux amateurs !

User avatar
nay-seven
Site Admin
Posts: 5684
Location: rennes France
Contact:

Unread post by nay-seven » 14 Sep 2012, 08:10

je n'ai pas l'impression que tu utilise la même méthode que moi

dans mon module IML , il y avais 2 SET_TARGET , le premier pour obtenir les valeurs dans le patch actuel et ensuite on change vers trackX, ligneY avant d'envoyer les valeurs:

Code: Select all

SET_TARGET_PATCH SENDER_PATCH 
GET_VALUE source knob var
SET_TARGET_PATCH 2 2
SET_VALUE test fader var
sinon, dans d'autre script ( 23fx) j'ai vu qu'il mettait ces paramètres entre virgules:

Code: Select all

   SendInternalMsg('SET_TARGET_PATCH','SENDER_PATCH');

joffo78
Member
Posts: 1033

Unread post by joffo78 » 14 Sep 2012, 09:15

Bonjour Nay.
A vrai dire j'ai essayé ta méthode qui en toute logique consiste à déclarer la cible avec d'envoyer la valeur.
Ca n'a pas marché non plus.
Mon autre question est, penses tu que je m'y prends bien en écrivant "set target patch (input4)(input5) à la place de "2 2"
input4 & input5 étant mes deux variables de track & line.

User avatar
nay-seven
Site Admin
Posts: 5684
Location: rennes France
Contact:

Unread post by nay-seven » 14 Sep 2012, 09:30

puisque ça marche dans le module IML, il n'y a pas de raison que ça ne marche pas dans le script, après ( et je rejoins ta deuxième question) il y a peux être effectivement des histoires de syntaxes
le souci est que je n'ai pas assez pratiqué les scripts pour le voir facilement et je n'ai pas trop le temps de m'y mettre en ce moment ( Priorité V6)
peut être reposter le script/patch actuel dans la partie anglaise, bsork passe régulièrement..

joffo78
Member
Posts: 1033

Unread post by joffo78 » 14 Sep 2012, 12:17

Bon en attendant une réponse d'un anglophone,Nay, avec ta méthode, comment pourrait on faire pour que lorsque je choisi un autre paramètre à contrôler, le knob source récupère la valeur de ce paramètre avant de le piloter.
J'ai essayé de fabriquer un message avec un create comma text pour changer la nature des paramètres (knob,fader,button,switch),
le nom de la cible, le nom de la source.
l'idée étant: je choisi ma cible (type et localisation), le contrôleur source récupère la valeur.
je contrôle cette cible.
Merci infiniment.
Jf

joffo78
Member
Posts: 1033

Unread post by joffo78 » 14 Sep 2012, 12:33

J'ai réussi à obtenir quelque chose qui fonctionne : iml comma text
Mais bon c'est un peu copieux !

joffo78
Member
Posts: 1033

Unread post by joffo78 » 14 Sep 2012, 12:39

Ah ! Après test, cela fonctionne mais etant donné que les espaces ne sont pas conservés dans les textes ça ne marche plus quand on re-charge le patch :(

User avatar
nay-seven
Site Admin
Posts: 5684
Location: rennes France
Contact:

Unread post by nay-seven » 14 Sep 2012, 13:03

oui, effectivement !, le script serait vraiment un plus..!
sinon, ça a marché ici

joffo78
Member
Posts: 1033

Unread post by joffo78 » 14 Sep 2012, 13:36

Voici une nouvelle version new
Il suffit ici de sélectionner le type de source,le type de cible , la piste, la ligne et roulez jeunesse !
:D

User avatar
nay-seven
Site Admin
Posts: 5684
Location: rennes France
Contact:

Unread post by nay-seven » 15 Sep 2012, 15:41

par contre , j'ai bien eu confirmation de la part de Senso concernant le délai, les bus sont même plus rapides que l'iml...

joffo78
Member
Posts: 1033

Unread post by joffo78 » 15 Sep 2012, 21:46

ok donc je vais rester sur du midi

Post Reply