Commit 9448f4ab authored by pokergaming's avatar pokergaming
Browse files

hooked audio and midi properties into the prefs dialog

parent 7eb07d44
...@@ -312,10 +312,16 @@ pdgui.gui_post("guistub is " + gfxstub); ...@@ -312,10 +312,16 @@ pdgui.gui_post("guistub is " + gfxstub);
} }
function audio_prefs_callback(attrs) { function audio_prefs_callback(attrs) {
pdgui.gui_post("attrs are " + attrs); pdgui.gui_post("audio attrs are " + attrs);
pdgui.gui_post("attrs length " + attrs.length); pdgui.gui_post("attrs length " + attrs.length);
} }
function midi_prefs_callback(attrs) {
pdgui.gui_post("midi attrs are " + attrs);
pdgui.gui_post("attrs length " + attrs.length);
}
// This gets called from the nw_create_window function in index.html // This gets called from the nw_create_window function in index.html
// It provides us with our window id from the C side. Once we have it // It provides us with our window id from the C side. Once we have it
// we can create the menu and register event callbacks // we can create the menu and register event callbacks
......
...@@ -501,7 +501,8 @@ function gui_check_unique (unique) { ...@@ -501,7 +501,8 @@ function gui_check_unique (unique) {
function gui_startup(version, apilist, midiapilist, fontname_from_pd, fontweight_from_pd) { function gui_startup(version, fontname_from_pd, fontweight_from_pd,
apilist, midiapilist) {
console.log("we're starting up..."); console.log("we're starting up...");
// # tb: user defined typefaces // # tb: user defined typefaces
// our args: // our args:
...@@ -3282,6 +3283,7 @@ function gui_audio_properties(gfxstub, sys_indevs, sys_outdevs, ...@@ -3282,6 +3283,7 @@ function gui_audio_properties(gfxstub, sys_indevs, sys_outdevs,
pd_indevs, pd_inchans, pd_outdevs, pd_outchans, audio_attrs) { pd_indevs, pd_inchans, pd_outdevs, pd_outchans, audio_attrs) {
var attrs = audio_attrs.concat([ var attrs = audio_attrs.concat([
"audio_apis", pd_apilist,
"sys_indevs", sys_indevs, "sys_indevs", sys_indevs,
"sys_outdevs", sys_outdevs, "sys_outdevs", sys_outdevs,
"pd_indevs", pd_indevs, "pd_indevs", pd_indevs,
...@@ -3302,3 +3304,27 @@ function gui_audio_properties(gfxstub, sys_indevs, sys_outdevs, ...@@ -3302,3 +3304,27 @@ function gui_audio_properties(gfxstub, sys_indevs, sys_outdevs,
); );
} }
} }
function gui_midi_properties(gfxstub, sys_indevs, sys_outdevs,
pd_indevs, pd_outdevs, midi_attrs) {
var attrs = midi_attrs.concat([
"midi_apis", pd_midiapilist,
"sys_indevs", sys_indevs,
"sys_outdevs", sys_outdevs,
"pd_indevs", pd_indevs,
"pd_outdevs", pd_outdevs,
]);
gui_post("got back some midi props...");
for (var i = 0; i < arguments.length; i++) {
gui_post("arg " + i + " is " + arguments[i]);
}
if (dialogwin['prefs'] !== null) {
dialogwin['prefs'].eval(null,
'midi_prefs_callback(' +
JSON.stringify(attrs) + ');'
);
}
}
...@@ -139,6 +139,8 @@ either nw_create_window should take fewer parameters or it should take an ...@@ -139,6 +139,8 @@ either nw_create_window should take fewer parameters or it should take an
object with name: value pairs object with name: value pairs
getting the sense that glist_isselected should _always_ have getting the sense that glist_isselected should _always_ have
glist_getcanvas(x) as its first parameter glist_getcanvas(x) as its first parameter
get rid of the old tcl specific sys_get_audio_apis
Crashers Crashers
-------- --------
......
...@@ -1029,6 +1029,38 @@ void sys_get_audio_apis(char *buf) ...@@ -1029,6 +1029,38 @@ void sys_get_audio_apis(char *buf)
strcpy(buf, "{}"); strcpy(buf, "{}");
} }
void sys_get_audio_apis2(t_binbuf *buf)
{
int n = 0;
#ifdef USEAPI_OSS
binbuf_addv(buf, "si", gensym("OSS"), API_OSS); n++;
#endif
#ifdef USEAPI_MMIO
binbuf_addv(buf, "si", gensym("standard (MMIO)"), API_MMIO); n++;
#endif
#ifdef USEAPI_ALSA
binbuf_addv(buf, "si", gensym("ALSA"), API_ALSA); n++;
#endif
#ifdef USEAPI_PORTAUDIO
#ifdef MSW
binbuf_addv(buf, "si", gensym("ASIO (via portaudio)"), API_PORTAUDIO);
#else
#ifdef OSX
binbuf_addv(buf, "si", gensym("standard (portaudio)"), API_PORTAUDIO);
#else
binbuf_addv(buf, "si", gensym("portaudio"), API_PORTAUDIO);
#endif
#endif
n++;
#endif
#ifdef USEAPI_JACK
binbuf_addv(buf, "si", gensym("JACK"), API_JACK); n++;
#endif
/* then again, if only one API (or none) we don't offer any choice. */
// if (n < 2)
// strcpy(buf, "{}");
}
#ifdef USEAPI_ALSA #ifdef USEAPI_ALSA
void alsa_putzeros(int n); void alsa_putzeros(int n);
void alsa_getzeros(int n); void alsa_getzeros(int n);
......
...@@ -821,13 +821,15 @@ void gui_start_vmess(const char *sel, char *fmt, ...) ...@@ -821,13 +821,15 @@ void gui_start_vmess(const char *sel, char *fmt, ...)
} }
static int gui_array_head; static int gui_array_head;
static int gui_array_tail;
void gui_start_array(void) void gui_start_array(void)
{ {
if (gui_array_head) if (gui_array_head && !gui_array_tail)
sys_gui("["); sys_gui("[");
else else
sys_gui(",["); sys_gui(",[");
gui_array_head = 1; gui_array_head = 1;
gui_array_tail = 0;
} }
void gui_f(t_float f) void gui_f(t_float f)
...@@ -839,6 +841,7 @@ void gui_f(t_float f) ...@@ -839,6 +841,7 @@ void gui_f(t_float f)
} }
else else
sys_vgui(",%g", f); sys_vgui(",%g", f);
gui_array_tail = 0;
} }
void gui_i(int i) void gui_i(int i)
...@@ -850,6 +853,7 @@ void gui_i(int i) ...@@ -850,6 +853,7 @@ void gui_i(int i)
} }
else else
sys_vgui(",%d", i); sys_vgui(",%d", i);
gui_array_tail = 0;
} }
void gui_s(const char *s) void gui_s(const char *s)
...@@ -861,11 +865,13 @@ void gui_s(const char *s) ...@@ -861,11 +865,13 @@ void gui_s(const char *s)
} }
else else
sys_vgui(",\"%s\"", escape_double_quotes(s)); sys_vgui(",\"%s\"", escape_double_quotes(s));
gui_array_tail = 0;
} }
void gui_end_array(void) void gui_end_array(void)
{ {
sys_gui("]"); sys_gui("]");
gui_array_tail = 1;
} }
void gui_end_vmess(void) void gui_end_vmess(void)
...@@ -1270,9 +1276,9 @@ int sys_startgui(const char *guidir) ...@@ -1270,9 +1276,9 @@ int sys_startgui(const char *guidir)
/* SUPERHACK - let's just load node-webkit and see what happens */ /* SUPERHACK - let's just load node-webkit and see what happens */
sprintf(cmdbuf, sprintf(cmdbuf,
"/home/nu/Downloads/nwjs-v0.12.0-linux-ia32/nw " "/home/bud/Downloads/nwjs-v0.12.1-linux-x64/nw "
// "/home/nu/Downloads/nwjs-v0.12.0-alpha2-linux-ia32/nw " // "/home/nu/Downloads/nwjs-v0.12.0-alpha2-linux-ia32/nw "
"/home/nu/Downloads/test/ %d localhost %s\n", "/home/bud/pd-nw/pd/nw/ %d localhost %s\n",
portno, portno,
(sys_k12_mode ? "pd-l2ork-k12" : "pd-l2ork")); (sys_k12_mode ? "pd-l2ork-k12" : "pd-l2ork"));
...@@ -1473,12 +1479,34 @@ int sys_startgui(const char *guidir) ...@@ -1473,12 +1479,34 @@ int sys_startgui(const char *guidir)
// sys_vgui("pdtk_pd_startup {%s} %s %s {%s} %s\n", pd_version, buf, buf2, // sys_vgui("pdtk_pd_startup {%s} %s %s {%s} %s\n", pd_version, buf, buf2,
// sys_font, sys_fontweight); // sys_font, sys_fontweight);
gui_vmess("gui_startup", "sssss", t_binbuf *aapis = binbuf_new(), *mapis = binbuf_new();
sys_get_audio_apis2(aapis);
sys_get_midi_apis2(mapis);
gui_start_vmess("gui_startup", "sss",
pd_version, pd_version,
buf,
buf2,
sys_font, sys_font,
sys_fontweight); sys_fontweight);
int i;
gui_start_array(); // audio apis
for (i = 0; i < binbuf_getnatom(aapis); i+=2)
{
gui_s(atom_getsymbol(binbuf_getvec(aapis)+i)->s_name);
gui_i(atom_getint(binbuf_getvec(aapis)+i+1));
}
gui_end_array();
gui_start_array(); // midi apis
for (i = 0; i < binbuf_getnatom(mapis); i+=2)
{
gui_s(atom_getsymbol(binbuf_getvec(mapis)+i)->s_name);
gui_i(atom_getint(binbuf_getvec(mapis)+i+1));
}
gui_end_array();
gui_end_vmess();
binbuf_free(aapis);
binbuf_free(mapis);
} }
return (0); return (0);
......
...@@ -521,6 +521,23 @@ void sys_get_midi_apis(char *buf) ...@@ -521,6 +521,23 @@ void sys_get_midi_apis(char *buf)
strcpy(buf, "{}"); strcpy(buf, "{}");
} }
void sys_get_midi_apis2(t_binbuf *buf)
{
int n = 0;
#ifndef USEAPI_ALSA
binbuf_addv(buf, "si", gensym("OSS"), API_DEFAULT); n++;
#else
n++;
#endif
#ifdef USEAPI_ALSA
binbuf_addv(buf, "si", gensym("ALSA"), API_ALSA); n++;
#endif
/* 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, void sys_get_midi_params(int *pnmidiindev, int *pmidiindev,
int *pnmidioutdev, int *pmidioutdev) int *pnmidioutdev, int *pmidioutdev)
{ {
...@@ -678,15 +695,30 @@ void glob_midi_properties(t_pd *dummy, t_floatarg flongform) ...@@ -678,15 +695,30 @@ void glob_midi_properties(t_pd *dummy, t_floatarg flongform)
midi_getdevs(indevlist, &nindevs, outdevlist, &noutdevs, midi_getdevs(indevlist, &nindevs, outdevlist, &noutdevs,
MAXNDEV, DEVDESCSIZE); MAXNDEV, DEVDESCSIZE);
sys_gui("global midi_indevlist; set midi_indevlist {none}\n"); gui_start_vmess("gui_midi_properties", "s",
gfxstub_new2(&glob_pdobject, (void *)glob_midi_properties));
//sys_gui("global midi_indevlist; set midi_indevlist {none}\n");
gui_start_array();
for (i = 0; i < nindevs; i++) for (i = 0; i < nindevs; i++)
sys_vgui("lappend midi_indevlist {%s}\n", {
indevlist + i * DEVDESCSIZE); //sys_vgui("lappend midi_indevlist {%s}\n",
// indevlist + i * DEVDESCSIZE);
gui_s(indevlist + i * DEVDESCSIZE);
}
gui_end_array();
//sys_gui("global midi_outdevlist; set midi_outdevlist {none}\n");
sys_gui("global midi_outdevlist; set midi_outdevlist {none}\n"); gui_start_array();
for (i = 0; i < noutdevs; i++) for (i = 0; i < noutdevs; i++)
sys_vgui("lappend midi_outdevlist {%s}\n", {
outdevlist + i * DEVDESCSIZE); //sys_vgui("lappend midi_outdevlist {%s}\n",
// outdevlist + i * DEVDESCSIZE);
gui_s(outdevlist + i * DEVDESCSIZE);
}
gui_end_array();
sys_get_midi_params(&nindev, midiindev, &noutdev, midioutdev); sys_get_midi_params(&nindev, midiindev, &noutdev, midioutdev);
...@@ -702,27 +734,53 @@ void glob_midi_properties(t_pd *dummy, t_floatarg flongform) ...@@ -702,27 +734,53 @@ void glob_midi_properties(t_pd *dummy, t_floatarg flongform)
midioutdev3 = (noutdev > 2 && midioutdev[2]>=0 ? midioutdev[2]+1 : 0); midioutdev3 = (noutdev > 2 && midioutdev[2]>=0 ? midioutdev[2]+1 : 0);
midioutdev4 = (noutdev > 3 && midioutdev[3]>=0 ? midioutdev[3]+1 : 0); midioutdev4 = (noutdev > 3 && midioutdev[3]>=0 ? midioutdev[3]+1 : 0);
gui_start_array(); // input devices
gui_i(midiindev1);
gui_i(midiindev2);
gui_i(midiindev3);
gui_i(midiindev4);
gui_end_array();
gui_start_array(); // output devices
gui_i(midioutdev1);
gui_i(midioutdev2);
gui_i(midioutdev3);
gui_i(midioutdev4);
gui_end_array();
gui_start_array();
gui_s("flongform");
gui_i(flongform != 0);
gui_s("use_alsa");
#ifdef USEAPI_ALSA #ifdef USEAPI_ALSA
if (sys_midiapi == API_ALSA) if (sys_midiapi == API_ALSA)
sprintf(buf, {
"pdtk_alsa_midi_dialog %%s \ // sprintf(buf,
%d %d %d %d %d %d %d %d \ //"pdtk_alsa_midi_dialog %%s \
%d 1\n", //%d %d %d %d %d %d %d %d \
midiindev1, midiindev2, midiindev3, midiindev4, //%d 1\n",
midioutdev1, midioutdev2, midioutdev3, midioutdev4, // midiindev1, midiindev2, midiindev3, midiindev4,
(flongform != 0)); // midioutdev1, midioutdev2, midioutdev3, midioutdev4,
else // (flongform != 0));
gui_i(1);
}
else
#endif #endif
sprintf(buf, gui_i(0);
"pdtk_midi_dialog %%s \
%d %d %d %d %d %d %d %d \ gui_end_array();
%d\n", gui_end_vmess();
midiindev1, midiindev2, midiindev3, midiindev4, // sprintf(buf,
midioutdev1, midioutdev2, midioutdev3, midioutdev4, //"pdtk_midi_dialog %%s \
(flongform != 0)); //%d %d %d %d %d %d %d %d \
//%d\n",
gfxstub_deleteforkey(0); // midiindev1, midiindev2, midiindev3, midiindev4,
gfxstub_new(&glob_pdobject, (void *)glob_midi_properties, buf); // midioutdev1, midioutdev2, midioutdev3, midioutdev4,
// (flongform != 0));
// gfxstub_deleteforkey(0);
// gfxstub_new(&glob_pdobject, (void *)glob_midi_properties, buf);
} }
/* new values from dialog window */ /* new values from dialog window */
......
...@@ -112,6 +112,7 @@ EXTERN void sys_get_audio_devs(char *indevlist, int *nindevs, ...@@ -112,6 +112,7 @@ EXTERN void sys_get_audio_devs(char *indevlist, int *nindevs,
char *outdevlist, int *noutdevs, int *canmulti, int *cancallback, char *outdevlist, int *noutdevs, int *canmulti, int *cancallback,
int maxndev, int devdescsize); int maxndev, int devdescsize);
EXTERN void sys_get_audio_apis(char *buf); EXTERN void sys_get_audio_apis(char *buf);
EXTERN void sys_get_audio_apis2(t_binbuf *buf);
/* s_midi.c */ /* s_midi.c */
#define MAXMIDIINDEV 16 /* max. number of input ports */ #define MAXMIDIINDEV 16 /* max. number of input ports */
...@@ -126,6 +127,7 @@ void sys_open_midi(int nmidiin, int *midiinvec, ...@@ -126,6 +127,7 @@ void sys_open_midi(int nmidiin, int *midiinvec,
int nmidiout, int *midioutvec, int enable); int nmidiout, int *midioutvec, int enable);
EXTERN void sys_get_midi_apis(char *buf); EXTERN void sys_get_midi_apis(char *buf);
EXTERN void sys_get_midi_apis2(t_binbuf *buf);
EXTERN void sys_get_midi_devs(char *indevlist, int *nindevs, EXTERN void sys_get_midi_devs(char *indevlist, int *nindevs,
char *outdevlist, int *noutdevs, char *outdevlist, int *noutdevs,
int maxndev, int devdescsize); int maxndev, int devdescsize);
...@@ -133,6 +135,7 @@ void sys_get_midi_params(int *pnmidiindev, int *pmidiindev, ...@@ -133,6 +135,7 @@ void sys_get_midi_params(int *pnmidiindev, int *pmidiindev,
int *pnmidioutdev, int *pmidioutdev); int *pnmidioutdev, int *pmidioutdev);
void sys_get_midi_apis(char *buf); void sys_get_midi_apis(char *buf);
void sys_get_midi_apis2(t_binbuf *buf);
void sys_reopen_midi( void); void sys_reopen_midi( void);
void sys_close_midi( void); void sys_close_midi( void);
...@@ -302,6 +305,7 @@ void sys_listmididevs(void); ...@@ -302,6 +305,7 @@ void sys_listmididevs(void);
void sys_set_midi_api(int whichapi); void sys_set_midi_api(int whichapi);
void sys_set_audio_api(int whichapi); void sys_set_audio_api(int whichapi);
void sys_get_audio_apis(char *buf); void sys_get_audio_apis(char *buf);
void sys_get_audio_apis2(t_binbuf *buf);
extern int sys_audioapi; extern int sys_audioapi;
void sys_set_audio_state(int onoff); void sys_set_audio_state(int onoff);
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment