diff --git a/doc/5.reference/abs~-help.pd b/doc/5.reference/abs~-help.pd new file mode 100644 index 0000000000000000000000000000000000000000..95032e3914c1c182dc2ebed337becf40eafae902 --- /dev/null +++ b/doc/5.reference/abs~-help.pd @@ -0,0 +1,20 @@ +#N canvas 286 197 499 284 10; +#X obj 19 108 sig~; +#X obj 71 133 loadbang; +#X obj 71 157 metro 100; +#X obj 71 181 snapshot~; +#X floatatom 19 87 5 0 0 0 - - -; +#X floatatom 71 206 7 0 0 0 - - -; +#X text 316 257 updated for Pd version 0.42.; +#X obj 20 132 abs~; +#X obj 21 14 abs~; +#X text 60 14 - absolute value; +#X text 82 33 Passes nonnegative values unchanged \, but replaces negative +ones with their (positive) inverses.; +#X text 81 66 (turn DSP on to test):; +#X connect 0 0 7 0; +#X connect 1 0 2 0; +#X connect 2 0 3 0; +#X connect 3 0 5 0; +#X connect 4 0 0 0; +#X connect 7 0 3 0; diff --git a/doc/7.stuff/tools/testtone.pd b/doc/7.stuff/tools/testtone.pd index 7a3e9f2b22443573ce424fc2eb3ceeaf35d9fe25..2daae87bb7faeca6d5c2e953e84d8541e521f3af 100644 --- a/doc/7.stuff/tools/testtone.pd +++ b/doc/7.stuff/tools/testtone.pd @@ -1,4 +1,4 @@ -#N canvas 250 93 494 364 12; +#N canvas 130 55 494 364 12; #X floatatom 84 288 3 0 0 0 - - -; #X obj 34 237 notein; #X obj 34 263 stripnote; @@ -55,7 +55,7 @@ #X obj 177 126 tgl 20 0 tone-ch1 tone-ch1 1 5 -8 0 12 -262144 -1 -1 1 1; #X obj 202 126 tgl 20 0 tone-ch2 tone-ch2 2 5 -8 0 12 -262144 -1 -1 -1 1; +0 1; #X obj 219 258 tgl 20 0 empty empty empty 20 8 0 8 -262144 -1 -1 0 1; #X obj 184 192 tgl 15 0 tone-monitor set-tone-monitor monitor-inputs @@ -99,8 +99,8 @@ #X connect 14 0 11 1; #X connect 15 0 11 1; #X restore 388 266 pd more; -#X obj 343 193 tgl 15 0 tone-hipass set-tone-hipass input-hipass 23 -8 0 12 -262144 -1 -1 0 1; +#X obj 343 193 tgl 15 0 tone-hipass tone-hipass-set input-hipass 23 +8 0 12 -262144 -1 -1 1 1; #X obj 243 126 tgl 20 0 tone-ch3 tone-ch3 3 5 -8 0 12 -262144 -1 -1 1 1; #X obj 268 126 tgl 20 0 tone-ch4 tone-ch4 4 5 -8 0 12 -262144 -1 -1 @@ -109,9 +109,9 @@ 1 1; #X obj 334 126 tgl 20 0 tone-ch6 tone-ch6 6 5 -8 0 12 -262144 -1 -1 1 1; -#X obj 427 117 bng 15 250 50 0 tone-all empty ALL 20 8 0 12 -262144 +#X obj 428 117 bng 15 250 50 0 tone-all empty ALL 20 8 0 12 -262144 -1 -1; -#X obj 427 138 bng 15 250 50 0 tone-none empty NONE 20 8 0 12 -262144 +#X obj 428 138 bng 15 250 50 0 tone-none empty NONE 20 8 0 12 -262144 -1 -1; #X floatatom 244 93 3 0 0 0 - tone-vu3 -; #X floatatom 272 93 3 0 0 0 - tone-vu4 -; @@ -121,14 +121,14 @@ #X text 101 88 noise; #X text 100 105 tone; #X obj 84 90 vradio 15 1 0 2 tone-type tone-type-set empty 0 -6 0 8 --262144 -1 -1 1; +-262144 -1 -1 0; #X obj 22 91 vradio 15 1 0 3 tone-radio tone-radio-set empty 0 -6 0 8 -262144 -1 -1 2; #X floatatom 376 93 3 0 0 0 - tone-vu7 -; #X floatatom 404 93 3 0 0 0 - tone-vu8 -; -#X obj 374 126 tgl 20 0 tone-ch7 tone-ch7 7 5 -8 0 12 -262144 -1 -1 +#X obj 375 126 tgl 20 0 tone-ch7 tone-ch7 7 5 -8 0 12 -262144 -1 -1 1 1; -#X obj 399 126 tgl 20 0 tone-ch8 tone-ch8 8 5 -8 0 12 -262144 -1 -1 +#X obj 400 126 tgl 20 0 tone-ch8 tone-ch8 8 5 -8 0 12 -262144 -1 -1 1 1; #N canvas 233 346 321 422 audio 0; #X obj 25 303 s~ tone-mon; @@ -138,7 +138,7 @@ #X obj 28 139 * 5; #X obj 28 164 s tone-hip; #X obj 28 114 r tone-hipass; -#N canvas 476 63 548 519 glue+loadbang 0; +#N canvas 424 104 548 519 glue+loadbang 0; #X obj 8 20 loadbang; #X obj 175 18 r tone-all; #X obj 285 16 r tone-none; diff --git a/src/notes.txt b/src/notes.txt index b92ab1c6fa8cfb484363e39528046fc6c2b4ace8..6c98ca0aede03770531f74d0642de4505ae8bc64 100644 --- a/src/notes.txt +++ b/src/notes.txt @@ -1,8 +1,9 @@ ---------------- dolist -------------------- -test: +doc: exp~, abs~ fixes +pd~ -ninsig 0 bug fixed compile on various versions of linux windows: diff --git a/src/s_midi_oss.c b/src/s_midi_oss.c index e1f7c8c63378013e44af685df71761597e6435d6..5c11bae328d078b36ecf82bc9192be227f791b3d 100644 --- a/src/s_midi_oss.c +++ b/src/s_midi_oss.c @@ -17,6 +17,8 @@ #include "m_pd.h" #include "s_stuff.h" +#define NSEARCH 10 +static int oss_nmidiindevs, oss_nmidioutdevs, oss_initted, oss_onebased; static int oss_nmidiin; static int oss_midiinfd[MAXMIDIINDEV]; static int oss_nmidiout; @@ -41,7 +43,7 @@ void sys_do_open_midi(int nmidiin, int *midiinvec, { int fd = -1, j, outdevindex = -1; char namebuf[80]; - int devno = midiinvec[i]; + int devno = midiinvec[i] + oss_onebased; for (j = 0; j < nmidiout; j++) if (midioutvec[j] == midiinvec[i]) @@ -115,7 +117,7 @@ void sys_do_open_midi(int nmidiin, int *midiinvec, { int fd = oss_midioutfd[i]; char namebuf[80]; - int devno = midioutvec[i]; + int devno = midioutvec[i] + oss_onebased; if (devno == 0 && fd < 0) { sys_setalarm(1000000); @@ -266,23 +268,26 @@ void sys_close_midi() oss_nmidiin = oss_nmidiout = 0; } -#define NSEARCH 10 -static int oss_nmidiindevs, oss_nmidioutdevs, oss_initted; - void midi_oss_init(void) { - int i; + int i, fd, devno; + struct stat statbuf; + char namebuf[80]; + if (oss_initted) return; oss_initted = 1; + /* at some point, Fedora started counting MIDI devices from one - + catch that here: */ + oss_onebased = (stat("/dev/midi1", &statbuf) >= 0 && + stat("/dev/midi0", &statbuf) < 0); + for (i = 0; i < NSEARCH; i++) { - int fd; - char namebuf[80]; - oss_nmidiindevs = i; + devno = i + oss_onebased; /* try to open the device for reading */ - if (i == 0) + if (devno == 0) { fd = open("/dev/midi", O_RDONLY | O_NDELAY); if (fd >= 0) @@ -291,14 +296,14 @@ void midi_oss_init(void) continue; } } - sprintf(namebuf, "/dev/midi%2.2d", i); + sprintf(namebuf, "/dev/midi%2.2d", devno); fd = open(namebuf, O_RDONLY | O_NDELAY); if (fd >= 0) { close(fd); continue; } - sprintf(namebuf, "/dev/midi%d", i); + sprintf(namebuf, "/dev/midi%d", devno); fd = open(namebuf, O_RDONLY | O_NDELAY); if (fd >= 0) { @@ -309,12 +314,10 @@ void midi_oss_init(void) } for (i = 0; i < NSEARCH; i++) { - int fd; - char namebuf[80]; - oss_nmidioutdevs = i; + devno = i + oss_onebased; /* try to open the device for writing */ - if (i == 0) + if (devno == 0) { fd = open("/dev/midi", O_WRONLY | O_NDELAY); if (fd >= 0) @@ -323,14 +326,14 @@ void midi_oss_init(void) continue; } } - sprintf(namebuf, "/dev/midi%2.2d", i); + sprintf(namebuf, "/dev/midi%2.2d", devno); fd = open(namebuf, O_WRONLY | O_NDELAY); if (fd >= 0) { close(fd); continue; } - sprintf(namebuf, "/dev/midi%d", i); + sprintf(namebuf, "/dev/midi%d", devno); fd = open(namebuf, O_WRONLY | O_NDELAY); if (fd >= 0) {