some tuning...
This commit is contained in:
parent
655a528192
commit
f804d2c7ab
4
Makefile
4
Makefile
@ -2,10 +2,10 @@
|
|||||||
|
|
||||||
# umpf...
|
# umpf...
|
||||||
|
|
||||||
OPTS = -Wall -g -DDEBUG_LEVEL=1
|
OPTS = -Wall -g -DDEBUG_LEVEL=0
|
||||||
DEPS = Makefile
|
DEPS = Makefile
|
||||||
|
|
||||||
all: osc-joy osc2cursor text2osc
|
all: osc-joy osc2cursor text2osc showbuttons
|
||||||
|
|
||||||
# --------------------------------------------------------------
|
# --------------------------------------------------------------
|
||||||
|
|
||||||
|
10
README.md
10
README.md
@ -2,6 +2,10 @@
|
|||||||
|
|
||||||
Oui, je sais, tout ça n'est pas vraiment clair. Mais je me soigne.
|
Oui, je sais, tout ça n'est pas vraiment clair. Mais je me soigne.
|
||||||
|
|
||||||
|
Première étape : consulter le
|
||||||
|
[site d'OSC](https://opensoundcontrol.stanford.edu/) pour comprendre comment
|
||||||
|
ça fonctionne.
|
||||||
|
|
||||||
## prérequis
|
## prérequis
|
||||||
|
|
||||||
Première étape avant de générer les binaires, installer quelques
|
Première étape avant de générer les binaires, installer quelques
|
||||||
@ -28,7 +32,7 @@ Et ensuite `make` dans le répertoire de base...
|
|||||||
|
|
||||||
## osc-joy
|
## osc-joy
|
||||||
|
|
||||||
Lecture d'une manette de jeu USB et envoi des x/y et des boutons
|
Lecture d'une manette de jeu USB et envoi des coordonnées x/y et des boutons
|
||||||
vers un écouteur OSC.
|
vers un écouteur OSC.
|
||||||
|
|
||||||
L'option `-o NN` rajoute NN au numéro de bouton.
|
L'option `-o NN` rajoute NN au numéro de bouton.
|
||||||
@ -42,6 +46,10 @@ Une appli ncurses trop choupie :)
|
|||||||
|
|
||||||
Pour faire __beep__ vers Chuck...
|
Pour faire __beep__ vers Chuck...
|
||||||
|
|
||||||
|
## showbuttons
|
||||||
|
|
||||||
|
Presque fini depuis quelques mois.
|
||||||
|
|
||||||
# Le reste
|
# Le reste
|
||||||
|
|
||||||
## Loth Project
|
## Loth Project
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
/* faire pouet avec chuck osc et un joystick
|
/*
|
||||||
|
faire pouet avec chuck osc et un joystick
|
||||||
-----------------------------------------
|
-----------------------------------------
|
||||||
reception des boutons
|
reception des boutons
|
||||||
*/
|
*/
|
||||||
@ -9,7 +10,7 @@ SqrOsc sl => Envelope envl => dac.left;
|
|||||||
SawOsc sr => Envelope envr => dac.right;
|
SawOsc sr => Envelope envr => dac.right;
|
||||||
0.5 => sl.gain => sr.gain;
|
0.5 => sl.gain => sr.gain;
|
||||||
|
|
||||||
0.01 => envl.time; 0.04 => envr.time;
|
0.22 => envl.time; 0.22 => envr.time;
|
||||||
|
|
||||||
OscIn oscin; OscMsg msg;
|
OscIn oscin; OscMsg msg;
|
||||||
|
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
7777 => int InPort;
|
7777 => int InPort;
|
||||||
|
15.55 => float divisor;
|
||||||
SqrOsc sl => dac.left;
|
SqrOsc sl => dac.left;
|
||||||
SawOsc sr => dac.right;
|
SawOsc sr => dac.right;
|
||||||
0.0 => sl.gain => sr.gain;
|
0.0 => sl.gain => sr.gain;
|
||||||
@ -27,8 +27,8 @@ while( true ) {
|
|||||||
msg.getInt(0) => x;
|
msg.getInt(0) => x;
|
||||||
msg.getInt(1) => y;
|
msg.getInt(1) => y;
|
||||||
<<< "got (via ", InPort,") ", x, y >>>;
|
<<< "got (via ", InPort,") ", x, y >>>;
|
||||||
x => sl.freq;
|
x/12.0 => sl.freq;
|
||||||
y => sr.freq;
|
y/12.0 => sr.freq;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -24,7 +24,10 @@
|
|||||||
\section{Open Sound Control}
|
\section{Open Sound Control}
|
||||||
|
|
||||||
De quoi parle-t-on exactement ?
|
De quoi parle-t-on exactement ?
|
||||||
\vspace{1em}
|
\vspace{5em}
|
||||||
|
OSC est un protocole réseau basé sur UDP\index{UDP}.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
% -------------------------------------------------------------------
|
% -------------------------------------------------------------------
|
||||||
\section{Example}
|
\section{Example}
|
||||||
|
@ -68,7 +68,7 @@ return 0; /* this is not a magic number */
|
|||||||
int blast_error_message(char *txt, int violence, int unused)
|
int blast_error_message(char *txt, int violence, int unused)
|
||||||
{
|
{
|
||||||
int line, foo;
|
int line, foo;
|
||||||
char buff[60];
|
char buff[80];
|
||||||
|
|
||||||
#if DEBUG_LEVEL
|
#if DEBUG_LEVEL
|
||||||
fprintf(stderr, "--> %s ( '%s' %d %d )\n", __func__,
|
fprintf(stderr, "--> %s ( '%s' %d %d )\n", __func__,
|
||||||
@ -82,20 +82,36 @@ if (verbosity > 3) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
standout();
|
standout();
|
||||||
|
// setup our part of screen
|
||||||
// clear our part of screen
|
|
||||||
for (foo=0; foo<COLS; foo++) {
|
for (foo=0; foo<COLS; foo++) {
|
||||||
mvaddch(line, foo, '_');
|
mvaddch(line, foo, '|');
|
||||||
}
|
}
|
||||||
|
mvaddstr(line, 0, "SYS$MSG_| ");
|
||||||
mvaddstr(line, 0, "SYS$MSG_ ");
|
mvaddstr(line, 10, txt);
|
||||||
mvaddstr(line, 9, txt);
|
|
||||||
standend();
|
standend();
|
||||||
|
refresh();
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
/* ----------------------------------------------------------------- */
|
/* ----------------------------------------------------------------- */
|
||||||
|
int erase_error_message(int ascii)
|
||||||
|
{
|
||||||
|
int foo;
|
||||||
|
|
||||||
|
#if DEBUG_LEVEL
|
||||||
|
fprintf(stderr, "--> %s ( '%c' )\n", __func__, ascii);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
standout();
|
||||||
|
// clear our part of screen
|
||||||
|
for (foo=0; foo<COLS; foo++) {
|
||||||
|
mvaddch(LINES-1, foo, ascii);
|
||||||
|
}
|
||||||
|
standend(); refresh();
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
/* ----------------------------------------------------------------- */
|
||||||
/* warning: only use the bit 0 of the 'state' arg */
|
/* warning: only use the bit 0 of the 'state' arg */
|
||||||
|
|
||||||
int draw_a_button(WINDOW *w, int lig, int col, char *txt, int state)
|
int draw_a_button(WINDOW *w, int lig, int col, char *txt, int state)
|
||||||
|
@ -9,6 +9,7 @@ void endcurses(int p);
|
|||||||
|
|
||||||
int draw_main_screen(char *title, int unused);
|
int draw_main_screen(char *title, int unused);
|
||||||
int blast_error_message(char *txt, int violence, int unused);
|
int blast_error_message(char *txt, int violence, int unused);
|
||||||
|
int erase_error_message(int ascii);
|
||||||
|
|
||||||
/* warning: only use the bit 0 of the 'state' arg */
|
/* warning: only use the bit 0 of the 'state' arg */
|
||||||
int draw_a_button(WINDOW *w, int lig, int col, char *txt, int state);
|
int draw_a_button(WINDOW *w, int lig, int col, char *txt, int state);
|
||||||
|
@ -111,7 +111,6 @@ for (;;) {
|
|||||||
fprintf(stderr, "err reading joy\n");
|
fprintf(stderr, "err reading joy\n");
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* calibration datas ignored */
|
/* calibration datas ignored */
|
||||||
if (js.type > 128) continue;
|
if (js.type > 128) continue;
|
||||||
|
|
||||||
@ -119,11 +118,9 @@ for (;;) {
|
|||||||
fprintf(stderr, "%10u %2d %2d %7d\n",
|
fprintf(stderr, "%10u %2d %2d %7d\n",
|
||||||
js.time, js.type, js.number, js.value);
|
js.time, js.type, js.number, js.value);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (2==js.type) { /* oscillating stick */
|
if (2==js.type) { /* oscillating stick */
|
||||||
flag = 0;
|
flag = 0;
|
||||||
switch (js.number)
|
switch (js.number) {
|
||||||
{
|
|
||||||
case 0:
|
case 0:
|
||||||
x_pos = js.value;
|
x_pos = js.value;
|
||||||
flag = 1;
|
flag = 1;
|
||||||
@ -133,7 +130,6 @@ for (;;) {
|
|||||||
flag = 1;
|
flag = 1;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (flag) {
|
if (flag) {
|
||||||
foo = send_data_xy(t, x_pos, y_pos);
|
foo = send_data_xy(t, x_pos, y_pos);
|
||||||
flag = 0;
|
flag = 0;
|
||||||
@ -144,7 +140,6 @@ for (;;) {
|
|||||||
foo = send_data_button(t, js.number+button_offset,
|
foo = send_data_button(t, js.number+button_offset,
|
||||||
js.value);
|
js.value);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -294,9 +294,14 @@ lo_server_thread_add_method(st, "/joystick/xy", "ii",
|
|||||||
xy_handler, NULL);
|
xy_handler, NULL);
|
||||||
lo_server_thread_start(st);
|
lo_server_thread_start(st);
|
||||||
|
|
||||||
|
#if DEBUG_LEVEL
|
||||||
|
fprintf(stderr, "pid %d: osc server thread started\n", getpid());
|
||||||
|
#endif
|
||||||
|
|
||||||
sprintf(ligne, "process %d on board, captain ", getpid());
|
sprintf(ligne, "process %d on board, captain ", getpid());
|
||||||
blast_error_message(ligne, 0, 0);
|
blast_error_message(ligne, 0, 0);
|
||||||
sleep(1);
|
sleep(1);
|
||||||
|
erase_error_message('-');
|
||||||
|
|
||||||
for (;;) {
|
for (;;) {
|
||||||
/* wait for un event from liblo threads */
|
/* wait for un event from liblo threads */
|
||||||
|
@ -79,12 +79,15 @@ do {
|
|||||||
if (verbosity) {
|
if (verbosity) {
|
||||||
gettimeofday(&tp, NULL);
|
gettimeofday(&tp, NULL);
|
||||||
curtime = tp.tv_sec + tp.tv_usec / 1e6;
|
curtime = tp.tv_sec + tp.tv_usec / 1e6;
|
||||||
printf("----+ %4ld %5d b ts: %.3f\n",
|
printf("----+ frame %4ld %5d bytes t= %.3f sec.\n",
|
||||||
serial, foo, curtime - starttime);
|
serial, foo, curtime - starttime);
|
||||||
|
/*
|
||||||
|
* MUST display ip:port of the sender !
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
for (bar=0; bar<=foo; bar+=16) {
|
for (bar=0; bar<=foo; bar+=16) {
|
||||||
printf("%3ld | ", bar);
|
printf("%3d | ", bar);
|
||||||
dumpln(buffer+bar);
|
dumpln(buffer+bar);
|
||||||
}
|
}
|
||||||
serial++;
|
serial++;
|
||||||
|
Loading…
Reference in New Issue
Block a user