L'API de KandiskyScore permet l'écriture de scripts en Javscript.
Ces scripts d'actions peuvent être regroupés dans le dossier/kandiskyscore/Actions/. Ils permettent de compléter l'atelier. Ils sont accessibles par le menu Atelier->Actions
Pour des raisons de sécurité, ces scripts ne peuvent pas accéder directement au système de fichiers.
Il ne doit pas y avoir de ligne vide dans le corps du script.
Le script doit se terminer par une ligne vide.
Vous pouvez voir un exemple ici : Exemple
Le choix de l'éditeur de script est totalement libre dès lors qu'il accepte l'UTF8.
createObjet(timepos,transposition,rate,type,color)
Exemple :
createObjet(45,1,1,5,'#ff0000');
loadAudioTableBuffer(index,url)
Exemple :
loadAudioTableBuffer(objActif,'/home/.../kandiskyscore/Projets/Projet1/Audios/kurt1-1s.wav');
muteObjet(index,mute)
Exemple :
muteObjet(objActif,1);
reverseObjet(index,rv)
Exemple :
reverseObjet(objActif,1);
gainObjet(index,gain)
Exemple :
gainObjet(objActif,time);
envTypeObjet(index,type)
Exemple :
envTypeObjet(objActif,1);
envObjet(index,x1,y1,x2,y2,x3,y3,x4,y4,x5,y5,x6,y6,x7,y7)
Exemple :
envObjet(objActif,0,0.2,0.08,0.288,0.245,0.86,0.49,0.99,0.725,0.86,0.8, 0.58,0.978,0.5);
timePosObjet(index,gain)
Exemple :
timePosObjet(objActif,14);
detuneObjet(index,detune)
Exemple :
detuneObjet(objActif,-100);
dbfObjet(index,debut,fin)
Exemple :
dbfObjet(objActif,0.4,0.9);
nameObjet(index,name)
Exemple :
nameObjet(objActif,'test');
convolObjet(index,convol)
Exemple :
convolObjet(objActif,8);
trackObjet(index,track)
Exemple :
trackObjet(objActif,2);
objetColor(id,color)
Exemple :
objetColor(objActif,'#cc8855');
objetDim(id,w,h)
Exemple :
objetDim(objActif,2.2,1.4);
objetBordure(id,width,color,opacity)
Exemple :
objetBordure(objActif,2,'#ff0000',0.8);
objetBkgColor(id,color)
Exemple :
objetBkgColor(objActif,'#ff5500');
objetBkgDim(id,w,h)
Exemple :
objetBkgDim(objActif,60,40);
objetBkgOpacity(id,opacity)
Exemple :
objetBkgOpacity(objActif,0.1);
objetBkgTransparent(id)
Exemple :
objetBkgTransparent(objActif)
Exemple :
objCadreLeft(objActif,'solid',6,'0%','#00ff00');
objetMarge(id,x,y)
Exemple :
objetMarge(objActif,8,4);
createSymbole(x,y,type,color)
Exemple :
createSymbole(44*18,376,23,'green');
posSymb(id,x,y)
Exemple :
posSymb(objActif,40*18,406);
rotateSymb(id,r)
Exemple :
rotateSymb(objActif,-40);
bkgSymb(id,opacity,width,height,color)
Exemple :
bkgSymb(objActif,1,48,40,'#00ff00')
Exemple :
gCadreSymb(objActif,'solid',4,'0%','#ff0000')
cadreSymb(id,style,eps,r,color)
Exemple :
cadreSymb(objActif,'solid',4,'0%','#ff0000')
createGroupe(color,w,liste)
Exemple :
createGroupe('#0000ff',4,'0,1');
Pour pouvoir utiliser plusieurs fois le même script vous devez indéxer les objets de votre script avec nbObjets en plaçant, par exemple, cette ligne au début de votre script :
var nbobj=nbObjets;
puis
var nl=(nbobj+1)+','+(nbobj+2);
createGroupe(nl);
à l'endroit où vous désirez créer un groupe avec les objets créés par votre script. Dans l'exemple les objets 1 et 2 de votre script seront groupés. Il en sera de même si vous rélancez le script, mais avec de nouveaux objets et donc avec les nouveaux index.
dimCadreGroupe(id,w,h)
Exemple :
dimCadreGroupe(objActif,200,150);
bkgGroupe(id,width,height,color,opacity)
Exemple :
bkgGroupe(objActif,200,200,'#550000',0.2);
groupeTransparent(id)
Exemple :
groupeTransparent(objActif);
Exemple :
borderGrpLeft(objActif,'solid',4,'0%','#ff0000')
cadreGrp(id,style,eps,r,color)
Exemple :
cadreGrp(objActif,'solid',4,'0%','#ff0000')
copy(obj)
Copy les index des objets pour un futur collage.
Exemple :
var nl=(nbobj+1)+','+(nbobj+2)+','+(nbobj+3);
copyObjets(nl);
Pour pouvoir utiliser plusieurs fois le même script vous devez indéxer les objets de votre script en procédant comme pour la création de groupe.
pasteObjets(x,y)
Coller un ensemble d'objets ( défini avec copy(obj) ou directement dans copySelect[] ) aux coordonnées x,y.
Exemple :
pasteObjets(300,100);
openPopup(title,width,height,padding,content)
Création d'un popup pour définir des paramètres
Exemple :
openPopup("position",400,200,10,interface);
closePopup(title)
fermeture d'un popup
Exemple :
closePopup('position');
Contenu d'un popup
Vous disposez de toutes les possibilités du HTML pour définir le contenu de votre popup.
Vous ne devez pas utiliser les guillements doubles : ❞ mais ' ou `
Dans le contenu de votre popup vous devez définir le boutons de validation afin de valider les paramètres définis. Vous pouvez également définir un bouton pour redonner les valeurs par défaut et un bouton annuler. Ces boutons doivent être associés à des fonctions ( ce code ne doit pas être copié tel quel ).
var interface=`<table align='center' border='1'style='font-size:1em;
margin-top:10px;' cellpadding='4' cellspacing='0' ><tbody><tr><td>
X : <input id='coordx' type='number' min='0' max='12960' step='1' value='400' />
</td></tr><tr><td >Y : <input id='coordy' type='number' min='0' max='740' step='1' value='200'/>
</td></tr></tbody></table>
<div style='margin-top:20px;margin-left:80px;'><button id='adefaut' >Defaut</button>
<button onclick=closePopup('position')>Annuler</button>
<button id='avalid' >Valider</button></div>`;
openPopup("position",400,200,10,interface);
document.getElementById('avalid').addEventListener('click',validPopup);// association des événements aux boutons
document.getElementById('adefaut').addEventListener('click',defautPopup);
function validPopup(title){ // définition des fonctions validPopup et defautPopup :
var x=document.getElementById('coordx').value;
var y=document.getElementById('coordy').value;
console.log(x,y);
pasteObjets(x,y);
closePopup('position');
}
function defautPopup(){
document.getElementById('coordx').value=400;
document.getElementById('coordy').value=200;
}
Ici, les paramètres permettent de copier un ensemble d'objets prédéfinis dans copySelect[] à une nouvelle position (X,Y).
Pour les filtres FX, vous devez commencer par insérer le nom d'un filtre dans la table correspondante. Ensuite vous pouvez définir les paramètres du filtre.
fxOnDef(id,name)
insertion d'un filtre dans la table des filtres de l'objet courant
Exemple :
fxOnDef(0,'Phaser');
fxDefParam(id,param)
insertion des paramètres Fx dans la table de l'objet courant
Exemple :
fxDefParam(0,'0.88/0.9/0.1/2.9/3.7/1.8'); // paramètres pour le premier filtre ('Phaser' ici)
saveFxAudio(obj,mode,nom)
Modifie le fichier courant de l'objet par le rendu de celui-ci avec l'application des paramètres Fx. Les paramètres Fx sont réinitialisés après la modification.
Exemple :
saveFxAudio(objActif,1,'name.wav');
Eportation des fichiers audios pour un séquenceur
Exemple :
exportObj();
spaceDefPoint(id,t,d,x,y,z)
insertion des points de spatialisation
Exemple :
spaceDefPoint(1,0.28,0.5,-0.55,0.43,0.58); // paramètres du deuxième point de la trajectoire
Configuration du projet
baseDefProjet(name,start,end,comment,ppath,audioPath,imgPath,greffon3D,canaux)
Exemple :
baseDefProjet('projet1','24082024','30082024','comment','/home/.../kandiskyscore/Projets/Projet1','/home/.../kandiskyscore/Projets/Projet1/Audios/','/home/.../kandiskyscore/Projets/Projet1/Images/','dominium',18);
appExternes(ledit,sequenceur,dawPath,AssCmd,AppCmd)
Exemple :
appExternes('libreoffice --draw','reaper','/home/.../Reaper/reaper_linux_x86_64/REAPER/reaper','pdfunite','atril');
pdfConfig(page,landscape,scale,margeT,margeL,margeB,margeR,Bkg)
Exemple :
pdfConfig(2,1,1,5,10,15,20,0);