Page 1 of 1
Posted: 12 Sep 2012, 21:39
by joffo78
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
Posted: 12 Sep 2012, 21:49
by joffo78
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...

Posted: 12 Sep 2012, 22:01
by joffo78
Ah j'oubliais. J'aimerais bien introduire une variable dans le script advanced iml pour définir justement la "target" de mon message.
Posted: 12 Sep 2012, 22:10
by nay-seven
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
Posted: 12 Sep 2012, 23:26
by joffo78
Merci Nay
J'ai effectivement essayé cette syntaxe sans succès

Posted: 13 Sep 2012, 00:12
by nay-seven
voila un example ?
Download
Posted: 13 Sep 2012, 00:12
by joffo78
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
Posted: 13 Sep 2012, 00:23
by nay-seven
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....
Posted: 13 Sep 2012, 01:22
by joffo78
Ce que je cherche à piloter,c'est le fader situé piste 2 ligne 2 nommé effectivement par le clique droit "toto".
Normalement cela suffit...
Posted: 13 Sep 2012, 09:40
by nay-seven
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..?
Posted: 13 Sep 2012, 12:04
by joffo78
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.
Posted: 13 Sep 2012, 13:16
by nay-seven
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
Posted: 14 Sep 2012, 00:49
by joffo78
Merci infiniment je zieute ça !
Posted: 14 Sep 2012, 01:35
by joffo78
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 !
Posted: 14 Sep 2012, 08:10
by nay-seven
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');
Posted: 14 Sep 2012, 09:15
by joffo78
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.
Posted: 14 Sep 2012, 09:30
by nay-seven
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..
Posted: 14 Sep 2012, 12:17
by joffo78
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
Posted: 14 Sep 2012, 12:33
by joffo78
J'ai réussi à obtenir quelque chose qui fonctionne :
iml comma text
Mais bon c'est un peu copieux !
Posted: 14 Sep 2012, 12:39
by joffo78
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

Posted: 14 Sep 2012, 13:03
by nay-seven
oui, effectivement !, le script serait vraiment un plus..!
sinon, ça a marché ici
Posted: 14 Sep 2012, 13:36
by joffo78
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 !

Posted: 15 Sep 2012, 15:41
by nay-seven
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...
Posted: 15 Sep 2012, 21:46
by joffo78
ok donc je vais rester sur du midi