Peinture Poesie Musique

Alètheia ( ἀλήθεια )

Espace programmation

Première page Page précédente Page suivante Dernière page

API KandiskyScore 1.0.1 (Juin 2024)

(Cette documentation est en cours de mise à jour)

En

Présentation

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.

Table des matières


Insertion d'objets

Généralités

  • nbObjets : nombre d'objets déjà définis
  • objActif : index de l'objet actif
  • selectObj : id de l'objet actif
  • tableObjet : table des objets
  • tableBuffer : table des buffers audios
  • copySelect : table des objets sélectionnés
Insertion d'un objet audio

createObjet(timepos,transposition,rate,type,color)

  • timepos : position en seconde
  • transposition : (0 : pas de transposition; 1 : transposition)
  • rate : transposition initiale ( 0.1 < transpo. < 2.0 )
  • type : nature de l'objet (1 à 10 )
  • couleur : couleur de l'objet

Exemple :

createObjet(45,1,1,5,'#ff0000');

loadAudioTableBuffer(index,url)

  • index : index de l'objet
  • url : adresse complète du fichier audio sur le disque dur.

Exemple :

loadAudioTableBuffer(objActif,'/home/.../kandiskyscore/Projets/Projet1/Audios/kurt1-1s.wav');

muteObjet(index,mute)

  • index : index de l'objet
  • mute : 0 ( par defaut ) ou 1

Exemple :

muteObjet(objActif,1);

reverseObjet(index,rv)

  • index : index de l'objet
  • rv : 0 (defaut) ou 1 (reverse)

Exemple :

reverseObjet(objActif,1);

gainObjet(index,gain)

  • index : index de l'objet
  • gain : début 0.1 < gain < 10.0

Exemple :

gainObjet(objActif,time);

envTypeObjet(index,type)

  • index : index de l'objet
  • type : 0 (pas d'enveloppe, 1 linéaire, 2 exponentielle, 3 quadratique)

Exemple :

envTypeObjet(objActif,1);

envObjet(index,x1,y1,x2,y2,x3,y3,x4,y4,x5,y5,x6,y6,x7,y7)

  • index : index de l'objet
  • x1,y1,x2,y2 .... coordonnée ( 0 < coord. < 1 )

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)

  • index : index de l'objet
  • time : position en seconde

Exemple :

timePosObjet(objActif,14);

detuneObjet(index,detune)

  • index : index de l'objet
  • gain : début -1200 < detune< 1200

Exemple :

detuneObjet(objActif,-100);

dbfObjet(index,debut,fin)

  • index : index de l'objet
  • debut : début 0 < durée globale < 1.0
  • fin : fin 0 < durée globale < 1.0

Exemple :

dbfObjet(objActif,0.4,0.9);

nameObjet(index,name)

  • index : index de l'objet
  • name : nom de l'objet

Exemple :

nameObjet(objActif,'test');

convolObjet(index,convol)

  • index : index de l'objet
  • conbol : ref convolution

Exemple :

convolObjet(objActif,8);

trackObjet(index,track)

  • index : index de l'objet
  • track : piste de l'objet

Exemple :

trackObjet(objActif,2);

Objet audio : éléments graphiques

objetColor(id,color)

  • id : index
  • color : coouleur de l'objet

Exemple :

objetColor(objActif,'#cc8855');

objetDim(id,w,h)

  • id : index
  • w : largeur de l'objet 0.1 < w < 10
  • h : hauteur de l'objet 0.1 < h < 10

Exemple :

objetDim(objActif,2.2,1.4);

objetBordure(id,width,color,opacity)

  • id : index
  • width : largeur de la bordure < 10
  • color : couleur de la bordure
  • opacity : opacité de l'objet

Exemple :

objetBordure(objActif,2,'#ff0000',0.8);

objetBkgColor(id,color)

  • id : index
  • color : couleur d'arrièe plan

Exemple :

objetBkgColor(objActif,'#ff5500');

objetBkgDim(id,w,h)

  • id : index
  • w : largeur (en point) de l'arrièe plan
  • h : hauteur (en point) de l'arrièe plan

Exemple :

objetBkgDim(objActif,60,40);

objetBkgOpacity(id,opacity)

  • id : index
  • opacity : opacité de l'arrièe plan

Exemple :

objetBkgOpacity(objActif,0.1);

objetBkgTransparent(id)

  • id : index (l'arrièe plan est transparent)

Exemple :

objetBkgTransparent(objActif)

  • objCadreLeft(id,type,w,r,color)
  • objCadreTop(id,type,w,r,color)
  • objCadreRight(id,type,w,r,color)
  • objCadreBoçttom(id,type,w,r,color)
  • id : index
  • type : type e ligne
  • w : épaisseur
  • r : radius
  • color : couleur

Exemple :

objCadreLeft(objActif,'solid',6,'0%','#00ff00');

objetMarge(id,x,y)

  • id : index
  • x : marge gauche
  • y : marge haut

Exemple :

objetMarge(objActif,8,4);

Insertion d'un symbole

createSymbole(x,y,type,color)

  • x : position en point (1s = 18 points)
  • y : position en point
  • type : nature du symbole
  • couleur : couleur du symbole

Exemple :

createSymbole(44*18,376,23,'green');

posSymb(id,x,y)

  • id : index
  • x : position en point (1s = 18 points)
  • y : position en point

Exemple :

posSymb(objActif,40*18,406);

rotateSymb(id,r)

  • id : index
  • r : rotation du symbole en degré

Exemple :

rotateSymb(objActif,-40);

bkgSymb(id,opacity,width,height,color)

  • id : index
  • opacity : opacité de l'arrière plan
  • width : largeur de l'arrière plan
  • height : hauteur de l'arrière plan
  • color : couleur de l'arrière plan

Exemple :

bkgSymb(objActif,1,48,40,'#00ff00')

  • gCadreSymb(id,style,eps,r,color)
  • hCadreSymb(id,style,eps,r,color)
  • dCadreSymb(id,style,eps,r,color)
  • bCadreSymb(id,style,eps,r,color)
  • id : index
  • style : style de ligne
  • eps : épaisseur
  • r : radius
  • color : couleur de la bordure

Exemple :

gCadreSymb(objActif,'solid',4,'0%','#ff0000')

cadreSymb(id,style,eps,r,color)

  • id : index
  • style : style de ligne
  • eps : épaisseur
  • r : radius
  • color : couleur de la bordure

Exemple :

cadreSymb(objActif,'solid',4,'0%','#ff0000')

Définition d'un groupe

createGroupe(color,w,liste)

  • color : couleur du cadre
  • w : épaisseur du cadre
  • liste : liste des index des objets du groupe

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)

  • id: index du groupe
  • w : largeur du cadre
  • h : hauteur du cadre

