Initiation à l'iml
-
joffo78
- Member
- Posts: 1033
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
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
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...
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...
- nay-seven
- Site Admin
- Posts: 5684
- Location: rennes France
- Contact:
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
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
Voilà un exemple de wkp avec le script iml modifié : http://www.sensomusic.com/forums/upload ... lfirst.wkp
le script est le suivant:
le script est le suivant:
Avec la ligne modifiée :// 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
J'ai du zapper quelque chose car cela ne fonctionne pasSendInternalMsg(' SET_TARGET_PATCH 2 2' );
- nay-seven
- Site Admin
- Posts: 5684
- Location: rennes France
- Contact:
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....
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....
- nay-seven
- Site Admin
- Posts: 5684
- Location: rennes France
- Contact:
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
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.
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.
-
joffo78
- Member
- Posts: 1033
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 :
Ai je le droit de me servir des variables dans un iml comme sur cette ligne :
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 !
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 :
J'ignore ce qui ne va pas./////////////////////////////////////////////
// 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
Ai je le droit de me servir des variables dans un iml comme sur cette ligne :
Y'a t'il un truc qui m'aurait échappé.SendInternalMsg('SET_TARGET_PATCH (Input4)(input5)');
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 !
- nay-seven
- Site Admin
- Posts: 5684
- Location: rennes France
- Contact:
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:
sinon, dans d'autre script ( 23fx) j'ai vu qu'il mettait ces paramètres entre virgules:
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 varCode: Select all
SendInternalMsg('SET_TARGET_PATCH','SENDER_PATCH');-
joffo78
- Member
- Posts: 1033
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.
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.
- nay-seven
- Site Admin
- Posts: 5684
- Location: rennes France
- Contact:
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..
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
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
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
J'ai réussi à obtenir quelque chose qui fonctionne : iml comma text
Mais bon c'est un peu copieux !
Mais bon c'est un peu copieux !
- nay-seven
- Site Admin
- Posts: 5684
- Location: rennes France
- Contact:
oui, effectivement !, le script serait vraiment un plus..!
sinon, ça a marché ici
sinon, ça a marché ici
- nay-seven
- Site Admin
- Posts: 5684
- Location: rennes France
- Contact:
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...
