les différentes étapes du projet :
source https://bytexd.com/how-to-install-configure-vnc-server-on-ubuntu/
ouvrir un terminal et entrer les commandes suivantes :
sudo apt update
sudo apt install xfce4 xfce4-goodies
- Sélectionnez n'importe quel gestionnaire d'affichage et appuyez sur Entrée
sudo apt install tigervnc-standalone-server
vncserver
- vous serez invité à taper 2 fois le mot de passe nécessaire qui servira pour la connection à TigerVNC
- pour la ligne Would you like to enter a view-only password (y/n)?
- entrer N, c'est un mot de passe en lecture seul
- cette commande vncpasswd servira à changer le mot de passe si nécessaire
vncserver -kill :1
nano ~/.vnc/xstartup
- contenu du fichier
#!/bin/sh # Start up the standard system desktop unset SESSION_MANAGER unset DBUS_SESSION_BUS_ADDRESS /usr/bin/startxfce4 [ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup [ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources x-window-manager &
chmod +x ~/.vnc/xstartup
vncserver -localhost no :1
- à ce stade on peut ce connecter à l'aide d'un vncviewer
- avec l'ip de la machine ou l'ip du routeur avec redirection de port configurer
- le port utilisé par TigerVNC est le 5901 par défaut
Dans un terminal entrer les commandes suivantes:
vncserver -kill :1
cd /etc/systemd/system
sudo nano tigervnc@:1.service
- contenu du fichier, dans le fichier crée définir l'user et le WorkingDirectory en fonction de votre machine
[Unit] Description=Remote desktop service (VNC) After=syslog.target network.target [Service] Type=forking User=l'utilisateur WorkingDirectory=/home/utilisateur ExecStartPre=-/usr/bin/vncserver -kill :1 ExecStart=/usr/bin/vncserver -localhost no :1 ExecStop=/usr/bin/vncserver -kill :1 [Install] WantedBy=multi-user.target
sudo systemctl enable tigervnc@\:1.service
sudo systemctl daemon-reload
cette ligne corrige le problème unable to contact settings server:
sudo apt install dbus-x11
sudo systemctl start tigervnc@:1
source https://puredata.info/
- dans puredata
- cliquer sur “help” puis “find external”
- ensuite dans le champ de saisie tapper iemlib et clique en dessous sur iemlib puis install en bas à droite
- ensuite faire de même pour pdogg et pour oscx
- pour ce projet nous importerons iemlib et pdogg
- crée un objet nommer
declare -lib iemlib
- crée un objet nommer
declare -lib pdogg
- dans puredata
- cliquer sur “help” puis “find external”
- puis cliquer sur “edit” puis “preferences”
- dans la première ligne doit se trouver le chemin d'installation noté le
- il doit ressembler à celà /home/utilisateur/.local/lib/pd/extra/
- dans puredata
- cliquer sur “file” puis “preferences”
- puis cliquer sur “path” puis “new”
- puis entrez le chemin précédament vu en y rajoutant le nom de la librairies iemlib, pdogg, oscx
- les chemins à rajouter ressemblerons respectivement à
/home/utilisateur/.local/lib/pd/extra/iemlib
/home/utilisateur/.local/lib/pd/extra/pdogg
/home/utilisateur/.local/lib/pd/extra/oscx
sudo apt-get update
sudo apt-get install nodejs npm
lien https://github.com/adzialocha/osc-js/
faire cette commande dans le même dossier que la où voulez crée le bridge.js/page web pour simplifié cela
npm i osc-js
lien de la doc sur lequel le code est basé https://github.com/adzialocha/osc-js/wiki/PureData-&-MaxMSP
nano bridge.js
contenu du fichier, à noté qu'il faut remplacer certaine valeur en fonction de la configuration souhaité
const ws_host = "ip_interface_serveur"; //ip server
const ws_port = port_ecouter_par_le_serveur; //port define for server websocket
const udp_host = "localhost"; //server host puredata
const udp_port = port_ecouter_par_puredata; //server host puredata
const OSC = require('osc-js') //Import the library osc-js
const config = { udpClient: {host :udp_host, port: udp_port}, //bridge setup
wsServer: {host: ws_host, port: ws_port,}, //bridge setup
}
const osc = new OSC(
{ plugin: new OSC.BridgePlugin(config)}, //bridge setup, websocket server is included in the BridgePlugin
);
osc.open() //bridge start
ouvrir un terminal et entrer :
sudo apt install npm
sudo npm install -g pm2
- changer le chemin en fonction de où ce trouve le ficher bridge.js
pm2 start le_chemin_du_fichier
pm2 save
pm2 list
pm2 startup
- puis faire la entrer la commande retourné
pm2 list
pm2 restart bridge.js
refaire la commande npm i osc-js si le dossier de la page web n'est pas le même que celui du bridge.js
cd le_chemin_ou_cree_les_pages_web
sudo nano index.css
- le contenu du fichier
.slider-wrapper input {
width: 20em;
height: 3em;
margin: 0;
transform-origin: 10em 10em ;
transform: rotate(-90deg);
}
.slider-wrapper {
display: inline-block;
width: 2em;
height: 18em;
padding: 0;
}
.increase {
width:3em;
height:3em;
}
.bang{
width: 3em ;
height: 3em;
border-radius: 50%;
background-color: #DFDFDF;
}
bouton{
color:#DFDFDF;
}
body{
background-color:#313638;
}
p{
color:#DFDFDF;
}
h1{
color:#ffffff;
font-size:250%;
}
h2{
color:#dddddd;
font-size:200%;
}
h3{
color:#bbbbbb;
font-size:150%;
}
li{
color:#DFDFDF;
}
a{
text-decoration: none;
color:#ffffff;
}
sudo nano index.html
- le contenu du fichier
<html> <head> <meta http-equiv="content-type" content="text/html; charset=UTF-8"/> <link charset="UTF8" href=".\index.css" rel="stylesheet" type="text/css" /> <title>Page index</title> </head> <body> <div> <p> <ul> <li><a href= ".\test1.html"> <h3>Page test 1</h3></a></li> <li><a href= ".\12_slider.html"><h3> Page 12 sliders</h3></a></li> </ul> </p> </div> </body> </html>
sudo nano 12_slider.html
- le contenu du fichier
<html>
<head>
<!--<meta http-equiv="refresh" content="20">-->
<!--<meta http-equiv="content-type" content="text/html; charset=UTF-8"/>-->
<link charset="UTF8" href=".\index.css" rel="stylesheet" type="text/css" />
<title>page 12 slider</title>
</head>
<body>
<table>
<td>
<label for="str_road"><p>route/road :</p></label>
</td>
<td>
<input type="text" id="str_road" name="str"
minlength="0" maxlength="100">
</td>
</table>
<p><br/></p>
<table border="0">
<td>
<label for="msg"><p>Message :</p></label>
</td>
<td>
<input type="text" id="msg" name="msg"
minlength="0" maxlength="100">
</td>
<tr>
<td>
</td>
<td>
<button id="send">send the message</button>
</td>
</tr>
</table>
<p><br/></p>
<table border="0">
<tr>
<td>
<div class="slider-wrapper">
<input type="range" id="slider_vertical_0" min="0" max="127" value="0" step="1">
</div>
</td>
<td>
<div class="slider-wrapper">
<input type="range" id="slider_vertical_1" min="0" max="127" value="0" step="1">
</div>
</td>
<td>
<div class="slider-wrapper">
<input type="range" id="slider_vertical_2" min="0" max="127" value="0" step="1">
</div>
</td>
<td>
<div class="slider-wrapper">
<input type="range" id="slider_vertical_3" min="0" max="127" value="0" step="1">
</div>
</td>
<td>
<div class="slider-wrapper">
<input type="range" id="slider_vertical_4" min="0" max="127" value="0" step="1">
</div>
</td>
<td>
<div class="slider-wrapper">
<input type="range" id="slider_vertical_5" min="0" max="127" value="0" step="1">
</div>
</td>
<td>
<div class="slider-wrapper">
<input type="range" id="slider_vertical_6" min="0" max="127" value="0" step="1">
</div>
</td>
<td>
<div class="slider-wrapper">
<input type="range" id="slider_vertical_7" min="0" max="127" value="0" step="1">
</div>
</td>
<td>
<div class="slider-wrapper">
<input type="range" id="slider_vertical_8" min="0" max="127" value="0" step="1">
</div>
</td>
<td>
<div class="slider-wrapper">
<input type="range" id="slider_vertical_9" min="0" max="127" value="0" step="1">
</div>
</td>
<td>
<div class="slider-wrapper">
<input type="range" id="slider_vertical_10" min="0" max="127" value="0" step="1">
</div>
</td>
<td>
<div class="slider-wrapper">
<input type="range" id="slider_vertical_11" min="0" max="127" value="0" step="1">
</div>
</td>
</tr>
<tr>
<td>
<input class="increase" type="checkbox" id="toggle_0" name="interupteur" value="1">
</td>
<td>
<input class="increase" type="checkbox" id="toggle_1" name="interupteur" value="1">
</td>
<td>
<input class="increase" type="checkbox" id="toggle_2" name="interupteur" value="1">
</td>
<td>
<input class="increase" type="checkbox" id="toggle_3" name="interupteur" value="1">
</td>
<td>
<input class="increase" type="checkbox" id="toggle_4" name="interupteur" value="1">
</td>
<td>
<input class="increase" type="checkbox" id="toggle_5" name="interupteur" value="1">
</td>
<td>
<input class="increase" type="checkbox" id="toggle_6" name="interupteur" value="1">
</td>
<td>
<input class="increase" type="checkbox" id="toggle_7" name="interupteur" value="1">
</td>
<td>
<input class="increase" type="checkbox" id="toggle_8" name="interupteur" value="1">
</td>
<td>
<input class="increase" type="checkbox" id="toggle_9" name="interupteur" value="1">
</td>
<td>
<input class="increase" type="checkbox" id="toggle_10" name="interupteur" value="1">
</td>
<td>
<input class="increase" type="checkbox" id="toggle_11" name="interupteur" value="1">
</td>
</tr>
<tr>
<td>
<button class="bang" id="bang_0"></button>
</td>
<td>
<button class="bang" id="bang_1"></button>
</td>
<td>
<button class="bang" id="bang_2"></button>
</td>
<td>
<button class="bang" id="bang_3"></button>
</td>
<td>
<button class="bang" id="bang_4"></button>
</td>
<td>
<button class="bang" id="bang_5"></button>
</td>
<td>
<button class="bang" id="bang_6"></button>
</td>
<td>
<button class="bang" id="bang_7"></button>
</td>
<td>
<button class="bang" id="bang_8"></button>
</td>
<td>
<button class="bang" id="bang_9"></button>
</td>
<td>
<button class="bang" id="bang_10"></button>
</td>
<td>
<button class="bang" id="bang_11"></button>
</td>
</tr>
</table>
<p></br></p>
<table border = 0>
<tr>
<td>
<p> PD instruments trigger:</p>
</td>
<td>
<input class="increase" type="checkbox" id="generative_toggle" name="interupteur" value="1">
</td>
</tr>
</table>
<p></br></p>
<audio controls="controls" preload="none"><source src="http://ice.piksel.org/giaso.ogg" type="application/ogg" /></audio> <!--ogg player-->
</div>
</body>
<!--<script type="text/javascript" src="https://cdn.jsdelivr.net/gh/adzialocha/osc-js/lib/osc.js"></script> -->
<script type="text/javascript" src="node_modules/osc-js/lib/osc.min.js"></script>
<script type="text/javascript" src='./12_slider.js'></script> <!-- for import the script 12_slider.js-->
</html>
sudo nano 12_slider.js
- le contenu du fichier, des valeurs son à changer en fonction du serveur
const ws_host = "ip_publique_serveur";//public ip of the websocket server
const ws_port = port_ecouter_par_le_serveur;//port websocket server
//const ws_port = 8080;
var osc = new OSC(
{plugin: new OSC.WebsocketClientPlugin({host: ws_host, port: ws_port})} //client websocket configuration
);
osc.open(); // connect to websocket server
document.getElementById('send').addEventListener('click', () => {
var str_road = document.getElementById("str_road").value; //retrieving the value of the route/road input field
var msg = document.getElementById("msg").value; //retrieving the value of the Message input field
var message = new OSC.Message(str_road,msg);
osc.send(message);
});
document.getElementById('slider_vertical_0').addEventListener('input', () => {
var str_road = document.getElementById("str_road").value; //retrieving the value of the route/road input field
str_road = str_road +'/slider'; //add /slider to route
str_road = str_road.trim()+'/0'; //add silder number to route
var send_slider_v = Number(document.getElementById("slider_vertical_0").value); //retrieving the value of the slider of the web page
var message = new OSC.Message(str_road,send_slider_v); //message creation before sending
osc.send(message);
});
document.getElementById('slider_vertical_1').addEventListener('input', () => {
var str_road = document.getElementById("str_road").value;
str_road = str_road +'/slider';
str_road = str_road.trim()+'/1';
var send_slider_v = Number(document.getElementById("slider_vertical_1").value);
var message = new OSC.Message(str_road,send_slider_v);
osc.send(message);
});
document.getElementById('slider_vertical_2').addEventListener('input', () => {
var str_road = document.getElementById("str_road").value;
str_road = str_road +'/slider';
str_road = str_road.trim()+'/2';
var send_slider_v = Number(document.getElementById("slider_vertical_2").value);
var message = new OSC.Message(str_road,send_slider_v);
osc.send(message);
});
document.getElementById('slider_vertical_3').addEventListener('input', () => {
var str_road = document.getElementById("str_road").value;
str_road = str_road +'/slider';
str_road = str_road.trim()+'/3';
var send_slider_v = Number(document.getElementById("slider_vertical_3").value);
var message = new OSC.Message(str_road,send_slider_v);
osc.send(message);
});
document.getElementById('slider_vertical_4').addEventListener('input', () => {
var str_road = document.getElementById("str_road").value;
str_road = str_road +'/slider';
str_road = str_road.trim()+'/4';
var send_slider_v = Number(document.getElementById("slider_vertical_4").value);
var message = new OSC.Message(str_road,send_slider_v);
osc.send(message);
});
document.getElementById('slider_vertical_5').addEventListener('input', () => {
var str_road = document.getElementById("str_road").value;
str_road = str_road +'/slider';
str_road = str_road.trim()+'/5';
var send_slider_v = Number(document.getElementById("slider_vertical_5").value);
var message = new OSC.Message(str_road,send_slider_v);
osc.send(message);
});
document.getElementById('slider_vertical_6').addEventListener('input', () => {
var str_road = document.getElementById("str_road").value;
str_road = str_road +'/slider';
str_road = str_road.trim()+'/6';
var send_slider_v = Number(document.getElementById("slider_vertical_6").value);
var message = new OSC.Message(str_road,send_slider_v);
osc.send(message);
});
document.getElementById('slider_vertical_7').addEventListener('input', () => {
var str_road = document.getElementById("str_road").value;
str_road = str_road +'/slider';
str_road = str_road.trim()+'/7';
var send_slider_v = Number(document.getElementById("slider_vertical_7").value);
var message = new OSC.Message(str_road,send_slider_v);
osc.send(message);
});
document.getElementById('slider_vertical_8').addEventListener('input', () => {
var str_road = document.getElementById("str_road").value;
str_road = str_road +'/slider';
str_road = str_road.trim()+'/8';
var send_slider_v = Number(document.getElementById("slider_vertical_8").value);
var message = new OSC.Message(str_road,send_slider_v);
osc.send(message);
});
document.getElementById('slider_vertical_9').addEventListener('input', () => {
var str_road = document.getElementById("str_road").value;
str_road = str_road +'/slider';
str_road = str_road.trim()+'/9';
var send_slider_v = Number(document.getElementById("slider_vertical_9").value);
var message = new OSC.Message(str_road,send_slider_v);
osc.send(message);
});
document.getElementById('slider_vertical_10').addEventListener('input', () => {
var str_road = document.getElementById("str_road").value;
str_road = str_road +'/slider';
str_road = str_road.trim()+'/10';
var send_slider_v = Number(document.getElementById("slider_vertical_10").value);
var message = new OSC.Message(str_road,send_slider_v);
osc.send(message);
});
document.getElementById('slider_vertical_11').addEventListener('input', () => {
var str_road = document.getElementById("str_road").value;
str_road = str_road +'/slider';
str_road = str_road.trim()+'/11';
var send_slider_v = Number(document.getElementById("slider_vertical_11").value);
var message = new OSC.Message(str_road,send_slider_v);
osc.send(message);
});
document.getElementById('toggle_0').addEventListener('click', () => {
var str_road = document.getElementById("str_road").value;
var send_checkbox = Number(document.getElementById("toggle_0").checked);
str_road = str_road +'/toggle';
str_road = str_road.trim()+'/0';
var message = new OSC.Message(str_road,send_checkbox);
osc.send(message);
});
document.getElementById('toggle_1').addEventListener('click', () => {
var str_road = document.getElementById("str_road").value; ///retrieving the value of the route/road input field
str_road = str_road +'/toggle'; //add /toggle to route
str_road = str_road.trim()+'/1'; //add toggle number to route
var send_checkbox = Number(document.getElementById("toggle_1").checked);//retrieving the value of the toggle/checkbox of the web page
var message = new OSC.Message(str_road,send_checkbox); //message creation before sending
osc.send(message);
});
document.getElementById('toggle_2').addEventListener('click', () => {
var str_road = document.getElementById("str_road").value;
str_road = str_road +'/toggle';
str_road = str_road.trim()+'/2';
var send_checkbox = Number(document.getElementById("toggle_2").checked);
var message = new OSC.Message(str_road,send_checkbox);
osc.send(message);
});
document.getElementById('toggle_3').addEventListener('click', () => {
var str_road = document.getElementById("str_road").value;
str_road = str_road +'/toggle';
str_road = str_road.trim()+'/3';
var send_checkbox = Number(document.getElementById("toggle_3").checked);
var message = new OSC.Message(str_road,send_checkbox);
osc.send(message);
});
document.getElementById('toggle_4').addEventListener('click', () => {
var str_road = document.getElementById("str_road").value;
str_road = str_road +'/toggle';
str_road = str_road.trim()+'/4';
var send_checkbox = Number(document.getElementById("toggle_4").checked);
var message = new OSC.Message(str_road,send_checkbox);
osc.send(message);
});
document.getElementById('toggle_5').addEventListener('click', () => {
var str_road = document.getElementById("str_road").value;
str_road = str_road +'/toggle';
str_road = str_road.trim()+'/5';
var send_checkbox = Number(document.getElementById("toggle_5").checked);
var message = new OSC.Message(str_road,send_checkbox);
osc.send(message);
});
document.getElementById('toggle_6').addEventListener('click', () => {
var str_road = document.getElementById("str_road").value;
str_road = str_road +'/toggle';
str_road = str_road.trim()+'/6';
var send_checkbox = Number(document.getElementById("toggle_6").checked);
var message = new OSC.Message(str_road,send_checkbox);
osc.send(message);
});
document.getElementById('toggle_7').addEventListener('click', () => {
var str_road = document.getElementById("str_road").value;
str_road = str_road +'/toggle';
str_road = str_road.trim()+'/7';
var send_checkbox = Number(document.getElementById("toggle_7").checked);
var message = new OSC.Message(str_road,send_checkbox);
osc.send(message);
});
document.getElementById('toggle_8').addEventListener('click', () => {
var str_road = document.getElementById("str_road").value;
str_road = str_road +'/toggle';
str_road = str_road.trim()+'/8';
var send_checkbox = Number(document.getElementById("toggle_8").checked);
var message = new OSC.Message(str_road,send_checkbox);
osc.send(message);
});
document.getElementById('toggle_9').addEventListener('click', () => {
var str_road = document.getElementById("str_road").value;
str_road = str_road +'/toggle';
str_road = str_road.trim()+'/9';
var send_checkbox = Number(document.getElementById("toggle_9").checked);
var message = new OSC.Message(str_road,send_checkbox);
osc.send(message);
});
document.getElementById('toggle_10').addEventListener('click', () => {
var str_road = document.getElementById("str_road").value;
str_road = str_road +'/toggle';
str_road = str_road.trim()+'/10';
var send_checkbox = Number(document.getElementById("toggle_10").checked);
var message = new OSC.Message(str_road,send_checkbox);
osc.send(message);
});
document.getElementById('toggle_11').addEventListener('click', () => {
var str_road = document.getElementById("str_road").value;
str_road = str_road +'/toggle';
str_road = str_road.trim()+'/11';
var send_checkbox = Number(document.getElementById("toggle_11").checked);
var message = new OSC.Message(str_road,send_checkbox);
osc.send(message);
});
document.getElementById('bang_0').addEventListener('click', () => {
var str_road = document.getElementById("str_road").value; //retrieving the value of the route/road input field
str_road = str_road +'/bang'; //add /bang to route
str_road = str_road.trim()+'/0'; //add bang number to route
var bang = Number(document.getElementById("bang_0").value); //retrieving the value of the bouton of the web page
var message = new OSC.Message(str_road,bang); //message creation before sending
osc.send(message);
});
document.getElementById('bang_1').addEventListener('click', () => {
var str_road = document.getElementById("str_road").value;
str_road = str_road +'/bang';
str_road = str_road.trim()+'/1';
var bang = Number(document.getElementById("bang_1").value);
var message = new OSC.Message(str_road,bang);
osc.send(message);
});
document.getElementById('bang_2').addEventListener('click', () => {
var str_road = document.getElementById("str_road").value;
str_road = str_road +'/bang';
str_road = str_road.trim()+'/2';
var bang = Number(document.getElementById("bang_2").value);
var message = new OSC.Message(str_road,bang);
osc.send(message);
});
document.getElementById('bang_3').addEventListener('click', () => {
var str_road = document.getElementById("str_road").value;
str_road = str_road +'/bang';
str_road = str_road.trim()+'/3';
var bang = Number(document.getElementById("bang_3").value);
var message = new OSC.Message(str_road,bang);
osc.send(message);
});
document.getElementById('bang_4').addEventListener('click', () => {
var str_road = document.getElementById("str_road").value;
str_road = str_road +'/bang';
str_road = str_road.trim()+'/4';
var bang = Number(document.getElementById("bang_4").value);
var message = new OSC.Message(str_road,bang);
osc.send(message);
});
document.getElementById('bang_5').addEventListener('click', () => {
var str_road = document.getElementById("str_road").value;
str_road = str_road +'/bang';
str_road = str_road.trim()+'/5';
var bang = Number(document.getElementById("bang_5").value);
var message = new OSC.Message(str_road,bang);
osc.send(message);
});
document.getElementById('bang_6').addEventListener('click', () => {
var str_road = document.getElementById("str_road").value;
str_road = str_road +'/bang';
str_road = str_road.trim()+'/6';
var bang = Number(document.getElementById("bang_6").value);
var message = new OSC.Message(str_road,bang);
osc.send(message);
});
document.getElementById('bang_7').addEventListener('click', () => {
var str_road = document.getElementById("str_road").value;
str_road = str_road +'/bang';
str_road = str_road.trim()+'/7';
var bang = Number(document.getElementById("bang_7").value);
var message = new OSC.Message(str_road,bang);
osc.send(message);
});
document.getElementById('bang_8').addEventListener('click', () => {
var str_road = document.getElementById("str_road").value;
str_road = str_road +'/bang';
str_road = str_road.trim()+'/8';
var bang = Number(document.getElementById("bang_8").value);
var message = new OSC.Message(str_road,bang);
osc.send(message);
});
document.getElementById('bang_9').addEventListener('click', () => {
var str_road = document.getElementById("str_road").value;
str_road = str_road +'/bang';
str_road = str_road.trim()+'/9';
var bang = Number(document.getElementById("bang_9").value);
var message = new OSC.Message(str_road,bang);
osc.send(message);
});
document.getElementById('bang_10').addEventListener('click', () => {
var str_road = document.getElementById("str_road").value;
str_road = str_road +'/bang';
str_road = str_road.trim()+'/10';
var bang = Number(document.getElementById("bang_10").value);
var message = new OSC.Message(str_road,bang);
osc.send(message);
});
document.getElementById('bang_11').addEventListener('click', () => {
var str_road = document.getElementById("str_road").value;
str_road = str_road +'/bang';
str_road = str_road.trim()+'/11';
var bang = Number(document.getElementById("bang_11").value);
var message = new OSC.Message(str_road,bang);
osc.send(message);
});
document.getElementById('generative_toggle').addEventListener('click', () => {
var str_road = document.getElementById("str_road").value; //retrieving the value of the route/road input field
str_road = str_road +'/generative_toggle';//add /generative_toggle to route
str_road = str_road.trim(); //removal of spaces from the route
var send_checkbox = Number(document.getElementById("generative_toggle").checked); //retrieving the value of the toggle/checkbox of the web page
var message = new OSC.Message(str_road,send_checkbox); //message creation before sending
osc.send(message);
});
sudo nano test1.html
- le contenu du fichier
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
<link charset="UTF8" href=".\index.css" rel="stylesheet" type="text/css" />
<title>page test1 </title>
</head>
<body>
<table>
<td>
<label for="str"><p>texte/route :</p></label>
</td>
<td>
<input type="text" id="str" name="str" value="/"
minlength="0" maxlength="100">
</td>
</table>
<p><br/></p>
<table border="0">
<tr>
<p>Message</p>
</tr>
<tr>
<td>
<label for="n1"><p>nombre n°1 :</p></p></label>
</td>
<td>
<input type="number" id="n1" name="n1"
minlength="0" maxlength="100">
</td>
</tr>
<tr>
<td>
<label for="n2"><p>nombre n°2 :</p></label>
</td>
<td>
<input type="number" id="n2" name="n2"
minlength="0" maxlength="100">
</td>
</tr>
<tr>
<td>
<label for="n3"><p>nombre n°3 :</p></label>
</td>
<td>
<input type="number" id="n3" name="n3"
minlength="0" maxlength="100">
</td>
</tr>
<tr>
<td>
<button id="send">Send Message</button>
</td>
</tr>
</table>
<p><br/></p>
<table border="0">
<tr>
<td>
<button id="send_bang">Send /bang</button>
</td>
</tr>
<tr>
<td>
<input type="range" id="slider_h" min="0" max="127" value="0" step="1">
</td>
<td>
<div class="slider-wrapper">
<input type="range" id="slider_v" min="0" max="127" value="0" step="1">
</div>
</td>
</tr>
<tr>
<td>
<input type="range" id="selector_h"min="0" max="7" value="0" step="1" list="steplist">
<datalist id="steplist">
<option>0</option>
<option>1</option>
<option>2</option>
<option>3</option>
<option>4</option>
<option>5</option>
<option>6</option>
<option>7</option>
</datalist>
</td>
<td>
<div class="slider-wrapper">
<input type="range" id="selector_v"min="0" max="7" value="0" step="1" list="steplist">
<datalist id="steplist">
<option>0</option>
<option>1</option>
<option>2</option>
<option>3</option>
<option>4</option>
<option>5</option>
<option>6</option>
<option>7</option>
</datalist>
</div>
</td>
</tr>
<tr>
<td>
<input class="increase" type="checkbox" id="interupteur" name="interupteur" value="1">
</td>
</tr>
</table>
</body>
<script type="text/javascript" src="https://cdn.jsdelivr.net/gh/adzialocha/osc-js/lib/osc.js"></script> <!--ou <script type="text/javascript" src="node_modules/osc-js/lib/osc.min.js"></script>-->
<script type="text/javascript" src='./test1.js'></script>
</html>
sudo nano test1.js
- le contenu du fichier, des valeurs son à changer en fonction du serveur
const ws_host = "ip_publique_serveur";
const ws_port = port_ecouter_par_le_serveur;
var osc = new OSC(
{plugin: new OSC.WebsocketClientPlugin({host: ws_host, port: ws_port})}
);
osc.open(); // connect by default to ws://localhost:8080
document.getElementById('send').addEventListener('click', () => {
var str = document.getElementById("str").value;
var n1 = Number(document.getElementById("n1").value);
var n2 = Number(document.getElementById("n2").value);
var n3 = Number(document.getElementById("n3").value);
var message = new OSC.Message(str,n1,n2,n3);
osc.send(message);
});
document.getElementById('send_bang').addEventListener('click', () => {
var message = new OSC.Message('/bang');
osc.send(message);
});
document.getElementById('slider_h').addEventListener('input', () => {
var str = document.getElementById("str").value;
var send_slider_h = Number(document.getElementById("slider_h").value);
var message = new OSC.Message(str,send_slider_h);
osc.send(message);
});
document.getElementById('slider_v').addEventListener('input', () => {
var str = document.getElementById("str").value;
var send_slider_v = Number(document.getElementById("slider_v").value);
var message = new OSC.Message(str,send_slider_v);
osc.send(message);
});
document.getElementById('selector_h').addEventListener('input', () => {
var str = document.getElementById("str").value;
var send_selector_h = Number(document.getElementById("selector_h").value);
var message = new OSC.Message(str,send_selector_h);
osc.send(message);
});
document.getElementById('selector_v').addEventListener('input', () => {
var str = document.getElementById("str").value;
var send_selector_v = Number(document.getElementById("selector_v").value);
var message = new OSC.Message(str,send_selector_v);
osc.send(message);
});
document.getElementById('interupteur').addEventListener('click', () => {
var str = document.getElementById("str").value;
var send_checkbox = Number(document.getElementById("interupteur").checked);
var message = new OSC.Message(str,send_checkbox);
osc.send(message);
});