[PD-cvs] pd/src s_midi.c,1.4.4.1.2.12.2.9,1.4.4.1.2.12.2.10
Mathieu Bouchard
matju at users.sourceforge.net
Tue Jul 10 08:20:50 CEST 2007
Update of /cvsroot/pure-data/pd/src
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv21781
Modified Files:
Tag: desiredata
s_midi.c
Log Message:
cleanup; removed prefixes of t_midiqelem
Index: s_midi.c
===================================================================
RCS file: /cvsroot/pure-data/pd/src/s_midi.c,v
retrieving revision 1.4.4.1.2.12.2.9
retrieving revision 1.4.4.1.2.12.2.10
diff -C2 -d -r1.4.4.1.2.12.2.9 -r1.4.4.1.2.12.2.10
*** s_midi.c 9 Jul 2007 18:01:30 -0000 1.4.4.1.2.12.2.9
--- s_midi.c 10 Jul 2007 06:20:48 -0000 1.4.4.1.2.12.2.10
***************
*** 25,36 ****
#include <signal.h>
! typedef struct _midiqelem {
! double q_time;
! int q_portno;
! unsigned char q_onebyte;
! unsigned char q_byte1;
! unsigned char q_byte2;
! unsigned char q_byte3;
! } t_midiqelem;
#define MIDIQSIZE 1024
--- 25,36 ----
#include <signal.h>
! struct t_midiqelem {
! double time;
! int portno;
! unsigned char onebyte;
! unsigned char byte1;
! unsigned char byte2;
! unsigned char byte3;
! };
#define MIDIQSIZE 1024
***************
*** 57,61 ****
static double sys_whenupdate;
! void sys_initmidiqueue (void) {
sys_midiinittime = clock_getlogicaltime();
sys_dactimeminusrealtime = sys_adctimeminusrealtime = 0;
--- 57,61 ----
static double sys_whenupdate;
! void sys_initmidiqueue() {
sys_midiinittime = clock_getlogicaltime();
sys_dactimeminusrealtime = sys_adctimeminusrealtime = 0;
***************
*** 82,105 ****
going out, based on how much "system time" has elapsed since the
last time sys_setmiditimediff got called. */
! static double sys_getmidioutrealtime (void) {return sys_getrealtime() + sys_dactimeminusrealtime;}
! static double sys_getmidiinrealtime (void) {return sys_getrealtime() + sys_adctimeminusrealtime;}
! static void sys_putnext (void) {
! int portno = midi_outqueue[midi_outtail].q_portno;
#ifdef USEAPI_ALSA
if (sys_midiapi == API_ALSA) {
! if (midi_outqueue[midi_outtail].q_onebyte)
! sys_alsa_putmidibyte(portno, midi_outqueue[midi_outtail].q_byte1);
! else sys_alsa_putmidimess(portno, midi_outqueue[midi_outtail].q_byte1,
! midi_outqueue[midi_outtail].q_byte2,
! midi_outqueue[midi_outtail].q_byte3);
} else
#endif /* ALSA */
{
! if (midi_outqueue[midi_outtail].q_onebyte)
! sys_putmidibyte(portno, midi_outqueue[midi_outtail].q_byte1);
! else sys_putmidimess(portno, midi_outqueue[midi_outtail].q_byte1,
! midi_outqueue[midi_outtail].q_byte2,
! midi_outqueue[midi_outtail].q_byte3);
}
midi_outtail = (midi_outtail + 1 == MIDIQSIZE ? 0 : midi_outtail + 1);
--- 82,105 ----
going out, based on how much "system time" has elapsed since the
last time sys_setmiditimediff got called. */
! static double sys_getmidioutrealtime() {return sys_getrealtime() + sys_dactimeminusrealtime;}
! static double sys_getmidiinrealtime () {return sys_getrealtime() + sys_adctimeminusrealtime;}
! static void sys_putnext () {
! int portno = midi_outqueue[midi_outtail].portno;
#ifdef USEAPI_ALSA
if (sys_midiapi == API_ALSA) {
! if (midi_outqueue[midi_outtail].onebyte)
! sys_alsa_putmidibyte(portno, midi_outqueue[midi_outtail].byte1);
! else sys_alsa_putmidimess(portno, midi_outqueue[midi_outtail].byte1,
! midi_outqueue[midi_outtail].byte2,
! midi_outqueue[midi_outtail].byte3);
} else
#endif /* ALSA */
{
! if (midi_outqueue[midi_outtail].onebyte)
! sys_putmidibyte(portno, midi_outqueue[midi_outtail].byte1);
! else sys_putmidimess(portno, midi_outqueue[midi_outtail].byte1,
! midi_outqueue[midi_outtail].byte2,
! midi_outqueue[midi_outtail].byte3);
}
midi_outtail = (midi_outtail + 1 == MIDIQSIZE ? 0 : midi_outtail + 1);
***************
*** 108,112 ****
/* #define TEST_DEJITTER */
! void sys_pollmidioutqueue (void) {
#ifdef TEST_DEJITTER
static int db = 0;
--- 108,112 ----
/* #define TEST_DEJITTER */
! void sys_pollmidioutqueue() {
#ifdef TEST_DEJITTER
static int db = 0;
***************
*** 114,119 ****
double midirealtime = sys_getmidioutrealtime();
#ifdef TEST_DEJITTER
! if (midi_outhead == midi_outtail)
! db = 0;
#endif
while (midi_outhead != midi_outtail) {
--- 114,118 ----
double midirealtime = sys_getmidioutrealtime();
#ifdef TEST_DEJITTER
! if (midi_outhead == midi_outtail) db = 0;
#endif
while (midi_outhead != midi_outtail) {
***************
*** 121,125 ****
if (!db) {
post("out: del %f, midiRT %f logicaltime %f, RT %f dacminusRT %f",
! (midi_outqueue[midi_outtail].q_time - midirealtime),
midirealtime, .001 * clock_gettimesince(sys_midiinittime),
sys_getrealtime(), sys_dactimeminusrealtime);
--- 120,124 ----
if (!db) {
post("out: del %f, midiRT %f logicaltime %f, RT %f dacminusRT %f",
! (midi_outqueue[midi_outtail].time - midirealtime),
midirealtime, .001 * clock_gettimesince(sys_midiinittime),
sys_getrealtime(), sys_dactimeminusrealtime);
***************
*** 127,131 ****
}
#endif
! if (midi_outqueue[midi_outtail].q_time <= midirealtime)
sys_putnext();
else break;
--- 126,130 ----
}
#endif
! if (midi_outqueue[midi_outtail].time <= midirealtime)
sys_putnext();
else break;
***************
*** 138,148 ****
/* if FIFO is full flush an element to make room */
if (newhead == midi_outtail) sys_putnext();
! midi_outqueue[midi_outhead].q_portno = portno;
! midi_outqueue[midi_outhead].q_onebyte = onebyte;
! midi_outqueue[midi_outhead].q_byte1 = a;
! midi_outqueue[midi_outhead].q_byte2 = b;
! midi_outqueue[midi_outhead].q_byte3 = c;
! midi_outqueue[midi_outhead].q_time =
! .001 * clock_gettimesince(sys_midiinittime);
midi_outhead = newhead;
sys_pollmidioutqueue();
--- 137,146 ----
/* if FIFO is full flush an element to make room */
if (newhead == midi_outtail) sys_putnext();
! midi_outqueue[midi_outhead].portno = portno;
! midi_outqueue[midi_outhead].onebyte = onebyte;
! midi_outqueue[midi_outhead].byte1 = a;
! midi_outqueue[midi_outhead].byte2 = b;
! midi_outqueue[midi_outhead].byte3 = c;
! midi_outqueue[midi_outhead].time = .001 * clock_gettimesince(sys_midiinittime);
midi_outhead = newhead;
sys_pollmidioutqueue();
***************
*** 222,229 ****
#define MIDIRESET 0xff /* 0 */
! static void sys_dispatchnextmidiin (void) {
static t_midiparser parser[MAXMIDIINDEV], *parserp;
! int portno = midi_inqueue[midi_intail].q_portno, byte = midi_inqueue[midi_intail].q_byte1;
! if (!midi_inqueue[midi_intail].q_onebyte) bug("sys_dispatchnextmidiin");
if (portno < 0 || portno >= MAXMIDIINDEV) bug("sys_dispatchnextmidiin 2");
parserp = parser + portno;
--- 220,227 ----
#define MIDIRESET 0xff /* 0 */
! static void sys_dispatchnextmidiin() {
static t_midiparser parser[MAXMIDIINDEV], *parserp;
! int portno = midi_inqueue[midi_intail].portno, byte = midi_inqueue[midi_intail].byte1;
! if (!midi_inqueue[midi_intail].onebyte) bug("sys_dispatchnextmidiin");
if (portno < 0 || portno >= MAXMIDIINDEV) bug("sys_dispatchnextmidiin 2");
parserp = parser + portno;
***************
*** 293,297 ****
}
! void sys_pollmidiinqueue (void) {
#ifdef TEST_DEJITTER
static int db = 0;
--- 291,295 ----
}
! void sys_pollmidiinqueue() {
#ifdef TEST_DEJITTER
static int db = 0;
***************
*** 306,310 ****
if (!db) {
post("in del %f, logicaltime %f, RT %f adcminusRT %f",
! (midi_inqueue[midi_intail].q_time - logicaltime),
logicaltime, sys_getrealtime(), sys_adctimeminusrealtime);
db = 1;
--- 304,308 ----
if (!db) {
post("in del %f, logicaltime %f, RT %f adcminusRT %f",
! (midi_inqueue[midi_intail].time - logicaltime),
logicaltime, sys_getrealtime(), sys_adctimeminusrealtime);
db = 1;
***************
*** 312,321 ****
#endif
#if 0
! if (midi_inqueue[midi_intail].q_time <= logicaltime - 0.007)
! post("late %f", 1000 * (logicaltime - midi_inqueue[midi_intail].q_time));
#endif
! if (midi_inqueue[midi_intail].q_time <= logicaltime) {
#if 0
! post("diff %f", 1000* (logicaltime - midi_inqueue[midi_intail].q_time));
#endif
sys_dispatchnextmidiin();
--- 310,319 ----
#endif
#if 0
! if (midi_inqueue[midi_intail].time <= logicaltime - 0.007)
! post("late %f", 1000 * (logicaltime - midi_inqueue[midi_intail].time));
#endif
! if (midi_inqueue[midi_intail].time <= logicaltime) {
#if 0
! post("diff %f", 1000* (logicaltime - midi_inqueue[midi_intail].time));
#endif
sys_dispatchnextmidiin();
***************
*** 342,354 ****
sys_dispatchnextmidiin();
}
! midi_inqueue[midi_inhead].q_portno = portno;
! midi_inqueue[midi_inhead].q_onebyte = 1;
! midi_inqueue[midi_inhead].q_byte1 = byte;
! midi_inqueue[midi_inhead].q_time = sys_getmidiinrealtime();
midi_inhead = newhead;
sys_pollmidiinqueue();
}
! void sys_pollmidiqueue (void) {
#if 0
static double lasttime;
--- 340,352 ----
sys_dispatchnextmidiin();
}
! midi_inqueue[midi_inhead].portno = portno;
! midi_inqueue[midi_inhead].onebyte = 1;
! midi_inqueue[midi_inhead].byte1 = byte;
! midi_inqueue[midi_inhead].time = sys_getmidiinrealtime();
midi_inhead = newhead;
sys_pollmidiinqueue();
}
! void sys_pollmidiqueue() {
#if 0
static double lasttime;
***************
*** 370,382 ****
#ifdef USEAPI_ALSA
! void midi_alsa_init (void);
#endif
#ifndef USEAPI_PORTMIDI
#ifdef USEAPI_OSS
! void midi_oss_init (void);
#endif
#endif
! /* last requested parameters */
static int midi_nmidiindev;
static int midi_midiindev[MAXMIDIINDEV];
--- 368,380 ----
#ifdef USEAPI_ALSA
! void midi_alsa_init();
#endif
#ifndef USEAPI_PORTMIDI
#ifdef USEAPI_OSS
! void midi_oss_init();
#endif
#endif
! /* last requested parameters */
static int midi_nmidiindev;
static int midi_midiindev[MAXMIDIINDEV];
***************
*** 384,388 ****
static int midi_midioutdev[MAXMIDIOUTDEV];
-
void sys_get_midi_apis(char *buf) {
int n = 0;
--- 382,385 ----
***************
*** 393,415 ****
#endif
strcat(buf, "}");
- /* then again, if only one API (or none) we don't offer any choice. */
- if (n < 2)
- strcpy(buf, "{}");
-
}
void sys_get_midi_params(int *pnmidiindev, int *pmidiindev, int *pnmidioutdev, int *pmidioutdev) {
! int i;
! *pnmidiindev = midi_nmidiindev;
! for (i = 0; i < MAXMIDIINDEV; i++) pmidiindev[i] = midi_midiindev[i];
! *pnmidioutdev = midi_nmidioutdev;
! for (i = 0; i < MAXMIDIOUTDEV; i++) pmidioutdev[i] = midi_midioutdev[i];
}
static void sys_save_midi_params(int nmidiindev, int *midiindev, int nmidioutdev, int *midioutdev) {
! int i;
! midi_nmidiindev = nmidiindev;
! for (i = 0; i < MAXMIDIINDEV; i++) midi_midiindev[i] = midiindev[i];
! midi_nmidioutdev = nmidioutdev;
! for (i = 0; i < MAXMIDIOUTDEV; i++) midi_midioutdev[i] = midioutdev[i];
}
--- 390,402 ----
#endif
strcat(buf, "}");
}
void sys_get_midi_params(int *pnmidiindev, int *pmidiindev, int *pnmidioutdev, int *pmidioutdev) {
! *pnmidiindev = midi_nmidiindev; for (int i=0; i<MAXMIDIINDEV; i++) pmidiindev [i] = midi_midiindev[i];
! *pnmidioutdev = midi_nmidioutdev; for (int i=0; i<MAXMIDIOUTDEV; i++) pmidioutdev[i] = midi_midioutdev[i];
}
static void sys_save_midi_params(int nmidiindev, int *midiindev, int nmidioutdev, int *midioutdev) {
! midi_nmidiindev = nmidiindev; for (int i=0; i<MAXMIDIINDEV; i++) midi_midiindev [i] = midiindev[i];
! midi_nmidioutdev = nmidioutdev; for (int i=0; i<MAXMIDIOUTDEV; i++) midi_midioutdev[i] = midioutdev[i];
}
***************
*** 435,439 ****
/* open midi using whatever parameters were last used */
! void sys_reopen_midi(void) {
int nmidiindev, midiindev[MAXMIDIINDEV];
int nmidioutdev, midioutdev[MAXMIDIOUTDEV];
--- 422,426 ----
/* open midi using whatever parameters were last used */
! void sys_reopen_midi() {
int nmidiindev, midiindev[MAXMIDIINDEV];
int nmidioutdev, midioutdev[MAXMIDIOUTDEV];
***************
*** 446,453 ****
#define DEVONSET 1 /* To agree with command line flags, normally start at 1 */
! void sys_listmididevs(void) {
char indevlist[MAXNDEV*DEVDESCSIZE], outdevlist[MAXNDEV*DEVDESCSIZE];
! int nindevs = 0, noutdevs = 0, i;
!
#ifdef USEAPI_ALSA
if (sys_midiapi == API_ALSA)
--- 433,439 ----
#define DEVONSET 1 /* To agree with command line flags, normally start at 1 */
! void sys_listmididevs() {
char indevlist[MAXNDEV*DEVDESCSIZE], outdevlist[MAXNDEV*DEVDESCSIZE];
! int nindevs = 0, noutdevs = 0;
#ifdef USEAPI_ALSA
if (sys_midiapi == API_ALSA)
***************
*** 456,469 ****
#endif /* ALSA */
midi_getdevs(indevlist, &nindevs, outdevlist, &noutdevs, MAXNDEV, DEVDESCSIZE);
-
if (!nindevs) post("no midi input devices found");
else {
post("MIDI input devices:");
! for (i = 0; i < nindevs; i++) post("%d. %s", i+1, indevlist + i * DEVDESCSIZE);
}
if (!noutdevs) post("no midi output devices found");
else {
post("MIDI output devices:");
! for (i = 0; i < noutdevs; i++) post("%d. %s", i+DEVONSET, outdevlist + i * DEVDESCSIZE);
}
}
--- 442,454 ----
#endif /* ALSA */
midi_getdevs(indevlist, &nindevs, outdevlist, &noutdevs, MAXNDEV, DEVDESCSIZE);
if (!nindevs) post("no midi input devices found");
else {
post("MIDI input devices:");
! for (int i=0; i<nindevs; i++) post("%d. %s", i+1, indevlist + i * DEVDESCSIZE);
}
if (!noutdevs) post("no midi output devices found");
else {
post("MIDI output devices:");
! for (int i=0; i<noutdevs; i++) post("%d. %s", i+DEVONSET, outdevlist + i * DEVDESCSIZE);
}
}
***************
*** 503,507 ****
extern t_class *glob_pdobject;
! /* start an midi settings dialog window */
void glob_midi_properties(t_pd *dummy, t_floatarg flongform) {
/* these are the devices you're using: */
--- 488,492 ----
extern t_class *glob_pdobject;
! /* start an midi settings dialog window */
void glob_midi_properties(t_pd *dummy, t_floatarg flongform) {
/* these are the devices you're using: */
***************
*** 583,603 ****
char str[DEVDESCSIZE];
int f = ac ? (int)atom_getfloatarg(0,ac,av) : -1;
! t_symbol * selector = gensym("midiindev");
! t_symbol * pd = gensym("pd");
midi_getdevs(indevlist, &nindevs, outdevlist, &noutdevs, MAXNDEV, DEVDESCSIZE);
if (f < 0) {
! int i;
! for (i = 0; i != nindevs ;++i) {
! t_symbol * sym;
strcpy(str, indevlist + i * DEVDESCSIZE);
! sym = gensym(str);
! SETSYMBOL(argv+i, sym);
}
typedmess(pd->s_thing, selector, nindevs, argv);
} else if (f < nindevs) {
- t_symbol * sym;
strcpy(str, indevlist + f * DEVDESCSIZE);
! sym = gensym(str);
! SETSYMBOL(argv, sym);
typedmess(pd->s_thing, selector, 1, argv);
}
--- 568,583 ----
char str[DEVDESCSIZE];
int f = ac ? (int)atom_getfloatarg(0,ac,av) : -1;
! t_symbol *selector = gensym("midiindev");
! t_symbol *pd = gensym("pd");
midi_getdevs(indevlist, &nindevs, outdevlist, &noutdevs, MAXNDEV, DEVDESCSIZE);
if (f < 0) {
! for (int i=0; i<nindevs; i++) {
strcpy(str, indevlist + i * DEVDESCSIZE);
! SETSYMBOL(argv+i, gensym(str));
}
typedmess(pd->s_thing, selector, nindevs, argv);
} else if (f < nindevs) {
strcpy(str, indevlist + f * DEVDESCSIZE);
! SETSYMBOL(argv, gensym(str));
typedmess(pd->s_thing, selector, 1, argv);
}
***************
*** 611,631 ****
char str[DEVDESCSIZE];
int f = ac ? (int)atom_getfloatarg(0,ac,av) : -1;
! t_symbol * selector = gensym("midioutdev");
! t_symbol * pd = gensym("pd");
midi_getdevs(indevlist, &nindevs, outdevlist, &noutdevs, MAXNDEV, DEVDESCSIZE);
if (f < 0) {
! int i;
! for (i = 0; i != noutdevs ;++i) {
! t_symbol * sym;
! strcpy(str, outdevlist + i * DEVDESCSIZE);
! sym = gensym(str);
! SETSYMBOL(argv+i, sym);
}
typedmess(pd->s_thing, selector, noutdevs, argv);
} else if (f < noutdevs) {
! t_symbol * sym;
! strcpy(str, outdevlist + f * DEVDESCSIZE);
! sym = gensym(str);
! SETSYMBOL(argv, sym);
typedmess(pd->s_thing, selector, 1, argv);
}
--- 591,606 ----
char str[DEVDESCSIZE];
int f = ac ? (int)atom_getfloatarg(0,ac,av) : -1;
! t_symbol *selector = gensym("midioutdev");
! t_symbol *pd = gensym("pd");
midi_getdevs(indevlist, &nindevs, outdevlist, &noutdevs, MAXNDEV, DEVDESCSIZE);
if (f < 0) {
! for (int i=0; i<noutdevs; i++) {
! strcpy(str, outdevlist + i*DEVDESCSIZE);
! SETSYMBOL(argv+i, gensym(str));
}
typedmess(pd->s_thing, selector, noutdevs, argv);
} else if (f < noutdevs) {
! strcpy(str, outdevlist + f*DEVDESCSIZE);
! SETSYMBOL(argv, gensym(str));
typedmess(pd->s_thing, selector, 1, argv);
}
***************
*** 637,647 ****
int noutdev, midioutdev[MAXMIDIOUTDEV];
t_atom argv[MAXNDEV];
- int i;
sys_get_midi_params(&nindev, midiindev, &noutdev, midioutdev);
! for (i = 0; i < nindev; i++) SETFLOAT(argv+i, midiindev[i]);
typedmess(gensym("pd")->s_thing, gensym("midicurrentindev"), nindev, argv);
}
-
void glob_midi_getcurrentoutdevs(t_pd *dummy) {
/* these are the devices you're using: */
--- 612,620 ----
int noutdev, midioutdev[MAXMIDIOUTDEV];
t_atom argv[MAXNDEV];
sys_get_midi_params(&nindev, midiindev, &noutdev, midioutdev);
! for (int i=0; i<nindev; i++) SETFLOAT(argv+i, midiindev[i]);
typedmess(gensym("pd")->s_thing, gensym("midicurrentindev"), nindev, argv);
}
void glob_midi_getcurrentoutdevs(t_pd *dummy) {
/* these are the devices you're using: */
***************
*** 649,656 ****
int noutdev, midioutdev[MAXMIDIOUTDEV];
t_atom argv[MAXNDEV];
- int i;
sys_get_midi_params(&nindev, midiindev, &noutdev, midioutdev);
! for (i = 0; i < noutdev; i++) SETFLOAT(argv+i, midioutdev[i]);
typedmess(gensym("pd")->s_thing, gensym("midicurrentoutdev"), noutdev, argv);
}
-
--- 622,627 ----
int noutdev, midioutdev[MAXMIDIOUTDEV];
t_atom argv[MAXNDEV];
sys_get_midi_params(&nindev, midiindev, &noutdev, midioutdev);
! for (int i=0; i<noutdev; i++) SETFLOAT(argv+i, midioutdev[i]);
typedmess(gensym("pd")->s_thing, gensym("midicurrentoutdev"), noutdev, argv);
}
More information about the Pd-cvs
mailing list