Exemple :

dimCadreGroupe(objActif,200,150);

bkgGroupe(id,width,height,color,opacity)

  • id: index du groupe
  • width : largeur du cadre
  • height : hauteur du cadre
  • color : couleur d'arrière plan
  • opacity : opacité de la couleur d'arrière plan

Exemple :

bkgGroupe(objActif,200,200,'#550000',0.2);

groupeTransparent(id)

  • id: index du groupe

Exemple :

groupeTransparent(objActif);

  • borderGrpLeft(id,style,eps,r,color)
  • borderGrpTop(id,style,eps,r,color)
  • borderGrpRight(id,style,eps,r,color)
  • borderGrpBottom(id,style,eps,r,color)
  • id : index
  • style : style de ligne
  • eps : épaisseur
  • r : radius
  • color : couleur de la bordure

Exemple :

borderGrpLeft(objActif,'solid',4,'0%','#ff0000')

cadreGrp(id,style,eps,r,color)

  • id : index
  • style : style de ligne
  • eps : épaisseur
  • r : radius
  • color : couleur de la bordure

Exemple :

cadreGrp(objActif,'solid',4,'0%','#ff0000')

Functions générales

copy(obj)

Copy les index des objets pour un futur collage.

  • obj : liste d'objets ('1,2...')

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);


Flottant

openPopup(title,width,height,padding,content)

Création d'un popup pour définir des paramètres

  • title : identifiant du popup
  • width : largeur du popup
  • height : hauteur du popup
  • padding : marge intérieure
  • content : contenu du popup en HTML

Exemple :

openPopup("position",400,200,10,interface);

closePopup(title)

fermeture d'un popup

  • title : identifiant du 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; }

popup

Ici, les paramètres permettent de copier un ensemble d'objets prédéfinis dans copySelect[] à une nouvelle position (X,Y).

Filtres FX

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

  • id : index dans la table des Fx
  • name : nom du filtre

Exemple :

fxOnDef(0,'Phaser');

fxDefParam(id,param)

insertion des paramètres Fx dans la table de l'objet courant

  • id : index dans la table des filtres de l'objet courant
  • param : string avec le caractère '/' comme séparateur

Exemple :

fxDefParam(0,'0.88/0.9/0.1/2.9/3.7/1.8'); // paramètres pour le premier filtre ('Phaser' ici)

Audio

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.

  • obj : index de l'objet à modifier
  • mode : 0 le nom sera dérivé du nom courant 1 le nom sera celui donné
  • nom : nom du fichier audio avec l'extension

Exemple :

saveFxAudio(objActif,1,'name.wav');

  • exportObj()
  • exportGrp()
  • exportPart()

Eportation des fichiers audios pour un séquenceur

  • Le nom d'export du fichier audio est défini par l'id de l'objet. Il sera placé dans le dossier ./Audios/exports
  • Vous devez définir le nom du fichier de configuartion du script Lua avec le sélecteur de fichier

Exemple :

exportObj();

Spatialisation

spaceDefPoint(id,t,d,x,y,z)

insertion des points de spatialisation

  • id : index du point (vous devez être vigilant à l'ordre de vos points)
  • t : décallage temporelle %/100 de la durée du buffer audio
  • d : distance
  • x,y,z : coordonnées 3D du point

Exemple :

spaceDefPoint(1,0.28,0.5,-0.55,0.43,0.58); // paramètres du deuxième point de la trajectoire

Configuration

Configuration du projet


baseDefProjet(name,start,end,comment,ppath,audioPath,imgPath,greffon3D,canaux)

  • name : nom du projet
  • start : date de début du projet
  • end : date de fin du projet
  • comment : commentaires
  • ppath : dossier du projet
  • audioPath : dossier des fichiers audios
  • imgPath : dossier des images du projet
  • greffon3D : greffon de spatialisation externe
  • canaux : nombre de canaux du greffon

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)

  • ledit : éditeur supportant l'exportation au format svg
  • sequenceur: votre séquenceur
  • dawPath: éventuellement une ligne de commande pour lancer Reaper
  • AssCmd : application pour assembler des pages pdf
  • AppCmd : application pour lire le rendu pdf

Exemple :

appExternes('libreoffice --draw','reaper','/home/.../Reaper/reaper_linux_x86_64/REAPER/reaper','pdfunite','atril');

pdfConfig(page,landscape,scale,margeT,margeL,margeB,margeR,Bkg)

  • page : page A4 ou A3
  • landscape: paysage ou portrait
  • scale: échelle
  • margeT,margeL,margeB,margeR : marges
  • Bkg : affichage des images d'arrière plan

Exemple :

pdfConfig(2,1,1,5,10,15,20,0);

Première page Page précédente Page suivante Dernière page