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);
}
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);
}
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
// It provides us with our window id from the C side. Once we have it
// we can create the menu and register event callbacks
......
......@@ -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...");
// # tb: user defined typefaces
// our args:
......@@ -3282,6 +3283,7 @@ function gui_audio_properties(gfxstub, sys_indevs, sys_outdevs,
pd_indevs, pd_inchans, pd_outdevs, pd_outchans, audio_attrs) {
var attrs = audio_attrs.concat([
"audio_apis", pd_apilist,
"sys_indevs", sys_indevs,
"sys_outdevs", sys_outdevs,
"pd_indevs", pd_indevs,
......@@ -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
object with name: value pairs
getting the sense that glist_isselected should _always_ have
glist_getcanvas(x) as its first parameter
get rid of the old tcl specific sys_get_audio_apis
Crashers
--------
......
......@@ -1029,6 +1029,38 @@ void sys_get_audio_apis(char *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
void alsa_putzeros(int n);
void alsa_getzeros(int n);
......
......@@ -821,13 +821,15 @@ void gui_start_vmess(const char *sel, char *fmt, ...)
}
static int gui_array_head;
static int gui_array_tail;
void gui_start_array(void)
{
if (gui_array_head)
if (gui_array_head && !gui_array_tail)
sys_gui("[");
else
sys_gui(",[");
gui_array_head = 1;
gui_array_tail = 0;
}
void gui_f(t_float f)
......@@ -839,6 +841,7 @@ void gui_f(t_float f)
}
else
sys_vgui(",%g", f);
gui_array_tail = 0;
}
void gui_i(int i)
......@@ -850,6 +853,7 @@ void gui_i(int i)
}
else
sys_vgui(",%d", i);
gui_array_tail = 0;
}
void gui_s(const char *s)
......@@ -861,11 +865,13 @@ void gui_s(const char *s)
}
else
sys_vgui(",\"%s\"", escape_double_quotes(s));
gui_array_tail = 0;
}
void gui_end_array(void)
{
sys_gui("]");
gui_array_tail = 1;
}
void gui_end_vmess(void)
......@@ -1270,9 +1276,9 @@ int sys_startgui(const char *guidir)
/* SUPERHACK - let's just load node-webkit and see what happens */
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/test/ %d localhost %s\n",
"/home/bud/pd-nw/pd/nw/ %d localhost %s\n",
portno,
(sys_k12_mode ? "pd-l2ork-k12" : "pd-l2ork"));
......@@ -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_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,
buf,
buf2,
sys_font,
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);
......
......@@ -521,6 +521,23 @@ void sys_get_midi_apis(char *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,
int *pnmidioutdev, int *pmidioutdev)
{
......@@ -678,15 +695,30 @@ void glob_midi_properties(t_pd *dummy, t_floatarg flongform)
midi_getdevs(indevlist, &nindevs, outdevlist, &noutdevs,
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++)
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++)
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);
......@@ -702,27 +734,53 @@ void glob_midi_properties(t_pd *dummy, t_floatarg flongform)
midioutdev3 = (noutdev > 2 && midioutdev[2]>=0 ? midioutdev[2]+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
if (sys_midiapi == API_ALSA)
sprintf(buf,
"pdtk_alsa_midi_dialog %%s \
%d %d %d %d %d %d %d %d \
%d 1\n",
midiindev1, midiindev2, midiindev3, midiindev4,
midioutdev1, midioutdev2, midioutdev3, midioutdev4,
(flongform != 0));
else
if (sys_midiapi == API_ALSA)
{
// sprintf(buf,
//"pdtk_alsa_midi_dialog %%s \
//%d %d %d %d %d %d %d %d \
//%d 1\n",
// midiindev1, midiindev2, midiindev3, midiindev4,
// midioutdev1, midioutdev2, midioutdev3, midioutdev4,
// (flongform != 0));
gui_i(1);
}
else
#endif
sprintf(buf,
"pdtk_midi_dialog %%s \
%d %d %d %d %d %d %d %d \
%d\n",
midiindev1, midiindev2, midiindev3, midiindev4,
midioutdev1, midioutdev2, midioutdev3, midioutdev4,
(flongform != 0));
gfxstub_deleteforkey(0);
gfxstub_new(&glob_pdobject, (void *)glob_midi_properties, buf);
gui_i(0);
gui_end_array();
gui_end_vmess();
// sprintf(buf,
//"pdtk_midi_dialog %%s \
//%d %d %d %d %d %d %d %d \
//%d\n",
// midiindev1, midiindev2, midiindev3, midiindev4,
// midioutdev1, midioutdev2, midioutdev3, midioutdev4,
// (flongform != 0));
// gfxstub_deleteforkey(0);
// gfxstub_new(&glob_pdobject, (void *)glob_midi_properties, buf);
}
/* new values from dialog window */
......
......@@ -112,6 +112,7 @@ EXTERN void sys_get_audio_devs(char *indevlist, int *nindevs,
char *outdevlist, int *noutdevs, int *canmulti, int *cancallback,
int maxndev, int devdescsize);
EXTERN void sys_get_audio_apis(char *buf);
EXTERN void sys_get_audio_apis2(t_binbuf *buf);
/* s_midi.c */
#define MAXMIDIINDEV 16 /* max. number of input ports */
......@@ -126,6 +127,7 @@ void sys_open_midi(int nmidiin, int *midiinvec,
int nmidiout, int *midioutvec, int enable);
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,
char *outdevlist, int *noutdevs,
int maxndev, int devdescsize);
......@@ -133,6 +135,7 @@ void sys_get_midi_params(int *pnmidiindev, int *pmidiindev,
int *pnmidioutdev, int *pmidioutdev);
void sys_get_midi_apis(char *buf);
void sys_get_midi_apis2(t_binbuf *buf);
void sys_reopen_midi( void);
void sys_close_midi( void);
......@@ -302,6 +305,7 @@ void sys_listmididevs(void);
void sys_set_midi_api(int whichapi);
void sys_set_audio_api(int whichapi);
void sys_get_audio_apis(char *buf);
void sys_get_audio_apis2(t_binbuf *buf);
extern int sys_audioapi;
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