From 019c0e56579fe7f94982434d8efcd7b00d8df0aa Mon Sep 17 00:00:00 2001 From: Miller Puckette Date: Fri, 28 Dec 2007 03:43:06 +0000 Subject: ... and again trying to check in 0.41-0 test 10 svn path=/trunk/; revision=9108 --- pd/doc/1.manual/x2.htm | 2 +- pd/doc/3.audio.examples/I07.phase.vocoder.pd | 56 +- pd/doc/4.data.structures/14.sinedecomposer.pd | 250 ------ pd/doc/4.data.structures/15.partialtracer.pd | 839 --------------------- pd/doc/5.reference/help-intro.pd | 3 +- pd/doc/5.reference/my_canvas-help.pd | 75 +- pd/extra/expr~/makefile | 13 +- pd/extra/makefile | 14 +- pd/extra/sigmund~/sigmund~-help.pd | 14 +- pd/portaudio/include/pa_asio.h | 2 +- pd/portaudio/include/pa_linux_alsa.h | 2 +- pd/portaudio/include/pa_win_wmme.h | 2 +- pd/portaudio/include/portaudio.h | 2 +- pd/portaudio/src/common/pa_allocation.c | 2 +- pd/portaudio/src/common/pa_allocation.h | 2 +- pd/portaudio/src/common/pa_converters.c | 2 +- pd/portaudio/src/common/pa_converters.h | 2 +- pd/portaudio/src/common/pa_cpuload.c | 2 +- pd/portaudio/src/common/pa_cpuload.h | 2 +- pd/portaudio/src/common/pa_debugprint.c | 2 +- pd/portaudio/src/common/pa_dither.c | 2 +- pd/portaudio/src/common/pa_dither.h | 2 +- pd/portaudio/src/common/pa_endianness.h | 2 +- pd/portaudio/src/common/pa_front.c | 2 +- pd/portaudio/src/common/pa_hostapi.h | 2 +- pd/portaudio/src/common/pa_process.c | 2 +- pd/portaudio/src/common/pa_process.h | 2 +- pd/portaudio/src/common/pa_ringbuffer.c | 2 +- pd/portaudio/src/common/pa_ringbuffer.h | 2 +- pd/portaudio/src/common/pa_skeleton.c | 2 +- pd/portaudio/src/common/pa_stream.c | 2 +- pd/portaudio/src/common/pa_stream.h | 2 +- pd/portaudio/src/common/pa_trace.c | 2 +- pd/portaudio/src/common/pa_trace.h | 2 +- pd/portaudio/src/common/pa_util.h | 2 +- pd/portaudio/src/hostapi/alsa/pa_linux_alsa.c | 2 +- pd/portaudio/src/hostapi/asio/pa_asio.cpp | 2 +- .../src/hostapi/coreaudio/pa_mac_core_old.c | 2 +- pd/portaudio/src/hostapi/jack/pa_jack.c | 2 +- pd/portaudio/src/hostapi/oss/pa_unix_oss.c | 2 +- pd/portaudio/src/hostapi/wmme/pa_win_wmme.c | 2 +- pd/portaudio/src/os/mac_osx/pa_mac_hostapis.c | 2 +- pd/portaudio/src/os/unix/pa_unix_hostapis.c | 2 +- pd/portaudio/src/os/unix/pa_unix_util.c | 2 +- pd/portaudio/src/os/unix/pa_unix_util.h | 2 +- pd/portaudio/src/os/win/pa_win_hostapis.c | 2 +- pd/portaudio/src/os/win/pa_win_util.c | 2 +- pd/src/CHANGELOG.txt | 5 +- pd/src/configure.in | 286 +++---- pd/src/d_arithmetic.c | 224 +++--- pd/src/d_array.c | 56 +- pd/src/d_ctl.c | 118 +-- pd/src/d_dac.c | 26 +- pd/src/d_delay.c | 45 +- pd/src/d_fft.c | 68 +- pd/src/d_fft_fftsg.c | 18 +- pd/src/d_fft_mayer.c | 2 +- pd/src/d_filter.c | 286 +++---- pd/src/d_global.c | 46 +- pd/src/d_math.c | 74 +- pd/src/d_misc.c | 21 +- pd/src/d_osc.c | 2 +- pd/src/d_resample.c | 38 +- pd/src/d_soundfile.c | 238 +++++- pd/src/d_ugen.c | 24 +- pd/src/g_all_guis.c | 9 +- pd/src/g_all_guis.h | 10 +- pd/src/g_array.c | 90 +-- pd/src/g_bang.c | 13 +- pd/src/g_canvas.c | 40 +- pd/src/g_canvas.h | 60 +- pd/src/g_editor.c | 33 +- pd/src/g_graph.c | 59 +- pd/src/g_hdial.c | 26 +- pd/src/g_hslider.c | 15 +- pd/src/g_io.c | 24 +- pd/src/g_mycanvas.c | 14 +- pd/src/g_numbox.c | 24 +- pd/src/g_readwrite.c | 10 +- pd/src/g_rtext.c | 12 +- pd/src/g_scalar.c | 18 +- pd/src/g_template.c | 144 ++-- pd/src/g_text.c | 14 +- pd/src/g_toggle.c | 23 +- pd/src/g_traversal.c | 4 +- pd/src/g_vdial.c | 26 +- pd/src/g_vslider.c | 15 +- pd/src/g_vumeter.c | 57 +- pd/src/m_binbuf.c | 92 ++- pd/src/m_class.c | 2 +- pd/src/m_glob.c | 8 + pd/src/m_obj.c | 6 +- pd/src/m_pd.h | 53 +- pd/src/m_sched.c | 20 +- pd/src/makefile.in | 16 +- pd/src/makefile.nt | 24 +- pd/src/notes.txt | 18 +- pd/src/s_audio.c | 71 +- pd/src/s_audio_jack.c | 50 +- pd/src/s_audio_oss.c | 37 +- pd/src/s_audio_pa.c | 21 +- pd/src/s_entry.c | 1 + pd/src/s_inter.c | 12 +- pd/src/s_loader.c | 2 +- pd/src/s_main.c | 38 +- pd/src/s_path.c | 30 +- pd/src/s_print.c | 8 +- pd/src/s_stuff.h | 9 +- pd/src/u_main.tk | 670 +++++++++------- pd/src/x_acoustics.c | 16 +- pd/src/x_arithmetic.c | 20 +- pd/src/x_connective.c | 62 +- pd/src/x_list.c | 4 +- pd/src/x_midi.c | 30 +- pd/src/x_misc.c | 6 +- pd/src/x_qlist.c | 21 +- pd/src/x_time.c | 4 +- 117 files changed, 2268 insertions(+), 2742 deletions(-) delete mode 100644 pd/doc/4.data.structures/14.sinedecomposer.pd delete mode 100644 pd/doc/4.data.structures/15.partialtracer.pd (limited to 'pd') diff --git a/pd/doc/1.manual/x2.htm b/pd/doc/1.manual/x2.htm index dd33b149..9879078e 100644 --- a/pd/doc/1.manual/x2.htm +++ b/pd/doc/1.manual/x2.htm @@ -25,7 +25,7 @@ are described in the next chapter. To learn digital audio processing basics such as how to generate time-varying sounds that don't click or fold over, try the on-line book, Theory and Techniques of Electronic Music . + Theory and Techniques of Electronic Music .

2.1 overview

diff --git a/pd/doc/3.audio.examples/I07.phase.vocoder.pd b/pd/doc/3.audio.examples/I07.phase.vocoder.pd index d0d913b3..5baceef6 100644 --- a/pd/doc/3.audio.examples/I07.phase.vocoder.pd +++ b/pd/doc/3.audio.examples/I07.phase.vocoder.pd @@ -1,8 +1,8 @@ -#N canvas 425 33 744 599 12; +#N canvas 164 25 744 599 12; #X floatatom 494 315 5 0 0 0 - transpo-set -; #X floatatom 167 383 3 0 0 0 - speed-set -; #X floatatom 55 385 7 0 0 0 - location-set -; -#N canvas 90 42 821 693 fft-analysis 0; +#N canvas 90 42 821 693 fft-analysis 1; #X obj 51 477 *~; #X obj 18 477 *~; #X obj 18 499 -~; @@ -37,9 +37,9 @@ bang; #X msg 426 619 set \$1 4; #X obj 97 425 q8_rsqrt~; -#N canvas 139 105 1006 799 read-windows 0; +#N canvas 139 105 1006 799 read-windows 1; #X obj 18 693 *~; -#X obj 340 448 r window-size; +#X obj 364 448 r window-size; #X obj 156 300 f; #X obj 102 91 r window-size; #X obj 102 139 /; @@ -60,14 +60,14 @@ bang; #X text 188 394 reading location (samples); #X obj 51 597 / 4; #X obj 288 245 * 0.01; -#X floatatom 340 498 7 0 0 0 - - -; -#X obj 340 474 *; -#X obj 499 365 r transpo; -#X obj 499 387 * 0.01; -#X obj 501 408 + 69; -#X obj 502 429 mtof; -#X obj 502 451 / 440; -#X obj 375 474 t b f; +#X floatatom 364 498 7 0 0 0 - - -; +#X obj 364 474 *; +#X obj 502 347 r transpo; +#X obj 502 369 * 0.01; +#X obj 504 390 + 69; +#X obj 505 411 mtof; +#X obj 505 433 / 440; +#X obj 399 474 t b f; #X obj 19 719 outlet~; #X obj 195 720 outlet~; #X obj 218 664 tabreceive~ \$0-hann; @@ -77,7 +77,7 @@ bang; #X obj 768 508 r speed; #X msg 768 532 set \$1; #X obj 768 557 s speed-set; -#X text 411 498 stretched window size (samples); +#X text 432 498 stretched window size (samples); #X obj 877 507 r transpo; #X msg 877 533 set \$1; #X obj 877 558 s transpo-set; @@ -123,8 +123,8 @@ by "location". If "speed" is nonzero \, "location" automatically precesses. #X obj 845 684 r auto; #X obj 730 685 r no-detune; #X msg 730 707 \; detune 0; -#X text 326 275 loop to precess the location according; -#X text 325 291 to the "speed" parameter.; +#X text 321 280 loop to precess the location according; +#X text 320 296 to the "speed" parameter.; #X text 611 31 if location changes \, update number box; #X text 610 50 in main window via "location-set" \, but; #X text 613 69 taking care to limit frequency of updates.; @@ -136,6 +136,14 @@ by "location". If "speed" is nonzero \, "location" automatically precesses. #X text 496 527 "rewind" control takes us; #X text 499 545 to a location depending on; #X text 499 564 stretched window size.; +#X obj 593 457 t b f; +#X obj 617 395 samplerate~; +#X obj 593 348 r \$0-insamprate; +#X obj 593 418 /; +#X obj 505 455 * 1; +#X text 494 312 desired transposition and sample; +#X text 494 329 rate correction for soundfile; +#X obj 593 370 t f b; #X connect 0 0 30 0; #X connect 1 0 23 0; #X connect 2 0 11 0; @@ -171,7 +179,7 @@ by "location". If "speed" is nonzero \, "location" automatically precesses. #X connect 25 0 26 0; #X connect 26 0 27 0; #X connect 27 0 28 0; -#X connect 28 0 29 0; +#X connect 28 0 99 0; #X connect 29 0 23 0; #X connect 29 1 23 1; #X connect 32 0 5 1; @@ -216,6 +224,14 @@ by "location". If "speed" is nonzero \, "location" automatically precesses. #X connect 77 0 75 0; #X connect 79 0 78 0; #X connect 80 0 81 0; +#X connect 95 0 99 0; +#X connect 95 1 99 1; +#X connect 96 0 98 1; +#X connect 97 0 102 0; +#X connect 98 0 95 0; +#X connect 99 0 29 0; +#X connect 102 0 98 0; +#X connect 102 1 96 0; #X restore 109 133 pd read-windows; #X obj 137 543 tabsend~ prev-imag; #X obj 136 567 tabsend~ prev-real; @@ -363,8 +379,8 @@ shifts the signal to the left or right depending on its argument.) #X obj 56 517 output~; #N canvas 0 110 565 454 hann-window 0; #N canvas 0 0 450 300 (subpatch) 0; -#X array \$0-hann 2048 float 0; -#X coords 0 1 2047 0 300 100 1; +#X array \$0-hann 1024 float 0; +#X coords 0 1 1023 0 300 100 1; #X restore 82 311 graph; #X obj 378 165 osc~; #X obj 378 190 *~ -0.5; @@ -413,8 +429,8 @@ and window-msec (analysis window size in seconds and msec).; #X restore 440 528 pd hann-window; #N canvas 388 86 694 447 insample 0; #N canvas 0 0 450 300 (subpatch) 0; -#X array \$0-sample 62079 float 0; -#X coords 0 1 62078 -1 400 150 1; +#X array \$0-sample 155948 float 0; +#X coords 0 1 155947 -1 400 150 1; #X restore 281 135 graph; #X obj 28 133 r read-sample; #X obj 28 184 unpack s f; diff --git a/pd/doc/4.data.structures/14.sinedecomposer.pd b/pd/doc/4.data.structures/14.sinedecomposer.pd deleted file mode 100644 index 1d240ce7..00000000 --- a/pd/doc/4.data.structures/14.sinedecomposer.pd +++ /dev/null @@ -1,250 +0,0 @@ -#N struct peak-template float x float y float amp float ampreal float -ampimag; -#N canvas 303 216 854 536 12; -#X msg 501 258 bang; -#X obj 30 360 pack 0 100; -#X obj 30 384 line~; -#X obj 30 336 dbtorms; -#N canvas 95 102 724 400 fft 0; -#X obj 64 67 inlet~; -#X obj 134 107 print~; -#X msg 137 71 bang; -#X obj 64 104 rfft~; -#N canvas 0 0 450 300 graph3 0; -#X array array3 4096 float 0; -#X coords 0 100 4096 -100 400 150 1; -#X restore 254 14 graph; -#N canvas 0 0 450 300 graph4 0; -#X array array4 4096 float 0; -#X coords 0 100 4096 -100 400 150 1; -#X restore 256 165 graph; -#X obj 9 185 tabsend~ array3; -#X obj 50 158 tabsend~ array4; -#X msg 37 246 \; array3 resize 4096 \; array4 resize 4096; -#X obj 62 38 block~ 4096 1; -#X connect 0 0 1 0; -#X connect 0 0 3 0; -#X connect 2 0 1 0; -#X connect 3 0 6 0; -#X connect 3 1 7 0; -#X restore 135 412 pd fft; -#X obj 30 408 *~; -#X obj 476 231 adc~; -#N canvas 204 36 521 368 analysis 0; -#X obj 206 37 inlet; -#X msg 207 68 bang; -#X obj 275 52 r snapshot; -#X msg 220 169 4096 array3 array4 50; -#X obj 127 252 print; -#X obj 206 103 t b b b; -#X obj 122 140 s done-analysis; -#X obj 248 133 s start-analysis; -#X obj 220 219 s found-peak; -#X obj 154 194 r loud; -#X obj 128 226 spigot; -#X obj 220 193 pique; -#X connect 0 0 1 0; -#X connect 1 0 5 0; -#X connect 2 0 1 0; -#X connect 3 0 11 0; -#X connect 5 0 6 0; -#X connect 5 1 3 0; -#X connect 5 2 7 0; -#X connect 9 0 10 1; -#X connect 10 0 4 0; -#X connect 11 0 8 0; -#X connect 11 0 10 0; -#X restore 613 295 pd analysis; -#X obj 30 313 r loop-amp; -#X msg 613 271 snapshot; -#X text 23 167 click here first; -#X text 613 247 analysis; -#N canvas 36 255 884 389 peak-saver 0; -#X floatatom 710 310 0 0 0 0 - - -; -#X floatatom 633 309 0 0 0 0 - - -; -#X floatatom 560 305 0 0 0 0 - - -; -#X floatatom 484 303 0 0 0 0 - - -; -#X obj 406 251 pointer; -#X obj 354 150 pointer; -#X msg 374 60 bang; -#X obj 142 243 rmstodb; -#X obj 10 244 * 0.1; -#X obj 141 268 * -3; -#X floatatom 416 300 0 0 0 0 - - -; -#X obj 353 36 r start-analysis; -#X obj 354 89 t b b; -#X msg 29 89 50 60 70; -#X obj 28 120 append peak-template x y amp; -#X msg 426 225 next; -#X obj 402 276 get peak-template x y amp ampreal ampimag; -#X obj 9 293 append peak-template x y amp ampreal ampimag; -#X obj 116 167 r found-peak; -#X obj 117 196 unpack 0 0 0 0 0; -#X msg 76 244 330; -#X msg 400 87 \; pd-peak-list clear; -#X msg 354 125 traverse pd-peak-list \, bang; -#X msg 408 201 traverse pd-peak-list \, next; -#X connect 4 0 16 0; -#X connect 5 0 14 3; -#X connect 5 0 17 5; -#X connect 6 0 12 0; -#X connect 7 0 9 0; -#X connect 8 0 17 0; -#X connect 9 0 17 2; -#X connect 11 0 12 0; -#X connect 12 0 22 0; -#X connect 12 1 21 0; -#X connect 13 0 14 0; -#X connect 15 0 4 0; -#X connect 16 0 10 0; -#X connect 16 1 3 0; -#X connect 16 2 2 0; -#X connect 16 3 1 0; -#X connect 16 4 0 0; -#X connect 18 0 19 0; -#X connect 19 1 8 0; -#X connect 19 2 20 0; -#X connect 19 2 7 0; -#X connect 19 3 17 3; -#X connect 19 4 17 4; -#X connect 20 0 17 1; -#X connect 22 0 5 0; -#X connect 23 0 4 0; -#X restore 339 378 pd peak-saver; -#N canvas 231 169 656 237 peak-template 0; -#X obj 45 90 filledpolygon 3 3 3 0 0 0 amp 0 0; -#X obj 37 16 struct peak-template float x float y float amp float ampreal -float ampimag; -#X restore 339 402 pd peak-template; -#N canvas 0 0 600 382 peak-list 1; -#X scalar peak-template 6.52298 330 -195.561 0.0125191 -0.0131689 \; -; -#X scalar peak-template 13.0656 330 -262.841 0.222392 0.0909196 \; -; -#X scalar peak-template 26.2816 330 -188.229 0.0133818 0.00299871 \; -; -#X scalar peak-template 34.1579 330 -182.784 -0.0111106 0.000616574 -\;; -#X scalar peak-template 39.2398 330 -192.587 0.00649353 -0.0148522 -\;; -#X scalar peak-template 54.2567 330 -169.462 -0.00637704 0.00196744 -\;; -#X scalar peak-template 64.6374 330 -153.343 -0.00231745 -0.00274854 -\;; -#X scalar peak-template 70.731 330 -228.984 -0.0391646 -0.0525299 \; -; -#X scalar peak-template 83.4018 330 -157.354 0.00213705 0.00360794 -\;; -#X scalar peak-template 89.0428 330 -164.547 0.00509053 0.00215158 -\;; -#X scalar peak-template 96.8527 330 -127.029 0.00018868 -0.00129597 -\;; -#X scalar peak-template 108.145 330 -206.524 -0.0244265 0.0130057 \; -; -#X scalar peak-template 119.672 330 -139.871 0.000310867 0.00212115 -\;; -#X scalar peak-template 129.195 330 -154.988 0.00101519 -0.00369247 -\;; -#X scalar peak-template 148.144 330 -131.59 -0.000488336 0.00148172 -\;; -#X scalar peak-template 156.394 330 -157.846 0.00107442 -0.00413614 -\;; -#X scalar peak-template 168.637 330 -126.924 0.0001938 -0.00128991 -\;; -#X scalar peak-template 189.884 330 -119.499 0.000252664 -0.000947853 -\;; -#X scalar peak-template 211.047 330 -130.949 0.000525129 0.0014288 -\;; -#X restore 339 426 pd peak-list; -#X msg 38 192 \; pd dsp 1; -#X obj 720 296 s loud; -#X text 539 189 live sample; -#X text 719 234 print out; -#X text 720 249 peak list; -#X text 168 7 SPECTRAL SNAPSHOTS.; -#X text 15 18 This patch reads a soundfile or records a live sound. -When you click on "snapshot" the peak-list window shows a list of the -sinusoidal peaks that were found at that instant in the sound. You -can also ask for the peak lists to be printed out.; -#N canvas 132 255 634 331 insample 0; -#N canvas 0 0 450 300 graph1 0; -#X array sample 155948 float 0; -#X coords 0 1 155947 -1 400 150 1; -#X restore 199 18 graph; -#X obj 19 70 r read-sample; -#X obj 19 95 unpack s f; -#X obj 53 121 s insamprate; -#X obj 19 171 soundfiler; -#X msg 19 147 read -resize \$1 sample; -#X obj 19 201 s insamplength; -#X msg 357 197 \; sample resize 220500 \; insamplength 220500; -#X connect 1 0 2 0; -#X connect 2 0 5 0; -#X connect 2 1 3 0; -#X connect 4 0 6 0; -#X connect 5 0 4 0; -#X restore 336 350 pd insample; -#N canvas 186 103 405 461 test-signal 0; -#X obj 135 296 tabread4~ sample; -#X obj 135 271 line~; -#X obj 95 146 f; -#X obj 254 46 r insamprate; -#X obj 135 415 outlet~; -#X obj 146 33 r insamplength; -#X msg 134 247 0 \, \$1 \$2; -#X obj 134 221 pack 0 0; -#X obj 209 190 /; -#X obj 299 99 * 0.001; -#X obj 135 388 hip~ 5; -#X obj 33 5 loadbang; -#X text 242 13 sample playback; -#X msg 33 25 1; -#X obj 33 69 metro 1000; -#X floatatom 33 48 0 0 0 0 - - -; -#X obj 255 75 t b b f; -#X obj 161 84 t b f; -#X connect 0 0 10 0; -#X connect 1 0 0 0; -#X connect 2 0 7 0; -#X connect 3 0 16 0; -#X connect 5 0 17 0; -#X connect 6 0 1 0; -#X connect 7 0 6 0; -#X connect 8 0 7 1; -#X connect 8 0 14 1; -#X connect 9 0 8 1; -#X connect 10 0 4 0; -#X connect 11 0 13 0; -#X connect 13 0 15 0; -#X connect 14 0 2 0; -#X connect 15 0 14 0; -#X connect 16 0 13 0; -#X connect 16 1 8 0; -#X connect 16 2 9 0; -#X connect 17 0 13 0; -#X connect 17 1 8 0; -#X connect 17 1 2 1; -#X restore 135 389 pd test-signal; -#X text 136 317 amplitude; -#X text 212 174 read a sample; -#X msg 136 193 \; read-sample ../sound/bell.aiff 44100; -#X text 12 97 The active ingredient is "pique" in the "analysis" subwindow -\, which is in the "extras" directory in the Pd release.; -#X msg 136 230 \; read-sample ../sound/voice.wav 32000; -#X obj 458 295 tabwrite~ sample; -#X obj 720 274 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 -1; -#X msg 136 268 \; read-sample ../sound/voice2.wav; -#X obj 29 435 output~; -#X connect 0 0 29 0; -#X connect 1 0 2 0; -#X connect 2 0 5 0; -#X connect 3 0 1 0; -#X connect 5 0 32 0; -#X connect 5 0 32 1; -#X connect 6 0 29 0; -#X connect 8 0 3 0; -#X connect 9 0 7 0; -#X connect 23 0 4 0; -#X connect 23 0 5 1; -#X connect 30 0 16 0; diff --git a/pd/doc/4.data.structures/15.partialtracer.pd b/pd/doc/4.data.structures/15.partialtracer.pd deleted file mode 100644 index 5fb1323f..00000000 --- a/pd/doc/4.data.structures/15.partialtracer.pd +++ /dev/null @@ -1,839 +0,0 @@ -#N struct peak-template float x float y float amp float ampreal float -ampimag float used; -#N struct trace-template float x float y float voiceno array bazoo -point-template; -#N struct point-template float y float amp; -#N canvas 163 180 926 633 12; -#X floatatom 777 72 0 0 0 0 - - -; -#N canvas 516 98 663 557 boo 0; -#X obj 103 108 outlet; -#X msg 101 80 set \$1; -#X obj 103 57 r osc-amp; -#X connect 1 0 0 0; -#X connect 2 0 1 0; -#X restore 777 52 pd; -#X obj 781 99 s osc-amp; -#X obj 121 513 pack 0 100; -#X obj 122 533 line~; -#X obj 121 493 dbtorms; -#X obj 122 573 *~; -#X floatatom 811 225 0 0 0 0 - - -; -#X msg 668 269 0; -#X floatatom 737 225 0 0 0 0 - - -; -#X floatatom 838 290 0 0 0 0 - - -; -#X floatatom 647 71 0 0 0 0 - - -; -#N canvas 516 98 663 555 boo 0; -#X obj 103 108 outlet; -#X msg 101 80 set \$1; -#X obj 103 57 r grain-amp; -#X connect 1 0 0 0; -#X connect 2 0 1 0; -#X restore 647 51 pd; -#N canvas 201 90 556 354 analysis 0; -#X obj 286 45 r snapshot; -#X obj 81 283 print; -#X obj 138 154 t b b b; -#X obj 26 189 s done-analysis; -#X obj 272 149 s start-analysis; -#X obj 209 261 s found-peak; -#X obj 139 263 r loud; -#X obj 82 262 spigot; -#X msg 179 101 1; -#X obj 40 99 r fft-done; -#X obj 40 129 spigot; -#X msg 143 101 0; -#X obj 289 84 del 0.01; -#X msg 287 66 bang; -#X text 238 103 Wait for the next FFT to come by before doing the peak -search.; -#X obj 443 176 r errthresh; -#X msg 446 219 errthresh \$1; -#X floatatom 443 199 0 0 0 0 - - -; -#X obj 276 173 r window-size; -#X obj 220 190 f; -#X msg 211 211 \$1 fft-real fft-imag 10; -#X obj 211 231 pique; -#X connect 0 0 13 0; -#X connect 2 0 3 0; -#X connect 2 1 19 0; -#X connect 2 2 4 0; -#X connect 2 2 11 0; -#X connect 6 0 7 1; -#X connect 7 0 1 0; -#X connect 8 0 10 1; -#X connect 9 0 10 0; -#X connect 10 0 2 0; -#X connect 11 0 10 1; -#X connect 12 0 8 0; -#X connect 13 0 12 0; -#X connect 15 0 17 0; -#X connect 16 0 21 0; -#X connect 17 0 16 0; -#X connect 18 0 19 1; -#X connect 19 0 20 0; -#X connect 20 0 21 0; -#X connect 21 0 5 0; -#X connect 21 0 7 0; -#X restore 351 411 pd analysis; -#N canvas 168 244 589 236 peak-template 0; -#X obj 81 52 filledpolygon 3 3 3 0 0 0 amp 0 0; -#X obj 74 10 struct peak-template float x float y float amp float ampreal -float ampimag float used; -#X restore 351 516 pd peak-template; -#N canvas 0 0 600 386 peak-list 0; -#X scalar peak-template 14.6015 330 -247.288 0.111508 -0.0711486 0 -\;; -#X scalar peak-template 27.1653 330 -217.279 0.0258328 0.0328795 0 -\;; -#X scalar peak-template 38.6569 330 -224.35 -0.0509761 0.0202439 0 -\;; -#X scalar peak-template 59.9432 330 -204.752 0.0256193 0.00348008 0 -\;; -#X scalar peak-template 70.7537 330 -220.483 -0.0080783 0.0465889 0 -\;; -#X scalar peak-template 82.8075 330 -172.145 -0.007237 -0.00153184 -0 \;; -#X scalar peak-template 94.3779 330 -170.655 0.00668927 -0.00201552 -0 \;; -#X scalar peak-template 109.018 330 -196.083 0.015492 -0.0101804 0 -\;; -#X scalar peak-template 118.207 330 -151.073 -0.00325508 -0.000512459 -0 \;; -#X scalar peak-template 131.204 330 -166.747 -0.00591408 0.00108779 -0 \;; -#X restore 351 454 pd peak-list; -#N canvas 20 23 472 426 trace-list 1; -#X scalar trace-template 0 0 10 \; -199.613 82.4286 \; \;; -#X scalar trace-template 0 0 9 \; -242.604 72.4257 \; \;; -#X scalar trace-template 0 0 8 \; -267.035 74.7826 \; \;; -#X scalar trace-template 0 0 7 \; -297.412 68.2501 \; \;; -#X scalar trace-template 0 0 6 \; -308.895 73.4936 \; \;; -#X scalar trace-template 0 0 5 \; -319.788 57.3809 \; \;; -#X scalar trace-template 0 0 4 \; -328.845 56.8844 \; \;; -#X scalar trace-template 0 0 3 \; -338.831 65.3604 \; \;; -#X scalar trace-template 0 0 2 \; -344.435 50.3571 \; \;; -#X scalar trace-template 0 0 1 \; -351.66 55.5817 \; \;; -#X restore 351 494 pd trace-list; -#N canvas 56 84 527 179 trace-template 0; -#X obj 121 72 plot bazoo 0 1 0 500 5; -#X text 121 93 This template describes a pitch/amplitude trace. The -array "bazoo" holds the actual points. In this template \, y is always -0 and x is the starting location in pixels. There are 5 pixels per -point.; -#X obj 125 36 struct trace-template float x float y float voiceno array -bazoo point-template; -#X restore 351 537 pd trace-template; -#N canvas 96 258 494 158 point-template 0; -#X text 127 56 This template describes a single point on a pitch trace -(cf. trace-template w describes the trace itself.); -#X text 127 89 "y" is the field that is shown on the graph \; it's -- 4 * pitch. You also get an "amp" field in dB \, which you can't see -as a plot (yet).; -#X obj 212 14 struct point-template float y float amp; -#X restore 351 557 pd point-template; -#X msg 746 506 bang; -#X obj 8 425 pack 0 100; -#X obj 8 449 line~; -#X obj 8 405 dbtorms; -#X floatatom 545 70 0 0 0 0 - - -; -#N canvas 194 37 730 722 output 0; -#X obj 295 76 t b f; -#X obj 286 100 +; -#X obj 515 207 f; -#X obj 532 165 f; -#X obj 359 210 f; -#X obj 83 179 t b; -#X obj 82 127 f; -#X obj 71 58 inlet; -#X text 78 37 mute; -#X obj 83 201 f; -#X msg 235 153 0; -#X msg 74 84 bang; -#X obj 83 155 moses 1; -#X obj 231 69 t b f; -#X obj 222 93 +; -#X obj 181 27 r loop-amp; -#X obj 395 26 r osc-amp; -#X obj 83 236 s loop-amp; -#X obj 359 235 s osc-amp; -#X obj 591 125 print; -#X obj 186 148 f; -#X obj 374 168 f; -#X obj 225 120 t b b; -#X obj 552 23 r grain-amp; -#X obj 516 232 s grain-amp; -#X connect 0 0 1 0; -#X connect 0 1 1 1; -#X connect 1 0 6 1; -#X connect 2 0 24 0; -#X connect 3 0 2 1; -#X connect 4 0 18 0; -#X connect 5 0 9 0; -#X connect 5 0 4 0; -#X connect 5 0 2 0; -#X connect 6 0 12 0; -#X connect 7 0 11 0; -#X connect 9 0 17 0; -#X connect 10 0 17 0; -#X connect 10 0 18 0; -#X connect 10 0 24 0; -#X connect 11 0 6 0; -#X connect 12 0 5 0; -#X connect 12 1 22 0; -#X connect 13 0 14 0; -#X connect 13 1 14 1; -#X connect 14 0 1 0; -#X connect 15 0 14 0; -#X connect 15 0 20 1; -#X connect 16 0 13 0; -#X connect 16 0 21 1; -#X connect 20 0 9 1; -#X connect 21 0 4 1; -#X connect 22 0 10 0; -#X connect 22 1 20 0; -#X connect 22 1 21 0; -#X connect 22 1 3 0; -#X connect 23 0 3 1; -#X connect 23 0 0 0; -#X restore 820 69 pd output; -#N canvas 516 98 663 559 /SUBPATCH/ 0; -#X obj 103 108 outlet; -#X msg 101 80 set \$1; -#X obj 103 57 r loop-amp; -#X connect 1 0 0 0; -#X connect 2 0 1 0; -#X restore 545 50 pd; -#N canvas 209 96 518 375 fft 0; -#X floatatom 305 194 0 0 0 0 - - -; -#X obj 454 160 r sample-rate; -#X obj 454 180 t b f; -#X obj 304 169 r window-size; -#X obj 264 38 r sample-rate; -#X obj 238 16 r window-size; -#X obj 264 58 t b f; -#X obj 238 83 /; -#X obj 170 103 bang~; -#X obj 169 175 line~; -#X obj 238 104 * 1000; -#X text 298 104 window size (msec); -#X obj 168 281 rfft~; -#X obj 170 337 tabsend~ fft-real; -#X obj 207 307 tabsend~ fft-imag; -#X obj 429 140 r location; -#X obj 429 205 *; -#X obj 429 228 * 0.001; -#X text 498 228 location (samples); -#X obj 169 129 f; -#X msg 169 152 0 \, 1 \$1; -#X obj 113 201 *~; -#X obj 113 224 -~; -#X obj 81 301 *~; -#X obj 81 324 outlet~; -#X floatatom 429 252 0 0 0 0 - - -; -#X obj 53 127 s fft-done; -#X obj 66 31 block~ 2048 1; -#X obj 168 255 tabread4~ sample; -#X obj 169 211 *~ 0; -#X obj 168 232 +~ 0; -#X connect 1 0 2 0; -#X connect 2 0 16 0; -#X connect 2 1 16 1; -#X connect 3 0 0 0; -#X connect 3 0 29 1; -#X connect 4 0 6 0; -#X connect 5 0 7 0; -#X connect 6 0 7 0; -#X connect 6 1 7 1; -#X connect 7 0 10 0; -#X connect 8 0 19 0; -#X connect 8 0 26 0; -#X connect 9 0 21 0; -#X connect 9 0 21 1; -#X connect 9 0 22 1; -#X connect 9 0 29 0; -#X connect 10 0 19 1; -#X connect 12 0 13 0; -#X connect 12 1 14 0; -#X connect 15 0 16 0; -#X connect 16 0 17 0; -#X connect 17 0 25 0; -#X connect 17 0 30 1; -#X connect 19 0 20 0; -#X connect 20 0 9 0; -#X connect 21 0 22 0; -#X connect 22 0 23 0; -#X connect 23 0 24 0; -#X connect 28 0 12 0; -#X connect 28 0 23 1; -#X connect 29 0 30 0; -#X connect 30 0 28 0; -#X restore 22 470 pd fft; -#X obj 8 493 *~; -#X obj 9 544 hip~ 5; -#X obj 9 571 dac~; -#X obj 754 529 adc~; -#X obj 545 91 s loop-amp; -#X msg 820 48 mute; -#X text 18 97 click here first; -#X text 741 489 live sample; -#X text 677 25 AMPLITUDES; -#N canvas 5 1 864 622 make-trace 0; -#X obj 186 220 * -0.33333; -#X obj 91 216 * 10; -#X obj 118 136 pointer; -#X msg 118 115 next; -#X obj 118 97 until; -#X obj 387 134 pointer; -#X msg 389 108 next; -#X obj 200 330 unpack; -#X obj 255 332 s amp; -#X obj 283 378 s frequency; -#X obj 300 361 s pitch; -#X obj 251 375 f 0; -#X obj 200 348 t b b b b f; -#X obj 781 133 pointer; -#X obj 744 602 setsize trace-template bazoo; -#X obj 744 514 random 200; -#X obj 744 532 + 100; -#X obj 857 526 pointer; -#X obj 218 532 pointer; -#X floatatom 356 524 0 0 0 0 - - -; -#X floatatom 296 550 0 0 0 0 - - -; -#X msg 205 509 bang; -#X floatatom 108 461 0 0 0 0 - - -; -#X floatatom 40 509 0 0 0 0 - - -; -#X floatatom 153 590 0 0 0 0 - - -; -#X floatatom 516 556 0 0 0 0 - - -; -#X floatatom 356 489 0 0 0 0 - - -; -#X floatatom 667 511 0 0 0 0 - - -; -#X obj 481 464 pointer; -#X msg 508 447 next; -#X floatatom 532 512 0 0 0 0 - - -; -#X obj 516 539 getsize trace-template bazoo; -#X obj 127 563 get point-template y; -#X obj 40 533 set point-template y; -#X obj 101 486 element trace-template bazoo; -#X obj 296 580 setsize trace-template bazoo; -#X obj 356 507 set trace-template x; -#X obj 356 542 set trace-template y; -#X msg 744 497 bang; -#X obj 744 549 append trace-template x; -#X obj 519 489 get trace-template x y; -#X obj 744 567 t b p; -#X msg 744 584 5; -#X obj 816 93 s clear-traces; -#X obj 783 155 s last-in-list; -#X msg 780 43 bang; -#X obj 780 60 t b b; -#X obj 745 156 f 0; -#X obj 744 176 s nframe; -#X obj 445 337 r nframe; -#X obj 429 356 f; -#X obj 429 373 + 1; -#X obj 429 391 s nframe; -#X obj 429 296 r done-frame; -#X obj 437 315 s done-adding-traces; -#X obj 19 309 r component; -#X obj 19 326 unpack; -#X obj 73 331 s amp; -#X obj 104 370 s frequency; -#X obj 120 354 s pitch; -#X obj 70 388 s added-to-trace; -#X obj 70 370 f 0; -#X obj 62 408 s add-to-trace; -#X obj 19 344 t b b b b f; -#X obj 780 25 r clear-all; -#X obj 200 311 r component2; -#X obj 251 393 s started-new-trace; -#X obj 240 414 s start-new-trace; -#X obj 355 41 r done-analysis; -#X obj 355 62 t b b b b; -#X obj 292 176 r added-to-trace; -#X obj 389 89 until; -#X obj 456 172 get peak-template x amp; -#X obj 552 195 * -0.33333; -#X obj 456 190 * 10; -#X obj 456 210 pack; -#X obj 456 226 s component; -#X obj 120 337 ftom; -#X obj 387 155 t b p p; -#X obj 256 196 set peak-template used; -#X obj 259 176 f; -#X obj 302 344 ftom; -#X msg 175 31 \; done-frame bang; -#X obj 21 178 get peak-template used x amp; -#X obj 35 236 pack 0 0 0; -#X obj 35 255 route 0; -#X obj 35 272 s component2; -#X obj 549 260 print x1; -#X obj 226 276 print x2; -#X obj 727 255 add-trace 1; -#X obj 728 274 add-trace 2; -#X obj 728 291 add-trace 3; -#X obj 727 309 add-trace 4; -#X obj 728 328 add-trace 5; -#X obj 728 345 add-trace 6; -#X obj 728 363 add-trace 7; -#X obj 729 381 add-trace 8; -#X obj 729 399 add-trace 9; -#X obj 729 417 add-trace 10; -#X msg 484 111 traverse pd-peak-list; -#X msg 781 115 traverse pd-trace-list \, bang; -#X msg 833 59 \; pd-trace-list clear; -#X msg 481 430 traverse pd-trace-list \, next; -#X msg 857 509 traverse pd-trace-list \, bang; -#X connect 0 0 84 2; -#X connect 1 0 84 1; -#X connect 2 0 83 0; -#X connect 2 1 4 1; -#X connect 3 0 2 0; -#X connect 4 0 3 0; -#X connect 5 0 78 0; -#X connect 5 1 71 1; -#X connect 6 0 5 0; -#X connect 7 0 12 0; -#X connect 7 1 8 0; -#X connect 11 0 66 0; -#X connect 12 2 67 0; -#X connect 12 3 11 0; -#X connect 12 4 81 0; -#X connect 12 4 9 0; -#X connect 13 0 44 0; -#X connect 15 0 16 0; -#X connect 16 0 39 0; -#X connect 17 0 39 1; -#X connect 18 0 32 0; -#X connect 19 0 37 0; -#X connect 20 0 35 0; -#X connect 21 0 18 0; -#X connect 22 0 34 0; -#X connect 23 0 33 0; -#X connect 26 0 36 0; -#X connect 28 0 35 1; -#X connect 28 0 36 1; -#X connect 28 0 37 1; -#X connect 28 0 34 1; -#X connect 28 0 40 0; -#X connect 28 0 31 0; -#X connect 29 0 28 0; -#X connect 31 0 25 0; -#X connect 32 0 24 0; -#X connect 34 0 18 0; -#X connect 34 0 33 1; -#X connect 38 0 15 0; -#X connect 39 0 41 0; -#X connect 40 0 30 0; -#X connect 40 1 27 0; -#X connect 41 0 42 0; -#X connect 41 1 14 1; -#X connect 42 0 14 0; -#X connect 45 0 46 0; -#X connect 46 0 100 0; -#X connect 46 0 47 0; -#X connect 46 1 101 0; -#X connect 46 1 43 0; -#X connect 47 0 48 0; -#X connect 49 0 50 1; -#X connect 50 0 51 0; -#X connect 51 0 52 0; -#X connect 53 0 50 0; -#X connect 53 0 54 0; -#X connect 55 0 56 0; -#X connect 56 0 63 0; -#X connect 56 1 57 0; -#X connect 61 0 60 0; -#X connect 63 2 62 0; -#X connect 63 3 61 0; -#X connect 63 4 77 0; -#X connect 63 4 58 0; -#X connect 64 0 45 0; -#X connect 65 0 7 0; -#X connect 68 0 69 0; -#X connect 69 0 82 0; -#X connect 69 1 4 0; -#X connect 69 2 71 0; -#X connect 69 3 99 0; -#X connect 70 0 80 1; -#X connect 71 0 6 0; -#X connect 72 0 74 0; -#X connect 72 1 73 0; -#X connect 73 0 75 1; -#X connect 74 0 75 0; -#X connect 75 0 76 0; -#X connect 77 0 59 0; -#X connect 78 0 80 0; -#X connect 78 1 79 1; -#X connect 78 2 72 0; -#X connect 80 0 79 0; -#X connect 81 0 10 0; -#X connect 83 0 84 0; -#X connect 83 1 1 0; -#X connect 83 2 0 0; -#X connect 84 0 85 0; -#X connect 85 0 86 0; -#X connect 99 0 5 0; -#X connect 99 0 2 0; -#X connect 100 0 13 0; -#X connect 102 0 28 0; -#X connect 103 0 17 0; -#X restore 351 474 pd make-trace; -#X floatatom 5 289 0 0 0 0 - - -; -#N canvas 0 0 955 721 arrays 0; -#X msg 39 202 \; fft-real resize 4096 \; fft-imag resize 4096; -#N canvas 0 0 450 300 graph1 0; -#X array fft-real 4096 float 0; -#X coords 0 1 4096 -1 400 300 1; -#X restore 432 41 graph; -#N canvas 0 0 450 300 graph2 0; -#X array fft-imag 4096 float 0; -#X coords 0 1 4096 -1 400 300 1; -#X restore 419 265 graph; -#X restore 571 515 pd arrays; -#X obj 5 309 s location; -#X obj 123 412 r loop-amp; -#X obj 737 288 f; -#X obj 5 248 r location; -#X msg 5 268 set \$1; -#X obj 777 288 +; -#X obj 737 309 moses 900; -#X msg 695 329 0; -#X msg 694 247 1; -#X msg 736 335 \; location \$1 \; snapshot bang; -#X msg 655 170 bang \; location 0 \; clear-all bang; -#X floatatom 655 305 0 0 0 0 - - -; -#X obj 655 225 t b b; -#X obj 838 270 r incr; -#X obj 8 385 r grain-amp; -#X obj 121 473 r osc-amp; -#X obj 143 553 catch~ osc-sum; -#N canvas 102 67 751 619 osc-bank 0; -#X obj 311 433 osc-voice; -#X obj 290 451 osc-voice; -#X obj 269 471 osc-voice; -#X obj 248 490 osc-voice; -#X obj 227 510 osc-voice; -#X obj 207 528 osc-voice; -#X obj 186 547 osc-voice; -#X obj 165 566 osc-voice; -#X obj 144 586 osc-voice; -#X obj 123 410 route 1 2 3 4 5 6 7 8 9 10; -#X msg 377 269 0; -#X obj 728 489 pointer; -#X floatatom 848 417 0 0 0 0 - - -; -#X obj 623 351 pointer; -#X msg 549 491 next; -#X floatatom 623 419 0 0 0 0 - - -; -#X obj 231 111 pointer; -#X floatatom 368 104 0 0 0 0 - - -; -#X floatatom 309 129 0 0 0 0 - - -; -#X msg 218 88 bang; -#X floatatom 120 40 0 0 0 0 - - -; -#X floatatom 53 88 0 0 0 0 - - -; -#X floatatom 165 169 0 0 0 0 - - -; -#X floatatom 546 137 0 0 0 0 - - -; -#X floatatom 368 69 0 0 0 0 - - -; -#X floatatom 680 90 0 0 0 0 - - -; -#X obj 552 43 pointer; -#X msg 581 27 next; -#X floatatom 545 92 0 0 0 0 - - -; -#X obj 546 120 getsize trace-template bazoo; -#X obj 140 142 get point-template y; -#X obj 53 113 set point-template y; -#X obj 113 66 element trace-template bazoo; -#X obj 309 159 setsize trace-template bazoo; -#X obj 368 86 set trace-template x; -#X obj 368 121 set trace-template y; -#X obj 532 68 get trace-template x y; -#X floatatom 524 312 0 0 0 0 - - -; -#X msg 524 288 1; -#X msg 564 288 0; -#X obj 623 451 <; -#X obj 623 398 get trace-template x voiceno; -#X obj 623 374 t p p; -#X obj 393 337 until; -#X obj 620 233 r start-resynth; -#X obj 625 255 t b b; -#X obj 504 353 f; -#X obj 504 372 sel 0 1; -#X obj 668 436 r synth-index; -#X obj 621 555 pack f p; -#X obj 623 470 sel 0 1; -#X obj 305 230 r step-resynth; -#X obj 378 288 f; -#X obj 378 308 s synth-index; -#X obj 636 523 f; -#X obj 419 289 + 5; -#X obj 621 490 t b b b; -#X obj 305 252 t b b b; -#X obj 281 301 s osc-tick; -#X obj 123 604 osc-voice; -#X msg 552 10 traverse pd-trace-list \, next; -#X msg 621 288 traverse pd-trace-list \, next; -#X connect 9 0 59 0; -#X connect 9 1 8 0; -#X connect 9 2 7 0; -#X connect 9 3 6 0; -#X connect 9 4 5 0; -#X connect 9 5 4 0; -#X connect 9 6 3 0; -#X connect 9 7 2 0; -#X connect 9 8 1 0; -#X connect 9 9 0 0; -#X connect 10 0 52 0; -#X connect 11 0 49 1; -#X connect 13 0 42 0; -#X connect 13 1 39 0; -#X connect 13 1 43 1; -#X connect 14 0 13 0; -#X connect 15 0 40 0; -#X connect 16 0 30 0; -#X connect 17 0 35 0; -#X connect 18 0 33 0; -#X connect 19 0 16 0; -#X connect 20 0 32 0; -#X connect 21 0 31 0; -#X connect 24 0 34 0; -#X connect 26 0 33 1; -#X connect 26 0 34 1; -#X connect 26 0 35 1; -#X connect 26 0 32 1; -#X connect 26 0 36 0; -#X connect 26 0 29 0; -#X connect 27 0 26 0; -#X connect 29 0 23 0; -#X connect 30 0 22 0; -#X connect 32 0 16 0; -#X connect 32 0 31 1; -#X connect 36 0 28 0; -#X connect 36 1 25 0; -#X connect 37 0 46 1; -#X connect 38 0 37 0; -#X connect 39 0 37 0; -#X connect 40 0 50 0; -#X connect 41 0 15 0; -#X connect 41 1 54 1; -#X connect 42 0 41 0; -#X connect 42 1 11 1; -#X connect 43 0 46 0; -#X connect 44 0 45 0; -#X connect 45 0 61 0; -#X connect 45 1 38 0; -#X connect 45 1 10 0; -#X connect 46 0 47 0; -#X connect 47 0 43 1; -#X connect 47 1 15 0; -#X connect 48 0 40 1; -#X connect 49 0 9 0; -#X connect 50 0 43 1; -#X connect 50 1 56 0; -#X connect 51 0 57 0; -#X connect 52 0 53 0; -#X connect 52 0 55 0; -#X connect 54 0 49 0; -#X connect 55 0 52 1; -#X connect 56 0 14 0; -#X connect 56 1 54 0; -#X connect 56 2 11 0; -#X connect 57 0 58 0; -#X connect 57 1 43 0; -#X connect 57 2 52 0; -#X connect 60 0 26 0; -#X connect 61 0 13 0; -#X restore 571 494 pd osc-bank; -#X obj 646 95 s grain-amp; -#N canvas 31 70 662 326 save-list 0; -#X floatatom 759 255 0 0 0 0 - - -; -#X floatatom 677 254 0 0 0 0 - - -; -#X floatatom 599 251 0 0 0 0 - - -; -#X floatatom 517 250 0 0 0 0 - - -; -#X obj 435 206 pointer; -#X obj 307 121 pointer; -#X msg 328 47 bang; -#X obj 152 200 rmstodb; -#X obj 10 201 * 0.1; -#X obj 151 220 * -3; -#X floatatom 445 247 0 0 0 0 - - -; -#X obj 304 27 r start-analysis; -#X obj 305 71 t b b; -#X msg 456 185 next; -#X obj 430 227 get peak-template x y amp ampreal ampimag; -#X obj 9 241 append peak-template x y amp ampreal ampimag; -#X obj 125 138 r found-peak; -#X obj 126 161 unpack 0 0 0 0 0; -#X msg 81 201 330; -#X msg 356 69 \; pd-peak-list clear; -#X msg 305 100 traverse pd-peak-list \, bang; -#X msg 437 166 traverse pd-peak-list \, next; -#X connect 4 0 14 0; -#X connect 5 0 15 5; -#X connect 6 0 12 0; -#X connect 7 0 9 0; -#X connect 8 0 15 0; -#X connect 9 0 15 2; -#X connect 11 0 12 0; -#X connect 12 0 20 0; -#X connect 12 1 19 0; -#X connect 13 0 4 0; -#X connect 14 0 10 0; -#X connect 14 1 3 0; -#X connect 14 2 2 0; -#X connect 14 3 1 0; -#X connect 14 4 0 0; -#X connect 16 0 17 0; -#X connect 17 1 8 0; -#X connect 17 2 18 0; -#X connect 17 2 7 0; -#X connect 17 3 15 3; -#X connect 17 4 15 4; -#X connect 18 0 15 1; -#X connect 20 0 5 0; -#X connect 21 0 4 0; -#X restore 351 431 pd save-list; -#X msg 9 114 \; pd dsp 1 \; window-size 2048 \; sample-rate 44100 \; -f-threshold 40 \; incr 10 \; clear-all bang; -#X obj 737 245 metro 150; -#X floatatom 315 309 0 0 0 0 - - -; -#X floatatom 377 309 0 0 0 0 - - -; -#X msg 139 349 \; start-resynth bang; -#X msg 315 350 \; step-resynth bang; -#X obj 315 329 metro 100; -#X msg 478 350 \; osc-stop bang; -#X text 790 113 resynth; -#X text 642 112 analyzed grains; -#X text 554 112 original; -#X text 653 151 ... and here third to analyze; -#N canvas 0 0 276 216 test 0; -#X floatatom 56 120 0 0 0 0 - - -; -#X obj 56 141 s loud; -#X msg 49 84 \; clear-all bang; -#X msg 51 52 \; snapshot bang; -#X connect 0 0 1 0; -#X restore 569 538 pd test; -#X text 317 140 read a sample; -#X msg 214 163 \; read-sample ../sound/bell.aiff 44100; -#N canvas 190 43 405 461 test-signal 0; -#X obj 174 293 tabread4~ sample; -#X obj 174 268 line~; -#X obj 123 146 f; -#X obj 330 46 r insamprate; -#X obj 177 350 *~; -#X obj 213 351 dbtorms; -#X obj 213 328 inlet; -#X obj 175 415 outlet~; -#X obj 190 33 r insamplength; -#X msg 174 247 0 \, \$1 \$2; -#X obj 174 221 pack 0 0; -#X obj 272 190 /; -#X obj 389 99 * 0.001; -#X obj 175 388 hip~ 5; -#X obj 43 5 loadbang; -#X text 315 13 sample playback; -#X msg 43 25 1; -#X obj 43 69 metro 1000; -#X floatatom 43 48 0 0 0 0 - - -; -#X obj 331 75 t b b f; -#X obj 209 84 t b f; -#X connect 0 0 4 0; -#X connect 1 0 0 0; -#X connect 2 0 10 0; -#X connect 3 0 19 0; -#X connect 4 0 13 0; -#X connect 5 0 4 1; -#X connect 6 0 5 0; -#X connect 8 0 20 0; -#X connect 9 0 1 0; -#X connect 10 0 9 0; -#X connect 11 0 10 1; -#X connect 11 0 17 1; -#X connect 12 0 11 1; -#X connect 13 0 7 0; -#X connect 14 0 16 0; -#X connect 16 0 18 0; -#X connect 17 0 2 0; -#X connect 18 0 17 0; -#X connect 19 0 16 0; -#X connect 19 1 11 0; -#X connect 19 2 12 0; -#X connect 20 0 16 0; -#X connect 20 1 11 0; -#X connect 20 1 2 1; -#X restore 125 436 pd test-signal; -#N canvas 132 255 634 331 insample 0; -#N canvas 0 0 450 300 graph1 0; -#X array sample 155948 float 0; -#X coords 0 1 155947 -1 400 150 1; -#X restore 259 18 graph; -#X obj 25 70 r read-sample; -#X obj 25 95 unpack s f; -#X obj 69 121 s insamprate; -#X obj 25 171 soundfiler; -#X msg 25 147 read -resize \$1 sample; -#X obj 25 201 s insamplength; -#X msg 464 197 \; sample resize 220500 \; insamplength 220500; -#X connect 1 0 2 0; -#X connect 2 0 5 0; -#X connect 2 1 3 0; -#X connect 4 0 6 0; -#X connect 5 0 4 0; -#X restore 569 559 pd insample; -#X obj 744 553 tabwrite~ sample; -#X text 152 0 SINUSOID TRACKING; -#X text 129 259 to resynthesize \, "start" once and "step" ad lib. -To stop \, stop stepping and hit osc-stop. Note resynth ampliture control -above.; -#X text 4 17 This patch tries to reconstruct sinusoidal "tracks" from -a sampled sound using pique~ and the data structure facilities. It -turns out to be quite hard \, not least because pique~ 0.1 puts out -all sorts of spurious peaks.; -#X msg 213 200 \; read-sample ../sound/voice.wav 44100; -#X obj 847 194 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 --1; -#X connect 0 0 2 0; -#X connect 1 0 0 0; -#X connect 3 0 4 0; -#X connect 4 0 6 0; -#X connect 5 0 3 0; -#X connect 6 0 28 0; -#X connect 7 0 60 1; -#X connect 8 0 41 1; -#X connect 9 0 60 0; -#X connect 10 0 44 1; -#X connect 11 0 57 0; -#X connect 12 0 11 0; -#X connect 19 0 76 0; -#X connect 20 0 21 0; -#X connect 21 0 27 0; -#X connect 22 0 20 0; -#X connect 23 0 31 0; -#X connect 25 0 23 0; -#X connect 26 0 27 1; -#X connect 27 0 28 0; -#X connect 28 0 29 0; -#X connect 28 0 29 1; -#X connect 30 0 76 0; -#X connect 32 0 24 0; -#X connect 37 0 39 0; -#X connect 40 0 74 0; -#X connect 41 0 44 0; -#X connect 41 0 45 0; -#X connect 41 0 50 0; -#X connect 42 0 43 0; -#X connect 43 0 37 0; -#X connect 44 0 41 1; -#X connect 45 0 48 0; -#X connect 45 1 46 0; -#X connect 46 0 9 0; -#X connect 47 0 9 0; -#X connect 49 0 51 0; -#X connect 51 0 47 0; -#X connect 51 1 8 0; -#X connect 52 0 10 0; -#X connect 53 0 22 0; -#X connect 54 0 5 0; -#X connect 55 0 6 1; -#X connect 60 0 41 0; -#X connect 61 0 65 0; -#X connect 62 0 65 1; -#X connect 65 0 64 0; -#X connect 74 0 28 0; -#X connect 81 0 41 0; diff --git a/pd/doc/5.reference/help-intro.pd b/pd/doc/5.reference/help-intro.pd index 23952ba8..10ae3502 100644 --- a/pd/doc/5.reference/help-intro.pd +++ b/pd/doc/5.reference/help-intro.pd @@ -243,8 +243,7 @@ to a note-on; #X obj 18 3558 rzero~; #X text 118 3558 - raw real-valued one-zero filter; #X obj 18 3588 rzero_rev~; -#X obj 113 3588 rzero~; -#X text 166 3588 - time-reversed; +#X text 121 3588 - time-reversed; #X obj 18 3618 cpole~; #X obj 77 3618 czero~; #X text 214 3618 - corresponding complex-valued filters; diff --git a/pd/doc/5.reference/my_canvas-help.pd b/pd/doc/5.reference/my_canvas-help.pd index decda628..65f9976f 100644 --- a/pd/doc/5.reference/my_canvas-help.pd +++ b/pd/doc/5.reference/my_canvas-help.pd @@ -1,25 +1,25 @@ -#N canvas 482 81 568 339 10; -#X obj 1 1 cnv 15 300 60 foo10_snd foo10_rcv my_canvas=cnv 63 37 192 +#N canvas 0 22 500 292 10; +#X obj 1 1 cnv 15 300 60 foo10_snd foo10_rcv my_canvas=cnv 63 37 0 17 -257472 -355 0; #X text 4 232 (c) musil@iem.kug.ac.at; #X text 46 245 IEM KUG; #N canvas 219 100 699 530 edit 0; #X obj 39 226 f; #X msg 17 205 bang; -#X floatatom 55 204 3 63 88; -#X floatatom 90 226 3 0 37; +#X floatatom 55 204 3 63 88 0 - - -; +#X floatatom 90 226 3 0 37 0 - - -; #X obj 39 249 pack 0 0; #X text 117 226 y-label; #X text 83 204 x-label; #X obj 297 281 f; #X msg 275 260 bang; -#X floatatom 313 259 3 -10 10; -#X floatatom 348 281 3 -10 10; +#X floatatom 313 259 3 -10 10 0 - - -; +#X floatatom 348 281 3 -10 10 0 - - -; #X obj 297 304 pack 0 0; #X obj 309 396 f; #X msg 287 375 bang; -#X floatatom 325 374 3 20 60; -#X floatatom 360 396 3 150 200; +#X floatatom 325 374 3 20 60 0 - - -; +#X floatatom 360 396 3 150 200 0 - - -; #X obj 309 419 pack 0 0; #X text 341 259 x-delta; #X text 375 281 y-delta; @@ -27,12 +27,12 @@ #X text 387 396 y-position; #X obj 59 341 f; #X msg 37 320 bang; -#X floatatom 75 319 3 0 2; -#X floatatom 110 341 3 4 36; +#X floatatom 75 319 3 0 2 0 - - -; +#X floatatom 110 341 3 4 36 0 - - -; #X obj 59 364 pack 0 0; #X text 103 319 font; #X text 139 341 height; -#X floatatom 275 183 3 2 20; +#X floatatom 275 183 3 2 20 0 - - -; #X msg 52 137 \; foo10_rcv color \$1 \$2; #X msg 39 274 \; foo10_rcv label_pos \$1 \$2; #X msg 59 390 \; foo10_rcv label_font \$1 \$2; @@ -42,8 +42,8 @@ #X msg 297 329 \; foo10_rcv delta \$1 \$2; #X obj 505 234 f; #X msg 483 213 bang; -#X floatatom 521 212 5 100 1000; -#X floatatom 556 234 4 50 500; +#X floatatom 521 212 5 100 1000 0 - - -; +#X floatatom 556 234 4 50 500 0 - - -; #X obj 505 257 pack 0 0; #X text 566 212 width; #X text 594 236 height; @@ -57,14 +57,14 @@ #X msg 509 372 \; foo10_rcv get_pos; #X obj 510 407 r foo10_snd; #X obj 510 428 unpack 0 0; -#X floatatom 510 453 4 0 0; -#X floatatom 575 452 4 0 0; +#X floatatom 510 453 4 0 0 0 - - -; +#X floatatom 575 452 4 0 0 0 - - -; #X text 490 452 x=; #X text 557 452 y=; #X obj 52 79 f; #X msg 29 31 bang; -#X floatatom 68 29 3 0 29; -#X floatatom 103 47 3 0 29; +#X floatatom 68 29 3 0 29 0 - - -; +#X floatatom 103 47 3 0 29 0 - - -; #X text 96 29 background; #X text 131 48 label-color; #X msg 290 25 back; @@ -137,9 +137,9 @@ #X connect 30 1 23 0; #X connect 30 2 28 0; #X restore 290 86 pd RGB_____________; -#X floatatom 332 55 3 0 255; -#X floatatom 375 55 3 0 255; -#X floatatom 418 56 3 0 255; +#X floatatom 332 55 3 0 255 0 - - -; +#X floatatom 375 55 3 0 255 0 - - -; +#X floatatom 418 56 3 0 255 0 - - -; #X text 39 3 preset-colors; #X text 301 0 RGB-colors; #X text 332 37 red; @@ -188,22 +188,22 @@ #X connect 68 0 66 2; #X connect 69 0 66 3; #X connect 75 0 29 0; -#X restore 305 20 pd edit; -#X floatatom 110 193 4 0 0; -#X floatatom 147 193 4 0 0; +#X restore 315 20 pd edit; +#X floatatom 110 193 4 0 0 0 - - -; +#X floatatom 147 193 4 0 0 0 - - -; #X text 121 209 x; #X text 158 209 y; #X obj 7 161 metro 100; #X obj 33 141 tgl 15 1 empty empty empty 20 8 0 10 -262144 -1 -1 1 1; #X obj 110 145 r from_K1; -#X floatatom 188 194 4 0 0; -#X floatatom 225 194 4 0 0; +#X floatatom 188 194 4 0 0 0 - - -; +#X floatatom 225 194 4 0 0 0 - - -; #X text 198 210 x; #X text 236 210 y; #X obj 188 146 r from_K2; #X msg 7 185 \; to_K get_pos; -#N canvas 0 296 395 395 room 1; +#N canvas 0 296 395 395 room 0; #X obj 1 1 cnv 1 400 400 empty empty type...ctrl+e 150 140 2 17 -33289 -24198 0; #X obj 15 16 cnv 1 1 360 empty empty move_K1_and_K2 115 160 2 17 -166441 @@ -214,9 +214,9 @@ 0; #X obj 17 375 cnv 1 358 1 empty empty empty 20 12 2 20 -99865 -66577 0; -#X obj 23 22 cnv 25 25 25 from_K1 to_K K1 1 13 194 14 -261681 -123526 +#X obj 23 22 cnv 25 25 25 from_K1 to_K K1 1 13 2 14 -261681 -123526 0; -#X obj 342 342 cnv 25 25 25 from_K2 to_K K2 1 13 194 14 -225280 -1109 +#X obj 342 342 cnv 25 25 25 from_K2 to_K K2 1 13 2 14 -225280 -1109 0; #X restore 307 147 pd room; #X obj 110 169 unpack; @@ -229,9 +229,26 @@ #X text 5 64 click the properties-dialog on the top-left corner; #X obj 361 195 r foo10_rcv; #X obj 403 215 s ggg; -#X text 172 257 updated for Pd version 0.35; #X text 21 257 graz \, austria 2002; #X obj 187 236 x_all_guis aaa bbb ccc ddd eee fff ggg hhh iii; +#X text 313 46 For cnv's creation arguments:; +#N canvas 881 440 467 369 canvas-creation-arguments 0; +#X msg 7 12 canvas: cnv selectableSize xSize ySize sendName recieveName +Label labelXOff labelYOff Font# fontSize bgColor lblColor 0; +#X text 9 169 For example \, a canvas called thusly:; +#X obj 9 248 cnv 15 200 100 myCanvas myCanvasR Canvas_Demo 20 12 2 +14 -62784 -195568 0; +#X text 9 226 will result in this:; +#X text 8 59 Canvas can be called with 13 creation arguments. These +are not "optional" - all parameters must be filled or the canvas will +not instantiate correctly.; +#X text 10 114 The function of the final "0" is unknown to me (it is +found in the textual entry for a canvas object in a .pd file) but can +be safely left off without ill effects.; +#X msg 9 191 cnv 15 200 100 myCanvas myCanvasR Canvas_Demo 20 12 2 +14 18 20; +#X restore 314 63 pd canvas-creation-arguments; +#X text 172 257 updated for Pd version 0.35; #X connect 8 0 16 0; #X connect 9 0 8 0; #X connect 10 0 18 0; diff --git a/pd/extra/expr~/makefile b/pd/extra/expr~/makefile index 4889afe5..2d74ba36 100644 --- a/pd/extra/expr~/makefile +++ b/pd/extra/expr~/makefile @@ -14,16 +14,17 @@ pd_nt: expr.dll NTOBJ = vexp.obj vexp_fun.obj vexp_if.obj -PDNTCFLAGS = /W3 /WX /DNT /DPD /nologo -VC="C:\Program Files\Microsoft Visual Studio\Vc98" +PDNTCFLAGS = /W3 /DNT /DPD /nologo +VC = "C:\Program Files\Microsoft Visual Studio 9.0\VC" +VSTK = "C:\Program Files\Microsoft SDKs\Windows\v6.0A" PDNTINCLUDE = /I. /I..\..\src /I$(VC)\include PDNTLDIR = $(VC)\lib -PDNTLIB = $(PDNTLDIR)\libc.lib \ - $(PDNTLDIR)\oldnames.lib \ - $(PDNTLDIR)\kernel32.lib \ - ..\..\bin\pd.lib +PDNTLIB = /NODEFAULTLIB:libcmt /NODEFAULTLIB:oldnames /NODEFAULTLIB:kernel32 \ + $(PDNTLDIR)\libcmt.lib $(PDNTLDIR)\oldnames.lib \ + $(VSTK)\lib\kernel32.lib \ + ..\..\bin\pd.lib .c.obj: cl $(PDNTCFLAGS) $(PDNTINCLUDE) /c $*.c diff --git a/pd/extra/makefile b/pd/extra/makefile index 56e59bed..944475a1 100644 --- a/pd/extra/makefile +++ b/pd/extra/makefile @@ -7,19 +7,21 @@ pd_nt: $(NAME).dll .SUFFIXES: .dll PDNTCFLAGS = /W3 /WX /DNT /DPD /nologo -VC="C:\Program Files\Microsoft Visual Studio\Vc98" +# VC="C:\Program Files\Microsoft Visual Studio\Vc98" +VC = "C:\Program Files\Microsoft Visual Studio 9.0\VC" +VSTK = "C:\Program Files\Microsoft SDKs\Windows\v6.0A" PDNTINCLUDE = /I. /I..\..\src /I$(VC)\include PDNTLDIR = $(VC)\lib -PDNTLIB = $(PDNTLDIR)\libc.lib \ - $(PDNTLDIR)\oldnames.lib \ - $(PDNTLDIR)\kernel32.lib \ - ..\..\bin\pd.lib +PDNTLIB = /NODEFAULTLIB:libcmt /NODEFAULTLIB:oldnames /NODEFAULTLIB:kernel32 \ + $(PDNTLDIR)\libcmt.lib $(PDNTLDIR)\oldnames.lib \ + $(VSTK)\lib\kernel32.lib \ + ..\..\bin\pd.lib .c.dll: cl $(PDNTCFLAGS) $(PDNTINCLUDE) /c $*.c - link /dll /export:$(CSYM)_setup $*.obj $(PDNTLIB) + link /nologo /dll /export:$(CSYM)_setup $*.obj $(PDNTLIB) # ----------------------- IRIX 5.x ----------------------- diff --git a/pd/extra/sigmund~/sigmund~-help.pd b/pd/extra/sigmund~/sigmund~-help.pd index c60ca9a8..9b3e1caa 100644 --- a/pd/extra/sigmund~/sigmund~-help.pd +++ b/pd/extra/sigmund~/sigmund~-help.pd @@ -48,7 +48,6 @@ outputs are meaningful.; #X text 13 28 Sigmund~ analyzes an incoming sound into sinusoidal components \, which may be reported individually or combined to form a pitch estimate. Possible outputs are specified as creation arguments:; -#X text 55 129 env - output pitches at the beginning of notes; #X text 56 95 pitch - output pitch continuously; #N canvas 518 74 588 728 setting-parameters 0; #X msg 182 66 print; @@ -91,7 +90,7 @@ of a note at or near the previously output pitch.; #X connect 1 0 2 0; #X connect 2 0 3 0; #X restore 330 531 pd setting-parameters; -#N canvas 149 65 641 815 sinusoid-tracking 1; +#N canvas 149 65 641 815 sinusoid-tracking 0; #X obj 124 267 sigmund~ -npeak 10 peaks; #X obj 124 214 phasor~; #X obj 124 144 loadbang; @@ -127,7 +126,7 @@ claw them apart). The other four are as shown:; #X floatatom 245 760 5 0 0 0 - - -; #X floatatom 285 737 5 0 0 0 - - -; #X floatatom 326 713 5 0 0 0 - - -; -#X obj 246 638 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1 +#X obj 246 638 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 1; #X text 43 535 If you ask for "tracks" \, the output is four numbers: index \, frequency \, and amplitude as before \, and finally a flag @@ -178,17 +177,18 @@ for an empty track.; #X text 62 335 growth - growth (dB) to report a new note (7); #X text 54 147 peaks - output all sinusoidal peaks in order of amplitude ; -#X text 380 596 updated for Pd v0.40; #X text 11 356 The npts and hop parameters are in samples \, and are powers of two. The example below specifies a huge hop of 4096 (to slow the output down) and to output "pitch" and "env". (Those are the default outputs.); #X text 61 260 maxfreq - maximum sinusoid frequency in Hz. (1000000) ; -#X connect 2 0 25 0; +#X text 55 128 env - output amplitude continuously; +#X text 380 596 updated for Pd v0.41; +#X connect 2 0 24 0; #X connect 3 0 8 0; #X connect 4 0 7 0; #X connect 7 0 2 0; #X connect 8 0 4 0; -#X connect 25 0 5 0; -#X connect 25 1 6 0; +#X connect 24 0 5 0; +#X connect 24 1 6 0; diff --git a/pd/portaudio/include/pa_asio.h b/pd/portaudio/include/pa_asio.h index 211922a6..ca808727 100644 --- a/pd/portaudio/include/pa_asio.h +++ b/pd/portaudio/include/pa_asio.h @@ -1,7 +1,7 @@ #ifndef PA_ASIO_H #define PA_ASIO_H /* - * $Id: pa_asio.h,v 1.2 2007-12-28 03:28:29 millerpuckette Exp $ + * $Id: pa_asio.h,v 1.3 2007-12-28 03:43:01 millerpuckette Exp $ * PortAudio Portable Real-Time Audio Library * ASIO specific extensions * diff --git a/pd/portaudio/include/pa_linux_alsa.h b/pd/portaudio/include/pa_linux_alsa.h index 1789d915..90488a3c 100644 --- a/pd/portaudio/include/pa_linux_alsa.h +++ b/pd/portaudio/include/pa_linux_alsa.h @@ -2,7 +2,7 @@ #define PA_LINUX_ALSA_H /* - * $Id: pa_linux_alsa.h,v 1.2 2007-12-28 03:28:29 millerpuckette Exp $ + * $Id: pa_linux_alsa.h,v 1.3 2007-12-28 03:43:01 millerpuckette Exp $ * PortAudio Portable Real-Time Audio Library * ALSA-specific extensions * diff --git a/pd/portaudio/include/pa_win_wmme.h b/pd/portaudio/include/pa_win_wmme.h index a343afc9..0153391a 100644 --- a/pd/portaudio/include/pa_win_wmme.h +++ b/pd/portaudio/include/pa_win_wmme.h @@ -1,7 +1,7 @@ #ifndef PA_WIN_WMME_H #define PA_WIN_WMME_H /* - * $Id: pa_win_wmme.h,v 1.2 2007-12-28 03:28:29 millerpuckette Exp $ + * $Id: pa_win_wmme.h,v 1.3 2007-12-28 03:43:01 millerpuckette Exp $ * PortAudio Portable Real-Time Audio Library * MME specific extensions * diff --git a/pd/portaudio/include/portaudio.h b/pd/portaudio/include/portaudio.h index 80d2f6aa..02ed79d5 100644 --- a/pd/portaudio/include/portaudio.h +++ b/pd/portaudio/include/portaudio.h @@ -2,7 +2,7 @@ #ifndef PORTAUDIO_H #define PORTAUDIO_H /* - * $Id: portaudio.h,v 1.2 2007-12-28 03:28:29 millerpuckette Exp $ + * $Id: portaudio.h,v 1.3 2007-12-28 03:43:01 millerpuckette Exp $ * PortAudio Portable Real-Time Audio Library * PortAudio API Header File * Latest version available at: http://www.portaudio.com/ diff --git a/pd/portaudio/src/common/pa_allocation.c b/pd/portaudio/src/common/pa_allocation.c index c7551af0..7f5dfff6 100644 --- a/pd/portaudio/src/common/pa_allocation.c +++ b/pd/portaudio/src/common/pa_allocation.c @@ -1,5 +1,5 @@ /* - * $Id: pa_allocation.c,v 1.2 2007-12-28 03:28:30 millerpuckette Exp $ + * $Id: pa_allocation.c,v 1.3 2007-12-28 03:43:01 millerpuckette Exp $ * Portable Audio I/O Library allocation group implementation * memory allocation group for tracking allocation groups * diff --git a/pd/portaudio/src/common/pa_allocation.h b/pd/portaudio/src/common/pa_allocation.h index bf851531..dc99f71f 100644 --- a/pd/portaudio/src/common/pa_allocation.h +++ b/pd/portaudio/src/common/pa_allocation.h @@ -1,7 +1,7 @@ #ifndef PA_ALLOCATION_H #define PA_ALLOCATION_H /* - * $Id: pa_allocation.h,v 1.2 2007-12-28 03:28:30 millerpuckette Exp $ + * $Id: pa_allocation.h,v 1.3 2007-12-28 03:43:01 millerpuckette Exp $ * Portable Audio I/O Library allocation context header * memory allocation context for tracking allocation groups * diff --git a/pd/portaudio/src/common/pa_converters.c b/pd/portaudio/src/common/pa_converters.c index 02908eb9..5ca75c40 100644 --- a/pd/portaudio/src/common/pa_converters.c +++ b/pd/portaudio/src/common/pa_converters.c @@ -1,5 +1,5 @@ /* - * $Id: pa_converters.c,v 1.2 2007-12-28 03:28:30 millerpuckette Exp $ + * $Id: pa_converters.c,v 1.3 2007-12-28 03:43:01 millerpuckette Exp $ * Portable Audio I/O Library sample conversion mechanism * * Based on the Open Source API proposed by Ross Bencina diff --git a/pd/portaudio/src/common/pa_converters.h b/pd/portaudio/src/common/pa_converters.h index c2119fc5..7227f54b 100644 --- a/pd/portaudio/src/common/pa_converters.h +++ b/pd/portaudio/src/common/pa_converters.h @@ -1,7 +1,7 @@ #ifndef PA_CONVERTERS_H #define PA_CONVERTERS_H /* - * $Id: pa_converters.h,v 1.2 2007-12-28 03:28:30 millerpuckette Exp $ + * $Id: pa_converters.h,v 1.3 2007-12-28 03:43:01 millerpuckette Exp $ * Portable Audio I/O Library sample conversion mechanism * * Based on the Open Source API proposed by Ross Bencina diff --git a/pd/portaudio/src/common/pa_cpuload.c b/pd/portaudio/src/common/pa_cpuload.c index 0801754a..96e329db 100644 --- a/pd/portaudio/src/common/pa_cpuload.c +++ b/pd/portaudio/src/common/pa_cpuload.c @@ -1,5 +1,5 @@ /* - * $Id: pa_cpuload.c,v 1.2 2007-12-28 03:28:30 millerpuckette Exp $ + * $Id: pa_cpuload.c,v 1.3 2007-12-28 03:43:01 millerpuckette Exp $ * Portable Audio I/O Library CPU Load measurement functions * Portable CPU load measurement facility. * diff --git a/pd/portaudio/src/common/pa_cpuload.h b/pd/portaudio/src/common/pa_cpuload.h index 8e0ecb66..d9ef8ee5 100644 --- a/pd/portaudio/src/common/pa_cpuload.h +++ b/pd/portaudio/src/common/pa_cpuload.h @@ -1,7 +1,7 @@ #ifndef PA_CPULOAD_H #define PA_CPULOAD_H /* - * $Id: pa_cpuload.h,v 1.2 2007-12-28 03:28:30 millerpuckette Exp $ + * $Id: pa_cpuload.h,v 1.3 2007-12-28 03:43:01 millerpuckette Exp $ * Portable Audio I/O Library CPU Load measurement functions * Portable CPU load measurement facility. * diff --git a/pd/portaudio/src/common/pa_debugprint.c b/pd/portaudio/src/common/pa_debugprint.c index 2b36030b..7a12cd39 100644 --- a/pd/portaudio/src/common/pa_debugprint.c +++ b/pd/portaudio/src/common/pa_debugprint.c @@ -1,5 +1,5 @@ /* - * $Id: pa_debugprint.c,v 1.2 2007-12-28 03:28:30 millerpuckette Exp $ + * $Id: pa_debugprint.c,v 1.3 2007-12-28 03:43:01 millerpuckette Exp $ * Portable Audio I/O Library Multi-Host API front end * Validate function parameters and manage multiple host APIs. * diff --git a/pd/portaudio/src/common/pa_dither.c b/pd/portaudio/src/common/pa_dither.c index a9b4ea3d..0f71b3c9 100644 --- a/pd/portaudio/src/common/pa_dither.c +++ b/pd/portaudio/src/common/pa_dither.c @@ -1,5 +1,5 @@ /* - * $Id: pa_dither.c,v 1.2 2007-12-28 03:28:30 millerpuckette Exp $ + * $Id: pa_dither.c,v 1.3 2007-12-28 03:43:01 millerpuckette Exp $ * Portable Audio I/O Library triangular dither generator * * Based on the Open Source API proposed by Ross Bencina diff --git a/pd/portaudio/src/common/pa_dither.h b/pd/portaudio/src/common/pa_dither.h index 5244f15e..b2884476 100644 --- a/pd/portaudio/src/common/pa_dither.h +++ b/pd/portaudio/src/common/pa_dither.h @@ -1,7 +1,7 @@ #ifndef PA_DITHER_H #define PA_DITHER_H /* - * $Id: pa_dither.h,v 1.2 2007-12-28 03:28:30 millerpuckette Exp $ + * $Id: pa_dither.h,v 1.3 2007-12-28 03:43:01 millerpuckette Exp $ * Portable Audio I/O Library triangular dither generator * * Based on the Open Source API proposed by Ross Bencina diff --git a/pd/portaudio/src/common/pa_endianness.h b/pd/portaudio/src/common/pa_endianness.h index 1ab1a2f3..e5d3f11f 100644 --- a/pd/portaudio/src/common/pa_endianness.h +++ b/pd/portaudio/src/common/pa_endianness.h @@ -1,7 +1,7 @@ #ifndef PA_ENDIANNESS_H #define PA_ENDIANNESS_H /* - * $Id: pa_endianness.h,v 1.2 2007-12-28 03:28:30 millerpuckette Exp $ + * $Id: pa_endianness.h,v 1.3 2007-12-28 03:43:01 millerpuckette Exp $ * Portable Audio I/O Library current platform endianness macros * * Based on the Open Source API proposed by Ross Bencina diff --git a/pd/portaudio/src/common/pa_front.c b/pd/portaudio/src/common/pa_front.c index e1566a80..5f732abc 100644 --- a/pd/portaudio/src/common/pa_front.c +++ b/pd/portaudio/src/common/pa_front.c @@ -1,5 +1,5 @@ /* - * $Id: pa_front.c,v 1.2 2007-12-28 03:28:30 millerpuckette Exp $ + * $Id: pa_front.c,v 1.3 2007-12-28 03:43:01 millerpuckette Exp $ * Portable Audio I/O Library Multi-Host API front end * Validate function parameters and manage multiple host APIs. * diff --git a/pd/portaudio/src/common/pa_hostapi.h b/pd/portaudio/src/common/pa_hostapi.h index 738a516f..cff09b84 100644 --- a/pd/portaudio/src/common/pa_hostapi.h +++ b/pd/portaudio/src/common/pa_hostapi.h @@ -1,7 +1,7 @@ #ifndef PA_HOSTAPI_H #define PA_HOSTAPI_H /* - * $Id: pa_hostapi.h,v 1.2 2007-12-28 03:28:30 millerpuckette Exp $ + * $Id: pa_hostapi.h,v 1.3 2007-12-28 03:43:01 millerpuckette Exp $ * Portable Audio I/O Library * host api representation * diff --git a/pd/portaudio/src/common/pa_process.c b/pd/portaudio/src/common/pa_process.c index df0b405e..6c7a658a 100644 --- a/pd/portaudio/src/common/pa_process.c +++ b/pd/portaudio/src/common/pa_process.c @@ -1,5 +1,5 @@ /* - * $Id: pa_process.c,v 1.2 2007-12-28 03:28:30 millerpuckette Exp $ + * $Id: pa_process.c,v 1.3 2007-12-28 03:43:01 millerpuckette Exp $ * Portable Audio I/O Library * streamCallback <-> host buffer processing adapter * diff --git a/pd/portaudio/src/common/pa_process.h b/pd/portaudio/src/common/pa_process.h index c31f1817..3dadd3db 100644 --- a/pd/portaudio/src/common/pa_process.h +++ b/pd/portaudio/src/common/pa_process.h @@ -1,7 +1,7 @@ #ifndef PA_PROCESS_H #define PA_PROCESS_H /* - * $Id: pa_process.h,v 1.2 2007-12-28 03:28:30 millerpuckette Exp $ + * $Id: pa_process.h,v 1.3 2007-12-28 03:43:01 millerpuckette Exp $ * Portable Audio I/O Library callback buffer processing adapters * * Based on the Open Source API proposed by Ross Bencina diff --git a/pd/portaudio/src/common/pa_ringbuffer.c b/pd/portaudio/src/common/pa_ringbuffer.c index dd9b7ce6..e91e46da 100644 --- a/pd/portaudio/src/common/pa_ringbuffer.c +++ b/pd/portaudio/src/common/pa_ringbuffer.c @@ -1,5 +1,5 @@ /* - * $Id: pa_ringbuffer.c,v 1.2 2007-12-28 03:28:30 millerpuckette Exp $ + * $Id: pa_ringbuffer.c,v 1.3 2007-12-28 03:43:01 millerpuckette Exp $ * Portable Audio I/O Library * Ring Buffer utility. * diff --git a/pd/portaudio/src/common/pa_ringbuffer.h b/pd/portaudio/src/common/pa_ringbuffer.h index fc2f3f6e..854030b2 100644 --- a/pd/portaudio/src/common/pa_ringbuffer.h +++ b/pd/portaudio/src/common/pa_ringbuffer.h @@ -1,7 +1,7 @@ #ifndef PA_RINGBUFFER_H #define PA_RINGBUFFER_H /* - * $Id: pa_ringbuffer.h,v 1.2 2007-12-28 03:28:30 millerpuckette Exp $ + * $Id: pa_ringbuffer.h,v 1.3 2007-12-28 03:43:01 millerpuckette Exp $ * Portable Audio I/O Library * Ring Buffer utility. * diff --git a/pd/portaudio/src/common/pa_skeleton.c b/pd/portaudio/src/common/pa_skeleton.c index 275a2e9a..50757431 100644 --- a/pd/portaudio/src/common/pa_skeleton.c +++ b/pd/portaudio/src/common/pa_skeleton.c @@ -1,5 +1,5 @@ /* - * $Id: pa_skeleton.c,v 1.2 2007-12-28 03:28:30 millerpuckette Exp $ + * $Id: pa_skeleton.c,v 1.3 2007-12-28 03:43:01 millerpuckette Exp $ * Portable Audio I/O Library skeleton implementation * demonstrates how to use the common functions to implement support * for a host API diff --git a/pd/portaudio/src/common/pa_stream.c b/pd/portaudio/src/common/pa_stream.c index 763d8e2c..698b14cf 100644 --- a/pd/portaudio/src/common/pa_stream.c +++ b/pd/portaudio/src/common/pa_stream.c @@ -1,5 +1,5 @@ /* - * $Id: pa_stream.c,v 1.2 2007-12-28 03:28:30 millerpuckette Exp $ + * $Id: pa_stream.c,v 1.3 2007-12-28 03:43:01 millerpuckette Exp $ * Portable Audio I/O Library * * diff --git a/pd/portaudio/src/common/pa_stream.h b/pd/portaudio/src/common/pa_stream.h index d342726b..2c589a3e 100644 --- a/pd/portaudio/src/common/pa_stream.h +++ b/pd/portaudio/src/common/pa_stream.h @@ -1,7 +1,7 @@ #ifndef PA_STREAM_H #define PA_STREAM_H /* - * $Id: pa_stream.h,v 1.2 2007-12-28 03:28:30 millerpuckette Exp $ + * $Id: pa_stream.h,v 1.3 2007-12-28 03:43:01 millerpuckette Exp $ * Portable Audio I/O Library * stream interface * diff --git a/pd/portaudio/src/common/pa_trace.c b/pd/portaudio/src/common/pa_trace.c index c39406eb..0454c48f 100644 --- a/pd/portaudio/src/common/pa_trace.c +++ b/pd/portaudio/src/common/pa_trace.c @@ -1,5 +1,5 @@ /* - * $Id: pa_trace.c,v 1.2 2007-12-28 03:28:30 millerpuckette Exp $ + * $Id: pa_trace.c,v 1.3 2007-12-28 03:43:01 millerpuckette Exp $ * Portable Audio I/O Library Trace Facility * Store trace information in real-time for later printing. * diff --git a/pd/portaudio/src/common/pa_trace.h b/pd/portaudio/src/common/pa_trace.h index ac20eee2..4f656455 100644 --- a/pd/portaudio/src/common/pa_trace.h +++ b/pd/portaudio/src/common/pa_trace.h @@ -1,7 +1,7 @@ #ifndef PA_TRACE_H #define PA_TRACE_H /* - * $Id: pa_trace.h,v 1.2 2007-12-28 03:28:30 millerpuckette Exp $ + * $Id: pa_trace.h,v 1.3 2007-12-28 03:43:01 millerpuckette Exp $ * Portable Audio I/O Library Trace Facility * Store trace information in real-time for later printing. * diff --git a/pd/portaudio/src/common/pa_util.h b/pd/portaudio/src/common/pa_util.h index f2f6d901..fe8effa4 100644 --- a/pd/portaudio/src/common/pa_util.h +++ b/pd/portaudio/src/common/pa_util.h @@ -1,7 +1,7 @@ #ifndef PA_UTIL_H #define PA_UTIL_H /* - * $Id: pa_util.h,v 1.2 2007-12-28 03:28:30 millerpuckette Exp $ + * $Id: pa_util.h,v 1.3 2007-12-28 03:43:01 millerpuckette Exp $ * Portable Audio I/O Library implementation utilities header * common implementation utilities and interfaces * diff --git a/pd/portaudio/src/hostapi/alsa/pa_linux_alsa.c b/pd/portaudio/src/hostapi/alsa/pa_linux_alsa.c index 6c2b2ca3..fc9e957c 100644 --- a/pd/portaudio/src/hostapi/alsa/pa_linux_alsa.c +++ b/pd/portaudio/src/hostapi/alsa/pa_linux_alsa.c @@ -1,5 +1,5 @@ /* - * $Id: pa_linux_alsa.c,v 1.2 2007-12-28 03:28:30 millerpuckette Exp $ + * $Id: pa_linux_alsa.c,v 1.3 2007-12-28 03:43:01 millerpuckette Exp $ * PortAudio Portable Real-Time Audio Library * Latest Version at: http://www.portaudio.com * ALSA implementation by Joshua Haberman and Arve Knudsen diff --git a/pd/portaudio/src/hostapi/asio/pa_asio.cpp b/pd/portaudio/src/hostapi/asio/pa_asio.cpp index e0f22c2d..a3c3888b 100644 --- a/pd/portaudio/src/hostapi/asio/pa_asio.cpp +++ b/pd/portaudio/src/hostapi/asio/pa_asio.cpp @@ -1,5 +1,5 @@ /* - * $Id: pa_asio.cpp,v 1.2 2007-12-28 03:28:30 millerpuckette Exp $ + * $Id: pa_asio.cpp,v 1.3 2007-12-28 03:43:01 millerpuckette Exp $ * Portable Audio I/O Library for ASIO Drivers * * Author: Stephane Letz diff --git a/pd/portaudio/src/hostapi/coreaudio/pa_mac_core_old.c b/pd/portaudio/src/hostapi/coreaudio/pa_mac_core_old.c index f2d85bc2..7967e5ea 100644 --- a/pd/portaudio/src/hostapi/coreaudio/pa_mac_core_old.c +++ b/pd/portaudio/src/hostapi/coreaudio/pa_mac_core_old.c @@ -1,5 +1,5 @@ /* - * $Id: pa_mac_core_old.c,v 1.2 2007-12-28 03:28:30 millerpuckette Exp $ + * $Id: pa_mac_core_old.c,v 1.3 2007-12-28 03:43:01 millerpuckette Exp $ * pa_mac_core.c * Implementation of PortAudio for Mac OS X CoreAudio * diff --git a/pd/portaudio/src/hostapi/jack/pa_jack.c b/pd/portaudio/src/hostapi/jack/pa_jack.c index 05640daa..cd2af072 100644 --- a/pd/portaudio/src/hostapi/jack/pa_jack.c +++ b/pd/portaudio/src/hostapi/jack/pa_jack.c @@ -1,5 +1,5 @@ /* - * $Id: pa_jack.c,v 1.2 2007-12-28 03:28:30 millerpuckette Exp $ + * $Id: pa_jack.c,v 1.3 2007-12-28 03:43:02 millerpuckette Exp $ * PortAudio Portable Real-Time Audio Library * Latest Version at: http://www.portaudio.com * JACK Implementation by Joshua Haberman diff --git a/pd/portaudio/src/hostapi/oss/pa_unix_oss.c b/pd/portaudio/src/hostapi/oss/pa_unix_oss.c index 07bc4987..644506a7 100644 --- a/pd/portaudio/src/hostapi/oss/pa_unix_oss.c +++ b/pd/portaudio/src/hostapi/oss/pa_unix_oss.c @@ -1,5 +1,5 @@ /* - * $Id: pa_unix_oss.c,v 1.2 2007-12-28 03:28:30 millerpuckette Exp $ + * $Id: pa_unix_oss.c,v 1.3 2007-12-28 03:43:02 millerpuckette Exp $ * PortAudio Portable Real-Time Audio Library * Latest Version at: http://www.portaudio.com * OSS implementation by: diff --git a/pd/portaudio/src/hostapi/wmme/pa_win_wmme.c b/pd/portaudio/src/hostapi/wmme/pa_win_wmme.c index 7f4bd6d2..eaec0ea2 100644 --- a/pd/portaudio/src/hostapi/wmme/pa_win_wmme.c +++ b/pd/portaudio/src/hostapi/wmme/pa_win_wmme.c @@ -1,5 +1,5 @@ /* - * $Id: pa_win_wmme.c,v 1.2 2007-12-28 03:28:30 millerpuckette Exp $ + * $Id: pa_win_wmme.c,v 1.3 2007-12-28 03:43:02 millerpuckette Exp $ * pa_win_wmme.c * Implementation of PortAudio for Windows MultiMedia Extensions (WMME) * diff --git a/pd/portaudio/src/os/mac_osx/pa_mac_hostapis.c b/pd/portaudio/src/os/mac_osx/pa_mac_hostapis.c index ca737c25..a75dcc92 100644 --- a/pd/portaudio/src/os/mac_osx/pa_mac_hostapis.c +++ b/pd/portaudio/src/os/mac_osx/pa_mac_hostapis.c @@ -1,5 +1,5 @@ /* - * $Id: pa_mac_hostapis.c,v 1.2 2007-12-28 03:28:30 millerpuckette Exp $ + * $Id: pa_mac_hostapis.c,v 1.3 2007-12-28 03:43:02 millerpuckette Exp $ * Portable Audio I/O Library Macintosh initialization table * * Based on the Open Source API proposed by Ross Bencina diff --git a/pd/portaudio/src/os/unix/pa_unix_hostapis.c b/pd/portaudio/src/os/unix/pa_unix_hostapis.c index bfb028ea..7fe38139 100644 --- a/pd/portaudio/src/os/unix/pa_unix_hostapis.c +++ b/pd/portaudio/src/os/unix/pa_unix_hostapis.c @@ -1,5 +1,5 @@ /* - * $Id: pa_unix_hostapis.c,v 1.2 2007-12-28 03:28:30 millerpuckette Exp $ + * $Id: pa_unix_hostapis.c,v 1.3 2007-12-28 03:43:02 millerpuckette Exp $ * Portable Audio I/O Library UNIX initialization table * * Based on the Open Source API proposed by Ross Bencina diff --git a/pd/portaudio/src/os/unix/pa_unix_util.c b/pd/portaudio/src/os/unix/pa_unix_util.c index cc141465..3f17dbe0 100644 --- a/pd/portaudio/src/os/unix/pa_unix_util.c +++ b/pd/portaudio/src/os/unix/pa_unix_util.c @@ -1,5 +1,5 @@ /* - * $Id: pa_unix_util.c,v 1.2 2007-12-28 03:28:30 millerpuckette Exp $ + * $Id: pa_unix_util.c,v 1.3 2007-12-28 03:43:02 millerpuckette Exp $ * Portable Audio I/O Library * UNIX platform-specific support functions * diff --git a/pd/portaudio/src/os/unix/pa_unix_util.h b/pd/portaudio/src/os/unix/pa_unix_util.h index 52239c3e..86f14a32 100644 --- a/pd/portaudio/src/os/unix/pa_unix_util.h +++ b/pd/portaudio/src/os/unix/pa_unix_util.h @@ -1,5 +1,5 @@ /* - * $Id: pa_unix_util.h,v 1.2 2007-12-28 03:28:30 millerpuckette Exp $ + * $Id: pa_unix_util.h,v 1.3 2007-12-28 03:43:02 millerpuckette Exp $ * Portable Audio I/O Library * UNIX platform-specific support functions * diff --git a/pd/portaudio/src/os/win/pa_win_hostapis.c b/pd/portaudio/src/os/win/pa_win_hostapis.c index 122f309a..2aa02b89 100644 --- a/pd/portaudio/src/os/win/pa_win_hostapis.c +++ b/pd/portaudio/src/os/win/pa_win_hostapis.c @@ -1,5 +1,5 @@ /* - * $Id: pa_win_hostapis.c,v 1.2 2007-12-28 03:28:30 millerpuckette Exp $ + * $Id: pa_win_hostapis.c,v 1.3 2007-12-28 03:43:02 millerpuckette Exp $ * Portable Audio I/O Library Windows initialization table * * Based on the Open Source API proposed by Ross Bencina diff --git a/pd/portaudio/src/os/win/pa_win_util.c b/pd/portaudio/src/os/win/pa_win_util.c index 890fdb41..039eb731 100644 --- a/pd/portaudio/src/os/win/pa_win_util.c +++ b/pd/portaudio/src/os/win/pa_win_util.c @@ -1,5 +1,5 @@ /* - * $Id: pa_win_util.c,v 1.2 2007-12-28 03:28:30 millerpuckette Exp $ + * $Id: pa_win_util.c,v 1.3 2007-12-28 03:43:02 millerpuckette Exp $ * Portable Audio I/O Library * Win32 platform-specific support functions * diff --git a/pd/src/CHANGELOG.txt b/pd/src/CHANGELOG.txt index 6c0dc1e3..9620a7fa 100644 --- a/pd/src/CHANGELOG.txt +++ b/pd/src/CHANGELOG.txt @@ -4,7 +4,10 @@ for original notes on source stype and organization. 0.41.0 -add support for callback-based audio I/O; changes in +add support for callback-based audio I/O +headers & code changed to use t_float or t_sample instead of float (patches +by zmoelnig). + 0.40.0 diff --git a/pd/src/configure.in b/pd/src/configure.in index e328f6aa..bc5d5f7b 100644 --- a/pd/src/configure.in +++ b/pd/src/configure.in @@ -7,6 +7,7 @@ AC_SUBST(portaudio, no) AC_SUBST(portmidi, no) AC_SUBST(binarymode, -m755) AC_SUBST(fftw, no) +AC_SUBST(tk, yes) AC_SUBST(PDLIB) AC_SUBST(CPPFLAGS) AC_SUBST(MORECFLAGS) @@ -21,6 +22,7 @@ AC_SUBST(GUIFLAGS) AC_SUBST(OSNUMBER) AC_SUBST(EXTERNTARGET) AC_SUBST(ASIOSRC) +AC_SUBST(GUISRC) dnl other defaults @@ -42,6 +44,10 @@ AC_ARG_ENABLE(setuid, [ --enable-setuid install as setuid (linux)], setuid=$enableval) AC_ARG_ENABLE(fftw, [ --enable-fftw use FFTW package], fftw=$enableval) +AC_ARG_ENABLE(fat, [ --disable-fat build fat binary on Mac OS X], + fat=$enableval, fat="yes") +AC_ARG_ENABLE(tk, [ --disable-tk build without tcl/tk-GUI], + tk=$enableval) dnl Checks for programs. AC_PROG_CC @@ -77,7 +83,7 @@ AC_CHECK_LIB(ffm, sin,PDLIB="$PDLIB -lffm") dnl Checking for `sin' function in -lm: AC_CHECK_LIB(m, sin,PDLIB="$PDLIB -lm", - echo "math library required" || exit 1) + echo "math library required" || exit 1) dnl Checking for `pthread_create' function in -pthread AC_CHECK_LIB(pthread, pthread_create,PDLIB="$PDLIB -lpthread", @@ -87,7 +93,7 @@ AC_CHECK_LIB(pthread, pthread_create,PDLIB="$PDLIB -lpthread", echo "pthreads required"; exit 1)))) dnl Check for fftw package -if test x$fftw == "xyes"; +if test x$fftw = "xyes"; then AC_CHECK_LIB(fftw, fftw_one,PDLIB="$PDLIB -lfftw", echo "fftw package not found - using built-in FFT"; fftw=no) @@ -96,83 +102,89 @@ fi dnl look for tcl 8.x... do I really have to go through all this!? foundit=no -if test $foundit == "no"; +if test $foundit = "no"; then AC_CHECK_HEADER(tcl.h,foundit=yes,) fi -if test $foundit == "no"; +if test $foundit = "no"; then AC_CHECK_HEADER(tcl8.7/tcl.h, - GUIFLAGS="$GUIFLAGS -I/usr/include/tcl8.7";foundit=yes,) + GUIFLAGS="$GUIFLAGS -I/usr/include/tcl8.7";foundit=yes,) fi -if test $foundit == "no"; +if test $foundit = "no"; then AC_CHECK_HEADER(tcl8.6/tcl.h, - GUIFLAGS="$GUIFLAGS -I/usr/include/tcl8.6";foundit=yes,) + GUIFLAGS="$GUIFLAGS -I/usr/include/tcl8.6";foundit=yes,) fi -if test $foundit == "no"; +if test $foundit = "no"; then AC_CHECK_HEADER(tcl8.5/tcl.h, - GUIFLAGS="$GUIFLAGS -I/usr/include/tcl8.5";foundit=yes,) + GUIFLAGS="$GUIFLAGS -I/usr/include/tcl8.5";foundit=yes,) fi -if test $foundit == "no"; +if test $foundit = "no"; then AC_CHECK_HEADER(tcl8.4/tcl.h, - GUIFLAGS="$GUIFLAGS -I/usr/include/tcl8.4";foundit=yes,) + GUIFLAGS="$GUIFLAGS -I/usr/include/tcl8.4";foundit=yes,) fi -if test $foundit == "no"; +if test $foundit = "no"; then AC_CHECK_HEADER(tcl8.4/tcl.h, - GUIFLAGS="$GUIFLAGS -I/usr/local/include/tcl8.4";foundit=yes,) + GUIFLAGS="$GUIFLAGS -I/usr/local/include/tcl8.4";foundit=yes,) fi -if test $foundit == "no"; +if test $foundit = "no"; then AC_CHECK_HEADER(tcl8.3/tcl.h, - GUIFLAGS="$GUIFLAGS -I/usr/include/tcl8.3";foundit=yes,) + GUIFLAGS="$GUIFLAGS -I/usr/include/tcl8.3";foundit=yes,) fi -if test $foundit == "no"; +if test $foundit = "no"; then AC_CHECK_HEADER(tcl8.2/tcl.h, - GUIFLAGS="$GUIFLAGS -I/usr/include/tcl8.2";foundit=yes,) + GUIFLAGS="$GUIFLAGS -I/usr/include/tcl8.2";foundit=yes,) fi -if test $foundit == "no"; +if test $foundit = "no"; then echo no tcl header found - echo bolding trying without... + echo bolding trying without... # exit -1 fi AC_CHECK_LIB(tcl85, main,, - AC_CHECK_LIB(tcl8.5, main,, + AC_CHECK_LIB(tcl8.5, main,, AC_CHECK_LIB(tcl84, main,, - AC_CHECK_LIB(tcl8.4, main,, - AC_CHECK_LIB(tcl8.3, main,, - AC_CHECK_LIB(tcl8.2, main,, - AC_CHECK_LIB(tcl8.0, main,, + AC_CHECK_LIB(tcl8.4, main,, + AC_CHECK_LIB(tcl8.3, main,, + AC_CHECK_LIB(tcl8.2, main,, + AC_CHECK_LIB(tcl8.0, main,, echo no tcl library found; exit 1))))))) AC_CHECK_LIB(tk85, main,, - AC_CHECK_LIB(tk8.5, main,, + AC_CHECK_LIB(tk8.5, main,, AC_CHECK_LIB(tk84, main,, - AC_CHECK_LIB(tk8.4, main,, - AC_CHECK_LIB(tk8.3, main,, - AC_CHECK_LIB(tk8.2, main,, - AC_CHECK_LIB(tk8.0, main,, + AC_CHECK_LIB(tk8.4, main,, + AC_CHECK_LIB(tk8.3, main,, + AC_CHECK_LIB(tk8.2, main,, + AC_CHECK_LIB(tk8.0, main,, echo no tk library found; exit 1))))))) -if test `uname -s` == Linux; +if test x$tk != "xno"; then +GUISRC="t_main.c t_tkcmd.c" +else +GUISRC= +fi + +if test `uname -s` = Linux; then dnl Ckecking for ALSA echo .................... alsa= $alsa dnl This should be fixed so Pd can use ALSA shared libraries where appropriate. - if test x$alsa == xyes; then - AC_CHECK_LIB(asound,snd_pcm_info,PDLIB="$PDLIB -lasound" ; alsa="yes",alsa="no") + if test x$alsa = xyes; then + AC_CHECK_LIB(asound,snd_pcm_info,PDLIB="$PDLIB -lasound" ; alsa="yes",alsa="no") fi dnl Checking for JACK - if test x$jack == xyes; then + if test x$jack = xyes; then AC_CHECK_LIB(rt,shm_open,LIBS="$LIBS -lrt") AC_CHECK_LIB(jack,jack_set_xrun_callback,LIBS="$LIBS -ljack";jack=xrun,jack=no) AC_CHECK_LIB(jack,jack_set_error_function,LIBS="$LIBS -ljack";jack=yes,jack=no) @@ -184,119 +196,123 @@ dnl This should be fixed so Pd can use ALSA shared libraries where appropriate. fi EXT=pd_linux CPPFLAGS="-DDL_OPEN -DPA_USE_OSS -DUNIX -DUNISTD\ - -DUSEAPI_OSS \ - -fno-strict-aliasing" + -DUSEAPI_OSS \ + -fno-strict-aliasing" SYSSRC="s_midi_oss.c s_audio_oss.c" - if test x$alsa == "xyes"; + if test x$alsa = "xyes"; then - SYSSRC=$SYSSRC" s_audio_alsa.c s_audio_alsamm.c s_midi_alsa.c" - CPPFLAGS=$CPPFLAGS" -DPA_USE_ALSA -DUSEAPI_ALSA" - LDFLAGS=$LDFLAGS" -lasound" + SYSSRC=$SYSSRC" s_audio_alsa.c s_audio_alsamm.c s_midi_alsa.c" + CPPFLAGS=$CPPFLAGS" -DPA_USE_ALSA -DUSEAPI_ALSA" + LDFLAGS=$LDFLAGS" -lasound" fi - if test x$portaudio == "xyes"; + if test x$portaudio = "xyes"; then - CPPFLAGS=$CPPFLAGS" -DUSEAPI_PORTAUDIO -DHAVE_SYS_SOUNDCARD_H \ - -Wno-error \ + CPPFLAGS=$CPPFLAGS" -DUSEAPI_PORTAUDIO -DHAVE_SYS_SOUNDCARD_H \ + -Wno-error \ -I../portaudio/include -I../portaudio/src/common \ - -I../portaudio/src/os/unix/ \ + -I../portaudio/src/os/unix/ \ -I../portmidi/pm_common \ -I../portmidi/pm_linux" - SYSSRC="s_audio_pa.c \ - s_audio_pablio.c \ - s_audio_paring.c \ - ../portaudio/src/common/pa_allocation.c \ - ../portaudio/src/common/pa_converters.c \ - ../portaudio/src/common/pa_cpuload.c \ - ../portaudio/src/common/pa_dither.c \ - ../portaudio/src/common/pa_front.c \ - ../portaudio/src/common/pa_process.c \ - ../portaudio/src/common/pa_skeleton.c \ - ../portaudio/src/common/pa_stream.c \ - ../portaudio/src/common/pa_trace.c \ - ../portaudio/src/common/pa_debugprint.c \ - ../portaudio/src/common/pa_ringbuffer.c \ - ../portaudio/src/os/unix/pa_unix_hostapis.c \ - ../portaudio/src/os/unix/pa_unix_util.c \ - ../portaudio/src/hostapi/oss/pa_unix_oss.c "$SYSSRC - if test x$alsa == "xyes"; - then - SYSSRC="../portaudio/src/hostapi/alsa/pa_linux_alsa.c "$SYSSRC - CPPFLAGS=$CPPFLAGS" -DPA_USE_ALSA" - fi - if test x$jack == "xyes"; - then - SYSSRC="../portaudio/src/hostapi/jack/pa_jack.c "$SYSSRC - CPPFLAGS=$CPPFLAGS" -DPA_USE_JACK" - fi + SYSSRC="s_audio_pa.c \ + s_audio_pablio.c \ + s_audio_paring.c \ + ../portaudio/src/common/pa_allocation.c \ + ../portaudio/src/common/pa_converters.c \ + ../portaudio/src/common/pa_cpuload.c \ + ../portaudio/src/common/pa_dither.c \ + ../portaudio/src/common/pa_front.c \ + ../portaudio/src/common/pa_process.c \ + ../portaudio/src/common/pa_skeleton.c \ + ../portaudio/src/common/pa_stream.c \ + ../portaudio/src/common/pa_trace.c \ + ../portaudio/src/common/pa_debugprint.c \ + ../portaudio/src/common/pa_ringbuffer.c \ + ../portaudio/src/os/unix/pa_unix_hostapis.c \ + ../portaudio/src/os/unix/pa_unix_util.c \ + ../portaudio/src/hostapi/oss/pa_unix_oss.c "$SYSSRC + if test x$alsa = "xyes"; + then + SYSSRC="../portaudio/src/hostapi/alsa/pa_linux_alsa.c "$SYSSRC + CPPFLAGS=$CPPFLAGS" -DPA_USE_ALSA" + fi + if test x$jack = "xyes"; + then + SYSSRC="../portaudio/src/hostapi/jack/pa_jack.c "$SYSSRC + CPPFLAGS=$CPPFLAGS" -DPA_USE_JACK" + fi fi - if test x$setuid == "xyes"; + if test x$setuid = "xyes"; then - binarymode="-m4755" + binarymode="-m4755" fi STRIPFLAG=-s GUINAME="pd-gui" - if test x$USE_DEBUG_CFLAGS == "xyes"; + if test x$USE_DEBUG_CFLAGS = "xyes"; then - MORECFLAGS=$MORECFLAGS" -g" + MORECFLAGS=$MORECFLAGS" -g" else - MORECFLAGS=$MORECFLAGS" -O6 -funroll-loops -fomit-frame-pointer" + MORECFLAGS=$MORECFLAGS" -O6 -funroll-loops -fomit-frame-pointer" fi - if test x$jack == "xyes"; + if test x$jack = "xyes"; then LDFLAGS=$LDFLAGS" -lrt -ljack" fi - if test x$jack == "xrun"; + if test x$jack = "xrun"; then LDFLAGS=$LDFLAGS" -lrt -ljack" fi - echo MORECFLAGS --------------- $MORECFLAGS OSNUMBER=0 fi -if test `uname -s` == Darwin; +if test `uname -s` = Darwin; then LDFLAGS="-Wl -framework CoreAudio \ -framework AudioUnit -framework AudioToolbox \ -framework Carbon -framework CoreMIDI" EXT=pd_darwin CPPFLAGS="-DDL_OPEN -DMACOSX -DUNISTD -I/usr/X11R6/include \ - -I../portaudio/include -I../portaudio/src/common \ - -I../portaudio/src/os/mac_osx/ \ - -I../portmidi/pm_common -I../portmidi/pm_mac \ - -I../portmidi/porttime \ - -DUSEAPI_PORTAUDIO -DPA19 -DPA_USE_COREAUDIO -DNEWBUFFER" + -I../portaudio/include -I../portaudio/src/common \ + -I../portaudio/src/os/mac_osx/ \ + -I../portmidi/pm_common -I../portmidi/pm_mac \ + -I../portmidi/porttime \ + -DUSEAPI_PORTAUDIO -DPA19 -DPA_USE_COREAUDIO -DNEWBUFFER" + dnl for Mac OS X 10.3 (i.e. < 10.4) if test `uname -r` = 7.9.0; then - MORECFLAGS="-DMACOSX3 -DPA_BIG_ENDIAN -Wno-error" - EXTERNTARGET=d_ppc - else + fat="no" + fi + if test "x$fat" == "xyes"; + then MORECFLAGS="-isysroot /Developer/SDKs/MacOSX10.4u.sdk \ -arch i386 -arch ppc -Wno-error" - EXTERNTARGET=d_fat + EXTERNTARGET=d_fat LDFLAGS=$LDFLAGS" -arch i386 -arch ppc" + else + MORECFLAGS="-DMACOSX3 -DPA_BIG_ENDIAN -Wno-error" + EXTERNTARGET=d_ppc fi SYSSRC="s_midi_pm.c s_audio_pa.c \ - s_audio_pablio.c \ - s_audio_paring.c \ - ../portaudio/src/common/pa_allocation.c \ - ../portaudio/src/common/pa_converters.c \ - ../portaudio/src/common/pa_cpuload.c \ - ../portaudio/src/common/pa_dither.c \ - ../portaudio/src/common/pa_front.c \ - ../portaudio/src/common/pa_process.c \ - ../portaudio/src/common/pa_skeleton.c \ - ../portaudio/src/common/pa_stream.c \ - ../portaudio/src/common/pa_trace.c \ - ../portaudio/src/common/pa_debugprint.c \ - ../portaudio/src/common/pa_ringbuffer.c \ - ../portaudio/src/os/unix/pa_unix_util.c \ - ../portaudio/src/os/mac_osx/pa_mac_hostapis.c \ - ../portaudio/src/hostapi/coreaudio/pa_mac_core.c \ - ../portaudio/src/hostapi/coreaudio/pa_mac_core_blocking.c \ - ../portaudio/src/hostapi/coreaudio/pa_mac_core_utilities.c \ + s_audio_pablio.c \ + s_audio_paring.c \ + ../portaudio/src/common/pa_allocation.c \ + ../portaudio/src/common/pa_converters.c \ + ../portaudio/src/common/pa_cpuload.c \ + ../portaudio/src/common/pa_dither.c \ + ../portaudio/src/common/pa_front.c \ + ../portaudio/src/common/pa_process.c \ + ../portaudio/src/common/pa_skeleton.c \ + ../portaudio/src/common/pa_stream.c \ + ../portaudio/src/common/pa_trace.c \ + ../portaudio/src/common/pa_debugprint.c \ + ../portaudio/src/common/pa_ringbuffer.c \ + ../portaudio/src/os/unix/pa_unix_util.c \ + ../portaudio/src/os/mac_osx/pa_mac_hostapis.c \ + ../portaudio/src/hostapi/coreaudio/pa_mac_core.c \ + ../portaudio/src/hostapi/coreaudio/pa_mac_core_blocking.c \ + ../portaudio/src/hostapi/coreaudio/pa_mac_core_utilities.c \ ../portmidi/pm_mac/pmmac.c \ ../portmidi/pm_mac/pmmacosxcm.c \ ../portmidi/pm_common/pmutil.c \ @@ -306,34 +322,34 @@ then GUINAME="libPdTcl.dylib" # find the Tcl/Tk Frameworks - if test -d "../../Frameworks"; + if test -d "../../Frameworks"; then # Miller's location TCLTK_FRAMEWORKS_PATH="../../Frameworks" - elif test -d "/Library/Frameworks"; - then + elif test -d "/Library/Frameworks"; + then # get it from the default install location TCLTK_FRAMEWORKS_PATH="/Library/Frameworks" else # Panther has Tcl here; Tiger has Tcl and Tk here TCLTK_FRAMEWORKS_PATH="/System/Library/Frameworks" - fi + fi GUIFLAGS="-F$TCLTK_FRAMEWORKS_PATH -framework Tcl -framework Tk \ -I$TCLTK_FRAMEWORKS_PATH/Tk.framework/Versions/Current/Headers \ -I$TCLTK_FRAMEWORKS_PATH/Tcl.framework/Versions/Current/Headers \ -I$TCLTK_FRAMEWORKS_PATH/Tcl.framework/Versions/8.4/PrivateHeaders" - if test x$USE_DEBUG_CFLAGS == "xyes"; + if test x$USE_DEBUG_CFLAGS = "xyes"; then - MORECFLAGS=$MORECFLAGS" -g" + MORECFLAGS=$MORECFLAGS" -g" else - MORECFLAGS=$MORECFLAGS" -O2" + MORECFLAGS=$MORECFLAGS" -O2" fi OSNUMBER=2 - if test x$jack == "xyes"; + if test x$jack = "xyes"; then - LDFLAGS=$LDFLAGS" -weak_framework Jack" + LDFLAGS=$LDFLAGS" -weak_framework Jack" fi - if test x$jack == "xrun"; + if test x$jack = "xrun"; then LDFLAGS=$LDFLAGS" -weak_framework Jack" fi @@ -342,35 +358,35 @@ fi # only Windows uses ASIO, for the rest, set to blank ASIOSRC= -if test `uname -s` == MINGW32_NT-5.0; +if test `uname -s` = MINGW32_NT-5.0; then EXT=dll MORECFLAGS="-DUSEAPI_PORTAUDIO -DPA19 -DMSW -DPA_NO_DS -DPD_INTERNAL \ -I../portaudio/include -I../portaudio/src/common \ - -I../portaudio/src/os/win/ \ + -I../portaudio/src/os/win/ \ -mwindows -mms-bitfields "$MORECFLAGS PDLIB=$PDLIB" -lwsock32 -lwinmm -lole32 -lstdc++" SYSSRC="s_audio_pa.c s_audio_pablio.c s_audio_paring.c \ s_audio_mmio.c s_midi_mmio.c \ - ../portaudio/src/common/pa_allocation.c \ - ../portaudio/src/common/pa_converters.c \ - ../portaudio/src/common/pa_cpuload.c \ - ../portaudio/src/common/pa_dither.c \ - ../portaudio/src/common/pa_front.c \ - ../portaudio/src/common/pa_process.c \ - ../portaudio/src/common/pa_skeleton.c \ - ../portaudio/src/common/pa_stream.c \ - ../portaudio/src/common/pa_trace.c \ - ../portaudio/src/common/pa_debugprint.c \ - ../portaudio/src/common/pa_ringbuffer.c \ + ../portaudio/src/common/pa_allocation.c \ + ../portaudio/src/common/pa_converters.c \ + ../portaudio/src/common/pa_cpuload.c \ + ../portaudio/src/common/pa_dither.c \ + ../portaudio/src/common/pa_front.c \ + ../portaudio/src/common/pa_process.c \ + ../portaudio/src/common/pa_skeleton.c \ + ../portaudio/src/common/pa_stream.c \ + ../portaudio/src/common/pa_trace.c \ + ../portaudio/src/common/pa_debugprint.c \ + ../portaudio/src/common/pa_ringbuffer.c \ ../portaudio/src/os/win/pa_win_util.c \ ../portaudio/src/os/win/pa_win_hostapis.c \ ../portaudio/src/os/win/pa_x86_plain_converters.c \ ../portaudio/src/hostapi/wmme/pa_win_wmme.c" - ASIOSRC="../portaudio/src/hostapi/asio/iasiothiscallresolver.cpp \ - ../portaudio/src/hostapi/pa_asio/asio.cpp ../asio/asio.cpp \ - ../asio/asiodrivers.cpp ../asio/asiolist.cpp" + ASIOSRC="../portaudio/src/hostapi/asio/iasiothiscallresolver.cpp \ + ../portaudio/src/hostapi/pa_asio/asio.cpp ../asio/asio.cpp \ + ../asio/asiodrivers.cpp ../asio/asiolist.cpp" STRIPFLAG="--strip-unneeded" GUINAME="pdtcl.dll" GUIFLAGS= @@ -378,18 +394,18 @@ fi # support for jack, on either linux or darwin: -if test x$jack == "xyes"; +if test x$jack = "xyes"; then MORECFLAGS=$MORECFLAGS" -DUSEAPI_JACK" SYSSRC=$SYSSRC" s_audio_jack.c" fi -if test x$jack == "xrun"; +if test x$jack = "xrun"; then MORECFLAGS=$MORECFLAGS" -DUSEAPI_JACK -DJACK_XRUN" SYSSRC=$SYSSRC" s_audio_jack.c" fi -if test x$fftw == "xyes"; +if test x$fftw = "xyes"; then SYSSRC=$SYSSRC" d_fft_fftw.c d_fftroutine.c" LDFLAGS=$LDFLAGS" -lfftw" diff --git a/pd/src/d_arithmetic.c b/pd/src/d_arithmetic.c index adbcfb15..02671e36 100644 --- a/pd/src/d_arithmetic.c +++ b/pd/src/d_arithmetic.c @@ -16,13 +16,13 @@ static t_class *plus_class, *scalarplus_class; typedef struct _plus { t_object x_obj; - float x_f; + t_float x_f; } t_plus; typedef struct _scalarplus { t_object x_obj; - float x_f; + t_float x_f; t_float x_g; /* inlet value */ } t_scalarplus; @@ -50,9 +50,9 @@ static void *plus_new(t_symbol *s, int argc, t_atom *argv) t_int *plus_perform(t_int *w) { - t_float *in1 = (t_float *)(w[1]); - t_float *in2 = (t_float *)(w[2]); - t_float *out = (t_float *)(w[3]); + t_sample *in1 = (t_sample *)(w[1]); + t_sample *in2 = (t_sample *)(w[2]); + t_sample *out = (t_sample *)(w[3]); int n = (int)(w[4]); while (n--) *out++ = *in1++ + *in2++; return (w+5); @@ -60,17 +60,17 @@ t_int *plus_perform(t_int *w) t_int *plus_perf8(t_int *w) { - t_float *in1 = (t_float *)(w[1]); - t_float *in2 = (t_float *)(w[2]); - t_float *out = (t_float *)(w[3]); + t_sample *in1 = (t_sample *)(w[1]); + t_sample *in2 = (t_sample *)(w[2]); + t_sample *out = (t_sample *)(w[3]); int n = (int)(w[4]); for (; n; n -= 8, in1 += 8, in2 += 8, out += 8) { - float f0 = in1[0], f1 = in1[1], f2 = in1[2], f3 = in1[3]; - float f4 = in1[4], f5 = in1[5], f6 = in1[6], f7 = in1[7]; + t_sample f0 = in1[0], f1 = in1[1], f2 = in1[2], f3 = in1[3]; + t_sample f4 = in1[4], f5 = in1[5], f6 = in1[6], f7 = in1[7]; - float g0 = in2[0], g1 = in2[1], g2 = in2[2], g3 = in2[3]; - float g4 = in2[4], g5 = in2[5], g6 = in2[6], g7 = in2[7]; + t_sample g0 = in2[0], g1 = in2[1], g2 = in2[2], g3 = in2[3]; + t_sample g4 = in2[4], g5 = in2[5], g6 = in2[6], g7 = in2[7]; out[0] = f0 + g0; out[1] = f1 + g1; out[2] = f2 + g2; out[3] = f3 + g3; out[4] = f4 + g4; out[5] = f5 + g5; out[6] = f6 + g6; out[7] = f7 + g7; @@ -80,9 +80,9 @@ t_int *plus_perf8(t_int *w) t_int *scalarplus_perform(t_int *w) { - t_float *in = (t_float *)(w[1]); + t_sample *in = (t_sample *)(w[1]); t_float f = *(t_float *)(w[2]); - t_float *out = (t_float *)(w[3]); + t_sample *out = (t_sample *)(w[3]); int n = (int)(w[4]); while (n--) *out++ = *in++ + f; return (w+5); @@ -90,14 +90,14 @@ t_int *scalarplus_perform(t_int *w) t_int *scalarplus_perf8(t_int *w) { - t_float *in = (t_float *)(w[1]); + t_sample *in = (t_sample *)(w[1]); t_float g = *(t_float *)(w[2]); - t_float *out = (t_float *)(w[3]); + t_sample *out = (t_sample *)(w[3]); int n = (int)(w[4]); for (; n; n -= 8, in += 8, out += 8) { - float f0 = in[0], f1 = in[1], f2 = in[2], f3 = in[3]; - float f4 = in[4], f5 = in[5], f6 = in[6], f7 = in[7]; + t_sample f0 = in[0], f1 = in[1], f2 = in[2], f3 = in[3]; + t_sample f4 = in[4], f5 = in[5], f6 = in[6], f7 = in[7]; out[0] = f0 + g; out[1] = f1 + g; out[2] = f2 + g; out[3] = f3 + g; out[4] = f4 + g; out[5] = f5 + g; out[6] = f6 + g; out[7] = f7 + g; @@ -149,13 +149,13 @@ static t_class *minus_class, *scalarminus_class; typedef struct _minus { t_object x_obj; - float x_f; + t_float x_f; } t_minus; typedef struct _scalarminus { t_object x_obj; - float x_f; + t_float x_f; t_float x_g; } t_scalarminus; @@ -183,9 +183,9 @@ static void *minus_new(t_symbol *s, int argc, t_atom *argv) t_int *minus_perform(t_int *w) { - t_float *in1 = (t_float *)(w[1]); - t_float *in2 = (t_float *)(w[2]); - t_float *out = (t_float *)(w[3]); + t_sample *in1 = (t_sample *)(w[1]); + t_sample *in2 = (t_sample *)(w[2]); + t_sample *out = (t_sample *)(w[3]); int n = (int)(w[4]); while (n--) *out++ = *in1++ - *in2++; return (w+5); @@ -193,17 +193,17 @@ t_int *minus_perform(t_int *w) t_int *minus_perf8(t_int *w) { - t_float *in1 = (t_float *)(w[1]); - t_float *in2 = (t_float *)(w[2]); - t_float *out = (t_float *)(w[3]); + t_sample *in1 = (t_sample *)(w[1]); + t_sample *in2 = (t_sample *)(w[2]); + t_sample *out = (t_sample *)(w[3]); int n = (int)(w[4]); for (; n; n -= 8, in1 += 8, in2 += 8, out += 8) { - float f0 = in1[0], f1 = in1[1], f2 = in1[2], f3 = in1[3]; - float f4 = in1[4], f5 = in1[5], f6 = in1[6], f7 = in1[7]; + t_sample f0 = in1[0], f1 = in1[1], f2 = in1[2], f3 = in1[3]; + t_sample f4 = in1[4], f5 = in1[5], f6 = in1[6], f7 = in1[7]; - float g0 = in2[0], g1 = in2[1], g2 = in2[2], g3 = in2[3]; - float g4 = in2[4], g5 = in2[5], g6 = in2[6], g7 = in2[7]; + t_sample g0 = in2[0], g1 = in2[1], g2 = in2[2], g3 = in2[3]; + t_sample g4 = in2[4], g5 = in2[5], g6 = in2[6], g7 = in2[7]; out[0] = f0 - g0; out[1] = f1 - g1; out[2] = f2 - g2; out[3] = f3 - g3; out[4] = f4 - g4; out[5] = f5 - g5; out[6] = f6 - g6; out[7] = f7 - g7; @@ -213,9 +213,9 @@ t_int *minus_perf8(t_int *w) t_int *scalarminus_perform(t_int *w) { - t_float *in = (t_float *)(w[1]); + t_sample *in = (t_sample *)(w[1]); t_float f = *(t_float *)(w[2]); - t_float *out = (t_float *)(w[3]); + t_sample *out = (t_sample *)(w[3]); int n = (int)(w[4]); while (n--) *out++ = *in++ - f; return (w+5); @@ -223,14 +223,14 @@ t_int *scalarminus_perform(t_int *w) t_int *scalarminus_perf8(t_int *w) { - t_float *in = (t_float *)(w[1]); + t_sample *in = (t_sample *)(w[1]); t_float g = *(t_float *)(w[2]); - t_float *out = (t_float *)(w[3]); + t_sample *out = (t_sample *)(w[3]); int n = (int)(w[4]); for (; n; n -= 8, in += 8, out += 8) { - float f0 = in[0], f1 = in[1], f2 = in[2], f3 = in[3]; - float f4 = in[4], f5 = in[5], f6 = in[6], f7 = in[7]; + t_sample f0 = in[0], f1 = in[1], f2 = in[2], f3 = in[3]; + t_sample f4 = in[4], f5 = in[5], f6 = in[6], f7 = in[7]; out[0] = f0 - g; out[1] = f1 - g; out[2] = f2 - g; out[3] = f3 - g; out[4] = f4 - g; out[5] = f5 - g; out[6] = f6 - g; out[7] = f7 - g; @@ -280,13 +280,13 @@ static t_class *times_class, *scalartimes_class; typedef struct _times { t_object x_obj; - float x_f; + t_float x_f; } t_times; typedef struct _scalartimes { t_object x_obj; - float x_f; + t_float x_f; t_float x_g; } t_scalartimes; @@ -314,9 +314,9 @@ static void *times_new(t_symbol *s, int argc, t_atom *argv) t_int *times_perform(t_int *w) { - t_float *in1 = (t_float *)(w[1]); - t_float *in2 = (t_float *)(w[2]); - t_float *out = (t_float *)(w[3]); + t_sample *in1 = (t_sample *)(w[1]); + t_sample *in2 = (t_sample *)(w[2]); + t_sample *out = (t_sample *)(w[3]); int n = (int)(w[4]); while (n--) *out++ = *in1++ * *in2++; return (w+5); @@ -324,17 +324,17 @@ t_int *times_perform(t_int *w) t_int *times_perf8(t_int *w) { - t_float *in1 = (t_float *)(w[1]); - t_float *in2 = (t_float *)(w[2]); - t_float *out = (t_float *)(w[3]); + t_sample *in1 = (t_sample *)(w[1]); + t_sample *in2 = (t_sample *)(w[2]); + t_sample *out = (t_sample *)(w[3]); int n = (int)(w[4]); for (; n; n -= 8, in1 += 8, in2 += 8, out += 8) { - float f0 = in1[0], f1 = in1[1], f2 = in1[2], f3 = in1[3]; - float f4 = in1[4], f5 = in1[5], f6 = in1[6], f7 = in1[7]; + t_sample f0 = in1[0], f1 = in1[1], f2 = in1[2], f3 = in1[3]; + t_sample f4 = in1[4], f5 = in1[5], f6 = in1[6], f7 = in1[7]; - float g0 = in2[0], g1 = in2[1], g2 = in2[2], g3 = in2[3]; - float g4 = in2[4], g5 = in2[5], g6 = in2[6], g7 = in2[7]; + t_sample g0 = in2[0], g1 = in2[1], g2 = in2[2], g3 = in2[3]; + t_sample g4 = in2[4], g5 = in2[5], g6 = in2[6], g7 = in2[7]; out[0] = f0 * g0; out[1] = f1 * g1; out[2] = f2 * g2; out[3] = f3 * g3; out[4] = f4 * g4; out[5] = f5 * g5; out[6] = f6 * g6; out[7] = f7 * g7; @@ -344,9 +344,9 @@ t_int *times_perf8(t_int *w) t_int *scalartimes_perform(t_int *w) { - t_float *in = (t_float *)(w[1]); + t_sample *in = (t_sample *)(w[1]); t_float f = *(t_float *)(w[2]); - t_float *out = (t_float *)(w[3]); + t_sample *out = (t_sample *)(w[3]); int n = (int)(w[4]); while (n--) *out++ = *in++ * f; return (w+5); @@ -354,14 +354,14 @@ t_int *scalartimes_perform(t_int *w) t_int *scalartimes_perf8(t_int *w) { - t_float *in = (t_float *)(w[1]); + t_sample *in = (t_sample *)(w[1]); t_float g = *(t_float *)(w[2]); - t_float *out = (t_float *)(w[3]); + t_sample *out = (t_sample *)(w[3]); int n = (int)(w[4]); for (; n; n -= 8, in += 8, out += 8) { - float f0 = in[0], f1 = in[1], f2 = in[2], f3 = in[3]; - float f4 = in[4], f5 = in[5], f6 = in[6], f7 = in[7]; + t_sample f0 = in[0], f1 = in[1], f2 = in[2], f3 = in[3]; + t_sample f4 = in[4], f5 = in[5], f6 = in[6], f7 = in[7]; out[0] = f0 * g; out[1] = f1 * g; out[2] = f2 * g; out[3] = f3 * g; out[4] = f4 * g; out[5] = f5 * g; out[6] = f6 * g; out[7] = f7 * g; @@ -410,13 +410,13 @@ static t_class *over_class, *scalarover_class; typedef struct _over { t_object x_obj; - float x_f; + t_float x_f; } t_over; typedef struct _scalarover { t_object x_obj; - float x_f; + t_float x_f; t_float x_g; } t_scalarover; @@ -444,13 +444,13 @@ static void *over_new(t_symbol *s, int argc, t_atom *argv) t_int *over_perform(t_int *w) { - t_float *in1 = (t_float *)(w[1]); - t_float *in2 = (t_float *)(w[2]); - t_float *out = (t_float *)(w[3]); + t_sample *in1 = (t_sample *)(w[1]); + t_sample *in2 = (t_sample *)(w[2]); + t_sample *out = (t_sample *)(w[3]); int n = (int)(w[4]); while (n--) { - float g = *in2++; + t_sample g = *in2++; *out++ = (g ? *in1++ / g : 0); } return (w+5); @@ -458,17 +458,17 @@ t_int *over_perform(t_int *w) t_int *over_perf8(t_int *w) { - t_float *in1 = (t_float *)(w[1]); - t_float *in2 = (t_float *)(w[2]); - t_float *out = (t_float *)(w[3]); + t_sample *in1 = (t_sample *)(w[1]); + t_sample *in2 = (t_sample *)(w[2]); + t_sample *out = (t_sample *)(w[3]); int n = (int)(w[4]); for (; n; n -= 8, in1 += 8, in2 += 8, out += 8) { - float f0 = in1[0], f1 = in1[1], f2 = in1[2], f3 = in1[3]; - float f4 = in1[4], f5 = in1[5], f6 = in1[6], f7 = in1[7]; + t_sample f0 = in1[0], f1 = in1[1], f2 = in1[2], f3 = in1[3]; + t_sample f4 = in1[4], f5 = in1[5], f6 = in1[6], f7 = in1[7]; - float g0 = in2[0], g1 = in2[1], g2 = in2[2], g3 = in2[3]; - float g4 = in2[4], g5 = in2[5], g6 = in2[6], g7 = in2[7]; + t_sample g0 = in2[0], g1 = in2[1], g2 = in2[2], g3 = in2[3]; + t_sample g4 = in2[4], g5 = in2[5], g6 = in2[6], g7 = in2[7]; out[0] = (g0? f0 / g0 : 0); out[1] = (g1? f1 / g1 : 0); @@ -484,9 +484,9 @@ t_int *over_perf8(t_int *w) t_int *scalarover_perform(t_int *w) { - t_float *in = (t_float *)(w[1]); + t_sample *in = (t_sample *)(w[1]); t_float f = *(t_float *)(w[2]); - t_float *out = (t_float *)(w[3]); + t_sample *out = (t_sample *)(w[3]); int n = (int)(w[4]); if(f) f = 1./f; while (n--) *out++ = *in++ * f; @@ -495,15 +495,15 @@ t_int *scalarover_perform(t_int *w) t_int *scalarover_perf8(t_int *w) { - t_float *in = (t_float *)(w[1]); + t_sample *in = (t_sample *)(w[1]); t_float g = *(t_float *)(w[2]); - t_float *out = (t_float *)(w[3]); + t_sample *out = (t_sample *)(w[3]); int n = (int)(w[4]); if (g) g = 1.f / g; for (; n; n -= 8, in += 8, out += 8) { - float f0 = in[0], f1 = in[1], f2 = in[2], f3 = in[3]; - float f4 = in[4], f5 = in[5], f6 = in[6], f7 = in[7]; + t_sample f0 = in[0], f1 = in[1], f2 = in[2], f3 = in[3]; + t_sample f4 = in[4], f5 = in[5], f6 = in[6], f7 = in[7]; out[0] = f0 * g; out[1] = f1 * g; out[2] = f2 * g; out[3] = f3 * g; out[4] = f4 * g; out[5] = f5 * g; out[6] = f6 * g; out[7] = f7 * g; @@ -552,13 +552,13 @@ static t_class *max_class, *scalarmax_class; typedef struct _max { t_object x_obj; - float x_f; + t_float x_f; } t_max; typedef struct _scalarmax { t_object x_obj; - float x_f; + t_float x_f; t_float x_g; } t_scalarmax; @@ -586,13 +586,13 @@ static void *max_new(t_symbol *s, int argc, t_atom *argv) t_int *max_perform(t_int *w) { - t_float *in1 = (t_float *)(w[1]); - t_float *in2 = (t_float *)(w[2]); - t_float *out = (t_float *)(w[3]); + t_sample *in1 = (t_sample *)(w[1]); + t_sample *in2 = (t_sample *)(w[2]); + t_sample *out = (t_sample *)(w[3]); int n = (int)(w[4]); while (n--) { - float f = *in1++, g = *in2++; + t_sample f = *in1++, g = *in2++; *out++ = (f > g ? f : g); } return (w+5); @@ -600,17 +600,17 @@ t_int *max_perform(t_int *w) t_int *max_perf8(t_int *w) { - t_float *in1 = (t_float *)(w[1]); - t_float *in2 = (t_float *)(w[2]); - t_float *out = (t_float *)(w[3]); + t_sample *in1 = (t_sample *)(w[1]); + t_sample *in2 = (t_sample *)(w[2]); + t_sample *out = (t_sample *)(w[3]); int n = (int)(w[4]); for (; n; n -= 8, in1 += 8, in2 += 8, out += 8) { - float f0 = in1[0], f1 = in1[1], f2 = in1[2], f3 = in1[3]; - float f4 = in1[4], f5 = in1[5], f6 = in1[6], f7 = in1[7]; + t_sample f0 = in1[0], f1 = in1[1], f2 = in1[2], f3 = in1[3]; + t_sample f4 = in1[4], f5 = in1[5], f6 = in1[6], f7 = in1[7]; - float g0 = in2[0], g1 = in2[1], g2 = in2[2], g3 = in2[3]; - float g4 = in2[4], g5 = in2[5], g6 = in2[6], g7 = in2[7]; + t_sample g0 = in2[0], g1 = in2[1], g2 = in2[2], g3 = in2[3]; + t_sample g4 = in2[4], g5 = in2[5], g6 = in2[6], g7 = in2[7]; out[0] = (f0 > g0 ? f0 : g0); out[1] = (f1 > g1 ? f1 : g1); out[2] = (f2 > g2 ? f2 : g2); out[3] = (f3 > g3 ? f3 : g3); @@ -622,13 +622,13 @@ t_int *max_perf8(t_int *w) t_int *scalarmax_perform(t_int *w) { - t_float *in = (t_float *)(w[1]); + t_sample *in = (t_sample *)(w[1]); t_float f = *(t_float *)(w[2]); - t_float *out = (t_float *)(w[3]); + t_sample *out = (t_sample *)(w[3]); int n = (int)(w[4]); while (n--) { - t_float g = *in++; + t_sample g = *in++; *out++ = (f > g ? f : g); } return (w+5); @@ -636,14 +636,14 @@ t_int *scalarmax_perform(t_int *w) t_int *scalarmax_perf8(t_int *w) { - t_float *in = (t_float *)(w[1]); + t_sample *in = (t_sample *)(w[1]); t_float g = *(t_float *)(w[2]); - t_float *out = (t_float *)(w[3]); + t_sample *out = (t_sample *)(w[3]); int n = (int)(w[4]); for (; n; n -= 8, in += 8, out += 8) { - float f0 = in[0], f1 = in[1], f2 = in[2], f3 = in[3]; - float f4 = in[4], f5 = in[5], f6 = in[6], f7 = in[7]; + t_sample f0 = in[0], f1 = in[1], f2 = in[2], f3 = in[3]; + t_sample f4 = in[4], f5 = in[5], f6 = in[6], f7 = in[7]; out[0] = (f0 > g ? f0 : g); out[1] = (f1 > g ? f1 : g); out[2] = (f2 > g ? f2 : g); out[3] = (f3 > g ? f3 : g); @@ -694,14 +694,14 @@ static t_class *min_class, *scalarmin_class; typedef struct _min { t_object x_obj; - float x_f; + t_float x_f; } t_min; typedef struct _scalarmin { t_object x_obj; t_float x_g; - float x_f; + t_float x_f; } t_scalarmin; static void *min_new(t_symbol *s, int argc, t_atom *argv) @@ -728,13 +728,13 @@ static void *min_new(t_symbol *s, int argc, t_atom *argv) t_int *min_perform(t_int *w) { - t_float *in1 = (t_float *)(w[1]); - t_float *in2 = (t_float *)(w[2]); - t_float *out = (t_float *)(w[3]); + t_sample *in1 = (t_sample *)(w[1]); + t_sample *in2 = (t_sample *)(w[2]); + t_sample *out = (t_sample *)(w[3]); int n = (int)(w[4]); while (n--) { - float f = *in1++, g = *in2++; + t_sample f = *in1++, g = *in2++; *out++ = (f < g ? f : g); } return (w+5); @@ -742,17 +742,17 @@ t_int *min_perform(t_int *w) t_int *min_perf8(t_int *w) { - t_float *in1 = (t_float *)(w[1]); - t_float *in2 = (t_float *)(w[2]); - t_float *out = (t_float *)(w[3]); + t_sample *in1 = (t_sample *)(w[1]); + t_sample *in2 = (t_sample *)(w[2]); + t_sample *out = (t_sample *)(w[3]); int n = (int)(w[4]); for (; n; n -= 8, in1 += 8, in2 += 8, out += 8) { - float f0 = in1[0], f1 = in1[1], f2 = in1[2], f3 = in1[3]; - float f4 = in1[4], f5 = in1[5], f6 = in1[6], f7 = in1[7]; + t_sample f0 = in1[0], f1 = in1[1], f2 = in1[2], f3 = in1[3]; + t_sample f4 = in1[4], f5 = in1[5], f6 = in1[6], f7 = in1[7]; - float g0 = in2[0], g1 = in2[1], g2 = in2[2], g3 = in2[3]; - float g4 = in2[4], g5 = in2[5], g6 = in2[6], g7 = in2[7]; + t_sample g0 = in2[0], g1 = in2[1], g2 = in2[2], g3 = in2[3]; + t_sample g4 = in2[4], g5 = in2[5], g6 = in2[6], g7 = in2[7]; out[0] = (f0 < g0 ? f0 : g0); out[1] = (f1 < g1 ? f1 : g1); out[2] = (f2 < g2 ? f2 : g2); out[3] = (f3 < g3 ? f3 : g3); @@ -764,13 +764,13 @@ t_int *min_perf8(t_int *w) t_int *scalarmin_perform(t_int *w) { - t_float *in = (t_float *)(w[1]); + t_sample *in = (t_sample *)(w[1]); t_float f = *(t_float *)(w[2]); - t_float *out = (t_float *)(w[3]); + t_sample *out = (t_sample *)(w[3]); int n = (int)(w[4]); while (n--) { - t_float g = *in++; + t_sample g = *in++; *out++ = (f < g ? f : g); } return (w+5); @@ -778,14 +778,14 @@ t_int *scalarmin_perform(t_int *w) t_int *scalarmin_perf8(t_int *w) { - t_float *in = (t_float *)(w[1]); + t_sample *in = (t_sample *)(w[1]); t_float g = *(t_float *)(w[2]); t_float *out = (t_float *)(w[3]); int n = (int)(w[4]); for (; n; n -= 8, in += 8, out += 8) { - float f0 = in[0], f1 = in[1], f2 = in[2], f3 = in[3]; - float f4 = in[4], f5 = in[5], f6 = in[6], f7 = in[7]; + t_sample f0 = in[0], f1 = in[1], f2 = in[2], f3 = in[3]; + t_sample f4 = in[4], f5 = in[5], f6 = in[6], f7 = in[7]; out[0] = (f0 < g ? f0 : g); out[1] = (f1 < g ? f1 : g); out[2] = (f2 < g ? f2 : g); out[3] = (f3 < g ? f3 : g); diff --git a/pd/src/d_array.c b/pd/src/d_array.c index d78c26ae..73a18418 100644 --- a/pd/src/d_array.c +++ b/pd/src/d_array.c @@ -20,7 +20,7 @@ typedef struct _tabwrite_tilde int x_nsampsintab; t_word *x_vec; t_symbol *x_arrayname; - float x_f; + t_float x_f; } t_tabwrite_tilde; static void tabwrite_tilde_tick(t_tabwrite_tilde *x); @@ -45,7 +45,7 @@ static void tabwrite_tilde_redraw(t_tabwrite_tilde *x) static t_int *tabwrite_tilde_perform(t_int *w) { t_tabwrite_tilde *x = (t_tabwrite_tilde *)(w[1]); - t_float *in = (t_float *)(w[2]); + t_sample *in = (t_sample *)(w[2]); int n = (int)(w[3]), phase = x->x_phase, endphase = x->x_nsampsintab; if (!x->x_vec) goto bad; @@ -57,7 +57,7 @@ static t_int *tabwrite_tilde_perform(t_int *w) phase += nxfer; while (nxfer--) { - float f = *in++; + t_sample f = *in++; if (PD_BIGORSMALL(f)) f = 0; (wp++)->w_float = f; @@ -168,7 +168,7 @@ static void *tabplay_tilde_new(t_symbol *s) static t_int *tabplay_tilde_perform(t_int *w) { t_tabplay_tilde *x = (t_tabplay_tilde *)(w[1]); - t_float *out = (t_float *)(w[2]); + t_sample *out = (t_sample *)(w[2]); t_word *wp; int n = (int)(w[3]), phase = x->x_phase, endphase = (x->x_nsampsintab < x->x_limit ? @@ -276,7 +276,7 @@ typedef struct _tabread_tilde int x_npoints; t_word *x_vec; t_symbol *x_arrayname; - float x_f; + t_float x_f; } t_tabread_tilde; static void *tabread_tilde_new(t_symbol *s) @@ -292,8 +292,8 @@ static void *tabread_tilde_new(t_symbol *s) static t_int *tabread_tilde_perform(t_int *w) { t_tabread_tilde *x = (t_tabread_tilde *)(w[1]); - t_float *in = (t_float *)(w[2]); - t_float *out = (t_float *)(w[3]); + t_sample *in = (t_sample *)(w[2]); + t_sample *out = (t_sample *)(w[3]); int n = (int)(w[4]); int maxindex; t_word *buf = x->x_vec; @@ -372,7 +372,7 @@ typedef struct _tabread4_tilde int x_npoints; t_word *x_vec; t_symbol *x_arrayname; - float x_f; + t_float x_f; } t_tabread4_tilde; static void *tabread4_tilde_new(t_symbol *s) @@ -388,8 +388,8 @@ static void *tabread4_tilde_new(t_symbol *s) static t_int *tabread4_tilde_perform(t_int *w) { t_tabread4_tilde *x = (t_tabread4_tilde *)(w[1]); - t_float *in = (t_float *)(w[2]); - t_float *out = (t_float *)(w[3]); + t_sample *in = (t_sample *)(w[2]); + t_sample *out = (t_sample *)(w[3]); int n = (int)(w[4]); int maxindex; t_word *buf = x->x_vec, *wp; @@ -402,7 +402,7 @@ static t_int *tabread4_tilde_perform(t_int *w) #if 0 /* test for spam -- I'm not ready to deal with this */ for (i = 0, xmax = 0, xmin = maxindex, fp = in1; i < n; i++, fp++) { - float f = *in1; + t_sample f = *in1; if (f < xmin) xmin = f; else if (f > xmax) xmax = f; } @@ -410,16 +410,16 @@ static t_int *tabread4_tilde_perform(t_int *w) for (i = 0, splitlo = xmin+ x->c_maxextent, splithi = xmax - x->c_maxextent, fp = in1; i < n; i++, fp++) { - float f = *in1; + t_sample f = *in1; if (f > splitlo && f < splithi) goto zero; } #endif for (i = 0; i < n; i++) { - float findex = *in++; + t_sample findex = *in++; int index = findex; - float frac, a, b, c, d, cminusb; + t_sample frac, a, b, c, d, cminusb; static int count; if (index < 1) index = 1, frac = 0; @@ -547,13 +547,13 @@ static t_class *tabosc4_tilde_class; typedef struct _tabosc4_tilde { t_object x_obj; - float x_fnpoints; - float x_finvnpoints; + t_float x_fnpoints; + t_float x_finvnpoints; t_word *x_vec; t_symbol *x_arrayname; - float x_f; + t_float x_f; double x_phase; - float x_conv; + t_float x_conv; } t_tabosc4_tilde; static void *tabosc4_tilde_new(t_symbol *s) @@ -572,14 +572,14 @@ static void *tabosc4_tilde_new(t_symbol *s) static t_int *tabosc4_tilde_perform(t_int *w) { t_tabosc4_tilde *x = (t_tabosc4_tilde *)(w[1]); - t_float *in = (t_float *)(w[2]); - t_float *out = (t_float *)(w[3]); + t_sample *in = (t_sample *)(w[2]); + t_sample *out = (t_sample *)(w[3]); int n = (int)(w[4]); int normhipart; union tabfudge tf; - float fnpoints = x->x_fnpoints; + t_float fnpoints = x->x_fnpoints; int mask = fnpoints - 1; - float conv = fnpoints * x->x_conv; + t_float conv = fnpoints * x->x_conv; int maxindex; t_word *tab = x->x_vec, *addr; int i; @@ -592,7 +592,7 @@ static t_int *tabosc4_tilde_perform(t_int *w) #if 1 while (n--) { - float frac, a, b, c, d, cminusb; + t_sample frac, a, b, c, d, cminusb; tf.tf_d = dphase; dphase += *in++ * conv; addr = tab + (tf.tf_i[HIOFFSET] & mask); @@ -694,7 +694,7 @@ typedef struct _tabsend int x_graphperiod; int x_graphcount; t_symbol *x_arrayname; - float x_f; + t_float x_f; } t_tabsend; static void tabsend_tick(t_tabsend *x); @@ -711,7 +711,7 @@ static void *tabsend_new(t_symbol *s) static t_int *tabsend_perform(t_int *w) { t_tabsend *x = (t_tabsend *)(w[1]); - t_float *in = (t_float *)(w[2]); + t_sample *in = (t_sample *)(w[2]); int n = w[3]; t_word *dest = x->x_vec; int i = x->x_graphcount; @@ -719,7 +719,7 @@ static t_int *tabsend_perform(t_int *w) while (n--) { - float f = *in++; + t_sample f = *in++; if (PD_BIGORSMALL(f)) f = 0; (dest++)->w_float = f; @@ -785,7 +785,7 @@ typedef struct _tabreceive static t_int *tabreceive_perform(t_int *w) { t_tabreceive *x = (t_tabreceive *)(w[1]); - t_float *out = (t_float *)(w[2]); + t_sample *out = (t_sample *)(w[2]); int n = w[3]; t_word *from = x->x_vec; if (from) @@ -964,7 +964,7 @@ typedef struct _tabwrite { t_object x_obj; t_symbol *x_arrayname; - float x_ft1; + t_float x_ft1; } t_tabwrite; static void tabwrite_float(t_tabwrite *x, t_float f) diff --git a/pd/src/d_ctl.c b/pd/src/d_ctl.c index a33647ce..92467abe 100644 --- a/pd/src/d_ctl.c +++ b/pd/src/d_ctl.c @@ -15,13 +15,13 @@ static t_class *sig_tilde_class; typedef struct _sig { t_object x_obj; - float x_f; + t_float x_f; } t_sig; static t_int *sig_tilde_perform(t_int *w) { t_float f = *(t_float *)(w[1]); - t_float *out = (t_float *)(w[2]); + t_sample *out = (t_sample *)(w[2]); int n = (int)(w[3]); while (n--) *out++ = f; @@ -31,7 +31,7 @@ static t_int *sig_tilde_perform(t_int *w) static t_int *sig_tilde_perf8(t_int *w) { t_float f = *(t_float *)(w[1]); - t_float *out = (t_float *)(w[2]); + t_sample *out = (t_sample *)(w[2]); int n = (int)(w[3]); for (; n; n -= 8, out += 8) @@ -48,7 +48,7 @@ static t_int *sig_tilde_perf8(t_int *w) return (w+4); } -void dsp_add_scalarcopy(t_sample *in, t_sample *out, int n) +void dsp_add_scalarcopy(t_float *in, t_sample *out, int n) { if (n&7) dsp_add(sig_tilde_perform, 3, in, out, n); @@ -88,14 +88,14 @@ static t_class *line_tilde_class; typedef struct _line { t_object x_obj; - float x_target; - float x_value; - float x_biginc; - float x_inc; - float x_1overn; - float x_dspticktomsec; - float x_inletvalue; - float x_inletwas; + t_sample x_target; /* target value of ramp */ + t_sample x_value; /* current value of ramp at block-borders */ + t_sample x_biginc; + t_sample x_inc; + t_float x_1overn; + t_float x_dspticktomsec; + t_float x_inletvalue; + t_float x_inletwas; int x_ticksleft; int x_retarget; } t_line; @@ -103,9 +103,9 @@ typedef struct _line static t_int *line_tilde_perform(t_int *w) { t_line *x = (t_line *)(w[1]); - t_float *out = (t_float *)(w[2]); + t_sample *out = (t_sample *)(w[2]); int n = (int)(w[3]); - float f = x->x_value; + t_sample f = x->x_value; if (PD_BIGORSMALL(f)) x->x_value = f = 0; @@ -114,20 +114,20 @@ static t_int *line_tilde_perform(t_int *w) int nticks = x->x_inletwas * x->x_dspticktomsec; if (!nticks) nticks = 1; x->x_ticksleft = nticks; - x->x_biginc = (x->x_target - x->x_value)/(float)nticks; + x->x_biginc = (x->x_target - x->x_value)/(t_float)nticks; x->x_inc = x->x_1overn * x->x_biginc; x->x_retarget = 0; } if (x->x_ticksleft) { - float f = x->x_value; + t_sample f = x->x_value; while (n--) *out++ = f, f += x->x_inc; x->x_value += x->x_biginc; x->x_ticksleft--; } else { - float g = x->x_value = x->x_target; + t_sample g = x->x_value = x->x_target; while (n--) *out++ = g; } @@ -138,9 +138,9 @@ static t_int *line_tilde_perform(t_int *w) static t_int *line_tilde_perf8(t_int *w) { t_line *x = (t_line *)(w[1]); - t_float *out = (t_float *)(w[2]); + t_sample *out = (t_sample *)(w[2]); int n = (int)(w[3]); - float f = x->x_value; + t_sample f = x->x_value; if (PD_BIGORSMALL(f)) x->x_value = f = 0; @@ -149,20 +149,20 @@ static t_int *line_tilde_perf8(t_int *w) int nticks = x->x_inletwas * x->x_dspticktomsec; if (!nticks) nticks = 1; x->x_ticksleft = nticks; - x->x_biginc = (x->x_target - x->x_value)/(float)nticks; + x->x_biginc = (x->x_target - x->x_value)/(t_sample)nticks; x->x_inc = x->x_1overn * x->x_biginc; x->x_retarget = 0; } if (x->x_ticksleft) { - float f = x->x_value; + t_sample f = x->x_value; while (n--) *out++ = f, f += x->x_inc; x->x_value += x->x_biginc; x->x_ticksleft--; } else { - float f = x->x_value = x->x_target; + t_sample f = x->x_value = x->x_target; for (; n; n -= 8, out += 8) { out[0] = f; out[1] = f; out[2] = f; out[3] = f; @@ -232,7 +232,7 @@ typedef struct _vseg { double s_targettime; double s_starttime; - float s_target; + t_sample s_target; struct _vseg *s_next; } t_vseg; @@ -245,9 +245,9 @@ typedef struct _vline double x_samppermsec; double x_msecpersamp; double x_targettime; - float x_target; - float x_inlet1; - float x_inlet2; + t_sample x_target; + t_float x_inlet1; + t_float x_inlet2; t_vseg *x_list; } t_vline; @@ -320,8 +320,8 @@ static void vline_tilde_stop(t_vline *x) static void vline_tilde_float(t_vline *x, t_float f) { double timenow = clock_gettimesince(x->x_referencetime); - float inlet1 = (x->x_inlet1 < 0 ? 0 : x->x_inlet1); - float inlet2 = x->x_inlet2; + t_float inlet1 = (x->x_inlet1 < 0 ? 0 : x->x_inlet1); + t_float inlet2 = x->x_inlet2; double starttime = timenow + inlet2; t_vseg *s1, *s2, *deletefrom = 0, *snew; if (PD_BIGORSMALL(f)) @@ -416,7 +416,7 @@ typedef struct _snapshot { t_object x_obj; t_sample x_value; - float x_f; + t_float x_f; } t_snapshot; static void *snapshot_tilde_new(void) @@ -430,8 +430,8 @@ static void *snapshot_tilde_new(void) static t_int *snapshot_tilde_perform(t_int *w) { - t_float *in = (t_float *)(w[1]); - t_float *out = (t_float *)(w[2]); + t_sample *in = (t_sample *)(w[1]); + t_sample *out = (t_sample *)(w[2]); *out = *in; return (w+3); } @@ -473,8 +473,8 @@ typedef struct _vsnapshot int x_n; int x_gotone; t_sample *x_vec; - float x_f; - float x_sampspermsec; + t_float x_f; + t_float x_sampspermsec; double x_time; } t_vsnapshot; @@ -491,9 +491,9 @@ static void *vsnapshot_tilde_new(void) static t_int *vsnapshot_tilde_perform(t_int *w) { - t_float *in = (t_float *)(w[1]); + t_sample *in = (t_sample *)(w[1]); t_vsnapshot *x = (t_vsnapshot *)(w[2]); - t_float *out = x->x_vec; + t_sample *out = x->x_vec; int n = x->x_n, i; for (i = 0; i < n; i++) out[i] = in[i]; @@ -519,7 +519,7 @@ static void vsnapshot_tilde_dsp(t_vsnapshot *x, t_signal **sp) static void vsnapshot_tilde_bang(t_vsnapshot *x) { - float val; + t_sample val; if (x->x_gotone) { int indx = clock_gettimesince(x->x_time) * x->x_sampspermsec; @@ -560,14 +560,14 @@ typedef struct sigenv t_object x_obj; /* header */ void *x_outlet; /* a "float" outlet */ void *x_clock; /* a "clock" object */ - float *x_buf; /* a Hanning window */ + t_sample *x_buf; /* a Hanning window */ int x_phase; /* number of points since last output */ int x_period; /* requested period of output */ int x_realperiod; /* period rounded up to vecsize multiple */ int x_npoints; /* analysis window size in samples */ - float x_result; /* result to output */ - float x_sumbuf[MAXOVERLAP]; /* summing buffer */ - float x_f; + t_float x_result; /* result to output */ + t_sample x_sumbuf[MAXOVERLAP]; /* summing buffer */ + t_float x_f; int x_allocforvs; /* extra buffer for DSP vector size */ } t_sigenv; @@ -579,14 +579,14 @@ static void *env_tilde_new(t_floatarg fnpoints, t_floatarg fperiod) int npoints = fnpoints; int period = fperiod; t_sigenv *x; - float *buf; + t_sample *buf; int i; if (npoints < 1) npoints = 1024; if (period < 1) period = npoints/2; if (period < npoints / MAXOVERLAP + 1) period = npoints / MAXOVERLAP + 1; - if (!(buf = getbytes(sizeof(float) * (npoints + INITVSTAKEN)))) + if (!(buf = getbytes(sizeof(t_sample) * (npoints + INITVSTAKEN)))) { error("env: couldn't allocate buffer"); return (0); @@ -610,17 +610,17 @@ static void *env_tilde_new(t_floatarg fnpoints, t_floatarg fperiod) static t_int *env_tilde_perform(t_int *w) { t_sigenv *x = (t_sigenv *)(w[1]); - t_float *in = (t_float *)(w[2]); + t_sample *in = (t_sample *)(w[2]); int n = (int)(w[3]); int count; - float *sump; + t_sample *sump; in += n; for (count = x->x_phase, sump = x->x_sumbuf; count < x->x_npoints; count += x->x_realperiod, sump++) { - float *hp = x->x_buf + count; - float *fp = in; - float sum = *sump; + t_sample *hp = x->x_buf + count; + t_sample *fp = in; + t_sample sum = *sump; int i; for (i = 0; i < n; i++) @@ -653,14 +653,14 @@ static void env_tilde_dsp(t_sigenv *x, t_signal **sp) if (sp[0]->s_n > x->x_allocforvs) { void *xx = resizebytes(x->x_buf, - (x->x_npoints + x->x_allocforvs) * sizeof(float), - (x->x_npoints + sp[0]->s_n) * sizeof(float)); + (x->x_npoints + x->x_allocforvs) * sizeof(t_sample), + (x->x_npoints + sp[0]->s_n) * sizeof(t_sample)); if (!xx) { post("env~: out of memory"); return; } - x->x_buf = (t_float *)xx; + x->x_buf = (t_sample *)xx; x->x_allocforvs = sp[0]->s_n; } dsp_add(env_tilde_perform, 3, x, sp[0]->s_vec, sp[0]->s_n); @@ -674,7 +674,7 @@ static void env_tilde_tick(t_sigenv *x) /* callback function for the clock */ static void env_tilde_ff(t_sigenv *x) /* cleanup on free */ { clock_free(x->x_clock); - freebytes(x->x_buf, (x->x_npoints + x->x_allocforvs) * sizeof(float)); + freebytes(x->x_buf, (x->x_npoints + x->x_allocforvs) * sizeof(*x->x_buf)); } @@ -696,14 +696,14 @@ typedef struct _threshold_tilde t_outlet *x_outlet1; /* bang out for high thresh */ t_outlet *x_outlet2; /* bang out for low thresh */ t_clock *x_clock; /* wakeup for message output */ - float x_f; /* scalar inlet */ + t_float x_f; /* scalar inlet */ int x_state; /* 1 = high, 0 = low */ - float x_hithresh; /* value of high threshold */ - float x_lothresh; /* value of low threshold */ - float x_deadwait; /* msec remaining in dead period */ - float x_msecpertick; /* msec per DSP tick */ - float x_hideadtime; /* hi dead time in msec */ - float x_lodeadtime; /* lo dead time in msec */ + t_float x_hithresh; /* value of high threshold */ + t_float x_lothresh; /* value of low threshold */ + t_float x_deadwait; /* msec remaining in dead period */ + t_float x_msecpertick; /* msec per DSP tick */ + t_float x_hideadtime; /* hi dead time in msec */ + t_float x_lodeadtime; /* lo dead time in msec */ } t_threshold_tilde; static void threshold_tilde_tick(t_threshold_tilde *x); @@ -758,7 +758,7 @@ static void threshold_tilde_tick(t_threshold_tilde *x) static t_int *threshold_tilde_perform(t_int *w) { - float *in1 = (float *)(w[1]); + t_sample *in1 = (t_sample *)(w[1]); t_threshold_tilde *x = (t_threshold_tilde *)(w[2]); int n = (t_int)(w[3]); if (x->x_deadwait > 0) diff --git a/pd/src/d_dac.c b/pd/src/d_dac.c index 77643844..9d206c75 100644 --- a/pd/src/d_dac.c +++ b/pd/src/d_dac.c @@ -16,7 +16,7 @@ typedef struct _dac t_object x_obj; t_int x_n; t_int *x_vec; - float x_f; + t_float x_f; } t_dac; static void *dac_new(t_symbol *s, int argc, t_atom *argv) @@ -103,8 +103,8 @@ static void *adc_new(t_symbol *s, int argc, t_atom *argv) t_int *copy_perform(t_int *w) { - t_float *in1 = (t_float *)(w[1]); - t_float *out = (t_float *)(w[2]); + t_sample *in1 = (t_sample *)(w[1]); + t_sample *out = (t_sample *)(w[2]); int n = (int)(w[3]); while (n--) *out++ = *in1++; return (w+4); @@ -112,20 +112,20 @@ t_int *copy_perform(t_int *w) t_int *copy_perf8(t_int *w) { - t_float *in1 = (t_float *)(w[1]); - t_float *out = (t_float *)(w[2]); + t_sample *in1 = (t_sample *)(w[1]); + t_sample *out = (t_sample *)(w[2]); int n = (int)(w[3]); for (; n; n -= 8, in1 += 8, out += 8) { - float f0 = in1[0]; - float f1 = in1[1]; - float f2 = in1[2]; - float f3 = in1[3]; - float f4 = in1[4]; - float f5 = in1[5]; - float f6 = in1[6]; - float f7 = in1[7]; + t_sample f0 = in1[0]; + t_sample f1 = in1[1]; + t_sample f2 = in1[2]; + t_sample f3 = in1[3]; + t_sample f4 = in1[4]; + t_sample f5 = in1[5]; + t_sample f6 = in1[6]; + t_sample f7 = in1[7]; out[0] = f0; out[1] = f1; diff --git a/pd/src/d_delay.c b/pd/src/d_delay.c index 8ba5a0a5..98cc1149 100644 --- a/pd/src/d_delay.c +++ b/pd/src/d_delay.c @@ -16,7 +16,7 @@ static t_class *sigdelwrite_class; typedef struct delwritectl { int c_n; - float *c_vec; + t_sample *c_vec; int c_phase; } t_delwritectl; @@ -28,7 +28,7 @@ typedef struct _sigdelwrite int x_sortno; /* DSP sort number at which this was last put on chain */ int x_rsortno; /* DSP sort # for first delread or write in chain */ int x_vecsize; /* vector size for delread~ to use */ - float x_f; + t_float x_f; } t_sigdelwrite; #define XTRASAMPS 4 @@ -59,13 +59,13 @@ static void *sigdelwrite_new(t_symbol *s, t_floatarg msec) if (!*s->s_name) s = gensym("delwrite~"); pd_bind(&x->x_obj.ob_pd, s); x->x_sym = s; - nsamps = msec * sys_getsr() * (float)(0.001f); + nsamps = msec * sys_getsr() * (t_float)(0.001f); if (nsamps < 1) nsamps = 1; nsamps += ((- nsamps) & (SAMPBLK - 1)); nsamps += DEFDELVS; x->x_cspace.c_n = nsamps; x->x_cspace.c_vec = - (float *)getbytes((nsamps + XTRASAMPS) * sizeof(float)); + (t_sample *)getbytes((nsamps + XTRASAMPS) * sizeof(t_sample)); x->x_cspace.c_phase = XTRASAMPS; x->x_sortno = 0; x->x_vecsize = 0; @@ -75,15 +75,16 @@ static void *sigdelwrite_new(t_symbol *s, t_floatarg msec) static t_int *sigdelwrite_perform(t_int *w) { - t_float *in = (t_float *)(w[1]); + t_sample *in = (t_sample *)(w[1]); t_delwritectl *c = (t_delwritectl *)(w[2]); int n = (int)(w[3]); int phase = c->c_phase, nsamps = c->c_n; - float *vp = c->c_vec, *bp = vp + phase, *ep = vp + (c->c_n + XTRASAMPS); + t_sample *vp = c->c_vec, *bp = vp + phase, *ep = vp + (c->c_n + XTRASAMPS); phase += n; + while (n--) { - float f = *in++; + t_sample f = *in++; if (PD_BIGORSMALL(f)) f = 0; *bp++ = f; @@ -97,6 +98,8 @@ static t_int *sigdelwrite_perform(t_int *w) phase -= nsamps; } } + bp = vp + c->c_phase; + c->c_phase = phase; return (w+4); } @@ -112,7 +115,7 @@ static void sigdelwrite_free(t_sigdelwrite *x) { pd_unbind(&x->x_obj.ob_pd, x->x_sym); freebytes(x->x_cspace.c_vec, - (x->x_cspace.c_n + XTRASAMPS) * sizeof(float)); + (x->x_cspace.c_n + XTRASAMPS) * sizeof(t_sample)); } static void sigdelwrite_setup(void) @@ -172,15 +175,15 @@ static void sigdelread_float(t_sigdelread *x, t_float f) static t_int *sigdelread_perform(t_int *w) { - t_float *out = (t_float *)(w[1]); + t_sample *out = (t_sample *)(w[1]); t_delwritectl *c = (t_delwritectl *)(w[2]); int delsamps = *(int *)(w[3]); int n = (int)(w[4]); int phase = c->c_phase - delsamps, nsamps = c->c_n; - float *vp = c->c_vec, *bp, *ep = vp + (c->c_n + XTRASAMPS); - + t_sample *vp = c->c_vec, *bp, *ep = vp + (c->c_n + XTRASAMPS); if (phase < 0) phase += nsamps; bp = vp + phase; + while (n--) { *out++ = *bp++; @@ -228,7 +231,7 @@ typedef struct _sigvd t_symbol *x_sym; t_float x_sr; /* samples per msec */ int x_zerodel; /* 0 or vecsize depending on read/write order */ - float x_f; + t_float x_f; } t_sigvd; static void *sigvd_new(t_symbol *s) @@ -245,28 +248,28 @@ static void *sigvd_new(t_symbol *s) static t_int *sigvd_perform(t_int *w) { - t_float *in = (t_float *)(w[1]); - t_float *out = (t_float *)(w[2]); + t_sample *in = (t_sample *)(w[1]); + t_sample *out = (t_sample *)(w[2]); t_delwritectl *ctl = (t_delwritectl *)(w[3]); t_sigvd *x = (t_sigvd *)(w[4]); int n = (int)(w[5]); int nsamps = ctl->c_n; - float limit = nsamps - n - 1; - float fn = n-1; - float *vp = ctl->c_vec, *bp, *wp = vp + ctl->c_phase; - float zerodel = x->x_zerodel; + t_sample limit = nsamps - n - 1; + t_sample fn = n-1; + t_sample *vp = ctl->c_vec, *bp, *wp = vp + ctl->c_phase; + t_sample zerodel = x->x_zerodel; while (n--) { - float delsamps = x->x_sr * *in++ - zerodel, frac; + t_sample delsamps = x->x_sr * *in++ - zerodel, frac; int idelsamps; - float a, b, c, d, cminusb; + t_sample a, b, c, d, cminusb; if (delsamps < 1.00001f) delsamps = 1.00001f; if (delsamps > limit) delsamps = limit; delsamps += fn; fn = fn - 1.0f; idelsamps = delsamps; - frac = delsamps - (float)idelsamps; + frac = delsamps - (t_sample)idelsamps; bp = wp - idelsamps; if (bp < vp + 4) bp += nsamps; d = bp[-3]; diff --git a/pd/src/d_fft.c b/pd/src/d_fft.c index 006a985a..464f48d1 100644 --- a/pd/src/d_fft.c +++ b/pd/src/d_fft.c @@ -16,12 +16,12 @@ linked in. The configure script can be used to select which one. /* swap two arrays */ static t_int *sigfft_swap(t_int *w) { - float *in1 = (t_float *)(w[1]); - float *in2 = (t_float *)(w[2]); + t_sample *in1 = (t_sample *)(w[1]); + t_sample *in2 = (t_sample *)(w[2]); int n = w[3]; for (;n--; in1++, in2++) { - float f = *in1; + t_sample f = *in1; *in1 = *in2; *in2 = f; } @@ -34,8 +34,8 @@ static t_int *sigfft_swap(t_int *w) static t_int *sigrfft_flip(t_int *w) { - float *in = (t_float *)(w[1]); - float *out = (t_float *)(w[2]); + t_sample *in = (t_sample *)(w[1]); + t_sample *out = (t_sample *)(w[2]); int n = w[3]; while (n--) *(--out) = - *in++; @@ -48,7 +48,7 @@ static t_class *sigfft_class, *sigifft_class; typedef struct fft { t_object x_obj; - float x_f; + t_float x_f; } t_sigfft; static void *sigfft_new(void) @@ -73,8 +73,8 @@ static void *sigifft_new(void) static t_int *sigfft_perform(t_int *w) { - float *in1 = (t_float *)(w[1]); - float *in2 = (t_float *)(w[2]); + t_sample *in1 = (t_sample *)(w[1]); + t_sample *in2 = (t_sample *)(w[2]); int n = w[3]; mayer_fft(n, in1, in2); return (w+4); @@ -82,8 +82,8 @@ static t_int *sigfft_perform(t_int *w) static t_int *sigifft_perform(t_int *w) { - float *in1 = (t_float *)(w[1]); - float *in2 = (t_float *)(w[2]); + t_sample *in1 = (t_sample *)(w[1]); + t_sample *in2 = (t_sample *)(w[2]); int n = w[3]; mayer_ifft(n, in1, in2); return (w+4); @@ -92,10 +92,10 @@ static t_int *sigifft_perform(t_int *w) static void sigfft_dspx(t_sigfft *x, t_signal **sp, t_int *(*f)(t_int *w)) { int n = sp[0]->s_n; - float *in1 = sp[0]->s_vec; - float *in2 = sp[1]->s_vec; - float *out1 = sp[2]->s_vec; - float *out2 = sp[3]->s_vec; + t_sample *in1 = sp[0]->s_vec; + t_sample *in2 = sp[1]->s_vec; + t_sample *out1 = sp[2]->s_vec; + t_sample *out2 = sp[3]->s_vec; if (out1 == in2 && out2 == in1) dsp_add(sigfft_swap, 3, out1, out2, n); else if (out1 == in2) @@ -142,7 +142,7 @@ static t_class *sigrfft_class; typedef struct rfft { t_object x_obj; - float x_f; + t_float x_f; } t_sigrfft; static void *sigrfft_new(void) @@ -156,7 +156,7 @@ static void *sigrfft_new(void) static t_int *sigrfft_perform(t_int *w) { - float *in = (t_float *)(w[1]); + t_sample *in = (t_sample *)(w[1]); int n = w[2]; mayer_realfft(n, in); return (w+3); @@ -165,9 +165,9 @@ static t_int *sigrfft_perform(t_int *w) static void sigrfft_dsp(t_sigrfft *x, t_signal **sp) { int n = sp[0]->s_n, n2 = (n>>1); - float *in1 = sp[0]->s_vec; - float *out1 = sp[1]->s_vec; - float *out2 = sp[2]->s_vec; + t_sample *in1 = sp[0]->s_vec; + t_sample *out1 = sp[1]->s_vec; + t_sample *out2 = sp[2]->s_vec; if (n < 4) { error("fft: minimum 4 points"); @@ -199,7 +199,7 @@ static t_class *sigrifft_class; typedef struct rifft { t_object x_obj; - float x_f; + t_float x_f; } t_sigrifft; static void *sigrifft_new(void) @@ -213,7 +213,7 @@ static void *sigrifft_new(void) static t_int *sigrifft_perform(t_int *w) { - float *in = (t_float *)(w[1]); + t_sample *in = (t_sample *)(w[1]); int n = w[2]; mayer_realifft(n, in); return (w+3); @@ -222,9 +222,9 @@ static t_int *sigrifft_perform(t_int *w) static void sigrifft_dsp(t_sigrifft *x, t_signal **sp) { int n = sp[0]->s_n, n2 = (n>>1); - float *in1 = sp[0]->s_vec; - float *in2 = sp[1]->s_vec; - float *out1 = sp[2]->s_vec; + t_sample *in1 = sp[0]->s_vec; + t_sample *in2 = sp[1]->s_vec; + t_sample *out1 = sp[2]->s_vec; if (n < 4) { error("fft: minimum 4 points"); @@ -259,7 +259,7 @@ static t_class *sigframp_class; typedef struct framp { t_object x_obj; - float x_f; + t_float x_f; } t_sigframp; static void *sigframp_new(void) @@ -274,15 +274,15 @@ static void *sigframp_new(void) static t_int *sigframp_perform(t_int *w) { - float *inreal = (t_float *)(w[1]); - float *inimag = (t_float *)(w[2]); - float *outfreq = (t_float *)(w[3]); - float *outamp = (t_float *)(w[4]); - float lastreal = 0, currentreal = inreal[0], nextreal = inreal[1]; - float lastimag = 0, currentimag = inimag[0], nextimag = inimag[1]; + t_sample *inreal = (t_sample *)(w[1]); + t_sample *inimag = (t_sample *)(w[2]); + t_sample *outfreq = (t_sample *)(w[3]); + t_sample *outamp = (t_sample *)(w[4]); + t_sample lastreal = 0, currentreal = inreal[0], nextreal = inreal[1]; + t_sample lastimag = 0, currentimag = inimag[0], nextimag = inimag[1]; int n = w[5]; int m = n + 1; - float fbin = 1, oneovern2 = 1.f/((float)n * (float)n); + t_sample fbin = 1, oneovern2 = 1.f/((t_sample)n * (t_sample)n); inreal += 2; inimag += 2; @@ -290,7 +290,7 @@ static t_int *sigframp_perform(t_int *w) n -= 2; while (n--) { - float re, im, pow, freq; + t_sample re, im, pow, freq; lastreal = currentreal; currentreal = nextreal; nextreal = *inreal++; @@ -302,7 +302,7 @@ static t_int *sigframp_perform(t_int *w) pow = re * re + im * im; if (pow > 1e-19) { - float detune = ((lastreal - nextreal) * re + + t_sample detune = ((lastreal - nextreal) * re + (lastimag - nextimag) * im) / (2.0f * pow); if (detune > 2 || detune < -2) freq = pow = 0; else freq = fbin + detune; diff --git a/pd/src/d_fft_fftsg.c b/pd/src/d_fft_fftsg.c index 4d89ef7b..1fed1e6e 100644 --- a/pd/src/d_fft_fftsg.c +++ b/pd/src/d_fft_fftsg.c @@ -71,16 +71,16 @@ static int ooura_init( int n) return (1); } -EXTERN void mayer_fht(float *fz, int n) +EXTERN void mayer_fht(t_sample *fz, int n) { post("FHT: not yet implemented"); } -EXTERN void mayer_dofft(float *fz1, float *fz2, int n, int sgn) +EXTERN void mayer_dofft(t_sample *fz1, t_sample *fz2, int n, int sgn) { FFTFLT *buf, *fp3; int i; - float *fp1, *fp2; + t_sample *fp1, *fp2; buf = alloca(n * (2 * sizeof(FFTFLT))); if (!ooura_init(n)) return; @@ -99,21 +99,21 @@ EXTERN void mayer_dofft(float *fz1, float *fz2, int n, int sgn) } } -EXTERN void mayer_fft(int n, float *fz1, float *fz2) +EXTERN void mayer_fft(int n, t_sample *fz1, t_sample *fz2) { mayer_dofft(fz1, fz2, n, -1); } -EXTERN void mayer_ifft(int n, float *fz1, float *fz2) +EXTERN void mayer_ifft(int n, t_sample *fz1, t_sample *fz2) { mayer_dofft(fz1, fz2, n, 1); } -EXTERN void mayer_realfft(int n, float *fz) +EXTERN void mayer_realfft(int n, t_sample *fz) { FFTFLT *buf, *fp3; int i, nover2 = n/2; - float *fp1, *fp2; + t_sample *fp1, *fp2; buf = alloca(n * sizeof(FFTFLT)); if (!ooura_init(n)) return; @@ -127,11 +127,11 @@ EXTERN void mayer_realfft(int n, float *fz) *fp1 = fp3[0], *fp2 = fp3[1]; } -EXTERN void mayer_realifft(int n, float *fz) +EXTERN void mayer_realifft(int n, t_sample *fz) { FFTFLT *buf, *fp3; int i, nover2 = n/2; - float *fp1, *fp2; + t_sample *fp1, *fp2; buf = alloca(n * sizeof(FFTFLT)); if (!ooura_init(n)) return; diff --git a/pd/src/d_fft_mayer.c b/pd/src/d_fft_mayer.c index 860b3120..8df7fb3f 100644 --- a/pd/src/d_fft_mayer.c +++ b/pd/src/d_fft_mayer.c @@ -58,7 +58,7 @@ /* the following is needed only to declare pd_fft() as exportable in MSW */ #include "m_pd.h" -#define REAL float +#define REAL t_sample #define GOOD_TRIG #ifdef GOOD_TRIG diff --git a/pd/src/d_filter.c b/pd/src/d_filter.c index 93aeac4c..18b3b145 100644 --- a/pd/src/d_filter.c +++ b/pd/src/d_filter.c @@ -11,18 +11,18 @@ typedef struct hipctl { - float c_x; - float c_coef; + t_sample c_x; + t_sample c_coef; } t_hipctl; typedef struct sighip { t_object x_obj; - float x_sr; - float x_hz; + t_float x_sr; + t_float x_hz; t_hipctl x_cspace; t_hipctl *x_ctl; - float x_f; + t_float x_f; } t_sighip; t_class *sighip_class; @@ -54,18 +54,18 @@ static void sighip_ft1(t_sighip *x, t_floatarg f) static t_int *sighip_perform(t_int *w) { - float *in = (float *)(w[1]); - float *out = (float *)(w[2]); + t_sample *in = (t_sample *)(w[1]); + t_sample *out = (t_sample *)(w[2]); t_hipctl *c = (t_hipctl *)(w[3]); int n = (t_int)(w[4]); int i; - float last = c->c_x; - float coef = c->c_coef; + t_sample last = c->c_x; + t_sample coef = c->c_coef; if (coef < 1) { for (i = 0; i < n; i++) { - float new = *in++ + coef * last; + t_sample new = *in++ + coef * last; *out++ = new - last; last = new; } @@ -112,18 +112,18 @@ void sighip_setup(void) typedef struct lopctl { - float c_x; - float c_coef; + t_sample c_x; + t_sample c_coef; } t_lopctl; typedef struct siglop { t_object x_obj; - float x_sr; - float x_hz; + t_float x_sr; + t_float x_hz; t_lopctl x_cspace; t_lopctl *x_ctl; - float x_f; + t_float x_f; } t_siglop; t_class *siglop_class; @@ -161,14 +161,14 @@ static void siglop_clear(t_siglop *x, t_floatarg q) static t_int *siglop_perform(t_int *w) { - float *in = (float *)(w[1]); - float *out = (float *)(w[2]); + t_sample *in = (t_sample *)(w[1]); + t_sample *out = (t_sample *)(w[2]); t_lopctl *c = (t_lopctl *)(w[3]); int n = (t_int)(w[4]); int i; - float last = c->c_x; - float coef = c->c_coef; - float feedback = 1 - coef; + t_sample last = c->c_x; + t_sample coef = c->c_coef; + t_sample feedback = 1 - coef; for (i = 0; i < n; i++) last = *out++ = coef * *in++ + feedback * last; if (PD_BIGORSMALL(last)) @@ -202,22 +202,22 @@ void siglop_setup(void) typedef struct bpctl { - float c_x1; - float c_x2; - float c_coef1; - float c_coef2; - float c_gain; + t_sample c_x1; + t_sample c_x2; + t_sample c_coef1; + t_sample c_coef2; + t_sample c_gain; } t_bpctl; typedef struct sigbp { t_object x_obj; - float x_sr; - float x_freq; - float x_q; + t_float x_sr; + t_float x_freq; + t_float x_q; t_bpctl x_cspace; t_bpctl *x_ctl; - float x_f; + t_float x_f; } t_sigbp; t_class *sigbp_class; @@ -239,11 +239,11 @@ static void *sigbp_new(t_floatarg f, t_floatarg q) return (x); } -static float sigbp_qcos(float f) +static t_float sigbp_qcos(t_float f) { if (f >= -(0.5f*3.14159f) && f <= 0.5f*3.14159f) { - float g = f*f; + t_float g = f*f; return (((g*g*g * (-1.0f/720.0f) + g*g*(1.0f/24.0f)) - g*0.5) + 1); } else return (0); @@ -251,7 +251,7 @@ static float sigbp_qcos(float f) static void sigbp_docoef(t_sigbp *x, t_floatarg f, t_floatarg q) { - float r, oneminusr, omega; + t_float r, oneminusr, omega; if (f < 0.001) f = 10; if (q < 0) q = 0; x->x_freq = f; @@ -285,19 +285,19 @@ static void sigbp_clear(t_sigbp *x, t_floatarg q) static t_int *sigbp_perform(t_int *w) { - float *in = (float *)(w[1]); - float *out = (float *)(w[2]); + t_sample *in = (t_sample *)(w[1]); + t_sample *out = (t_sample *)(w[2]); t_bpctl *c = (t_bpctl *)(w[3]); int n = (t_int)(w[4]); int i; - float last = c->c_x1; - float prev = c->c_x2; - float coef1 = c->c_coef1; - float coef2 = c->c_coef2; - float gain = c->c_gain; + t_sample last = c->c_x1; + t_sample prev = c->c_x2; + t_sample coef1 = c->c_coef1; + t_sample coef2 = c->c_coef2; + t_sample gain = c->c_gain; for (i = 0; i < n; i++) { - float output = *in++ + coef1 * last + coef2 * prev; + t_sample output = *in++ + coef1 * last + coef2 * prev; *out++ = gain * output; prev = last; last = output; @@ -338,19 +338,19 @@ void sigbp_setup(void) typedef struct biquadctl { - float c_x1; - float c_x2; - float c_fb1; - float c_fb2; - float c_ff1; - float c_ff2; - float c_ff3; + t_sample c_x1; + t_sample c_x2; + t_sample c_fb1; + t_sample c_fb2; + t_sample c_ff1; + t_sample c_ff2; + t_sample c_ff3; } t_biquadctl; typedef struct sigbiquad { t_object x_obj; - float x_f; + t_float x_f; t_biquadctl x_cspace; t_biquadctl *x_ctl; } t_sigbiquad; @@ -372,21 +372,21 @@ static void *sigbiquad_new(t_symbol *s, int argc, t_atom *argv) static t_int *sigbiquad_perform(t_int *w) { - float *in = (float *)(w[1]); - float *out = (float *)(w[2]); + t_sample *in = (t_sample *)(w[1]); + t_sample *out = (t_sample *)(w[2]); t_biquadctl *c = (t_biquadctl *)(w[3]); int n = (t_int)(w[4]); int i; - float last = c->c_x1; - float prev = c->c_x2; - float fb1 = c->c_fb1; - float fb2 = c->c_fb2; - float ff1 = c->c_ff1; - float ff2 = c->c_ff2; - float ff3 = c->c_ff3; + t_sample last = c->c_x1; + t_sample prev = c->c_x2; + t_sample fb1 = c->c_fb1; + t_sample fb2 = c->c_fb2; + t_sample ff1 = c->c_ff1; + t_sample ff2 = c->c_ff2; + t_sample ff3 = c->c_ff3; for (i = 0; i < n; i++) { - float output = *in++ + fb1 * last + fb2 * prev; + t_sample output = *in++ + fb1 * last + fb2 * prev; if (PD_BIGORSMALL(output)) output = 0; *out++ = ff1 * output + ff2 * last + ff3 * prev; @@ -400,12 +400,12 @@ static t_int *sigbiquad_perform(t_int *w) static void sigbiquad_list(t_sigbiquad *x, t_symbol *s, int argc, t_atom *argv) { - float fb1 = atom_getfloatarg(0, argc, argv); - float fb2 = atom_getfloatarg(1, argc, argv); - float ff1 = atom_getfloatarg(2, argc, argv); - float ff2 = atom_getfloatarg(3, argc, argv); - float ff3 = atom_getfloatarg(4, argc, argv); - float discriminant = fb1 * fb1 + 4 * fb2; + t_float fb1 = atom_getfloatarg(0, argc, argv); + t_float fb2 = atom_getfloatarg(1, argc, argv); + t_float ff1 = atom_getfloatarg(2, argc, argv); + t_float ff2 = atom_getfloatarg(3, argc, argv); + t_float ff3 = atom_getfloatarg(4, argc, argv); + t_float discriminant = fb1 * fb1 + 4 * fb2; t_biquadctl *c = x->x_ctl; if (discriminant < 0) /* imaginary roots -- resonant filter */ { @@ -465,9 +465,9 @@ void sigbiquad_setup(void) typedef struct sigsamphold { t_object x_obj; - float x_f; - float x_lastin; - float x_lastout; + t_float x_f; + t_sample x_lastin; + t_sample x_lastout; } t_sigsamphold; t_class *sigsamphold_class; @@ -485,17 +485,17 @@ static void *sigsamphold_new(void) static t_int *sigsamphold_perform(t_int *w) { - float *in1 = (float *)(w[1]); - float *in2 = (float *)(w[2]); - float *out = (float *)(w[3]); + t_sample *in1 = (t_sample *)(w[1]); + t_sample *in2 = (t_sample *)(w[2]); + t_sample *out = (t_sample *)(w[3]); t_sigsamphold *x = (t_sigsamphold *)(w[4]); int n = (t_int)(w[5]); int i; - float lastin = x->x_lastin; - float lastout = x->x_lastout; + t_sample lastin = x->x_lastin; + t_sample lastout = x->x_lastout; for (i = 0; i < n; i++, *in1++) { - float next = *in2++; + t_sample next = *in2++; if (next < lastin) lastout = *in1; *out++ = lastout; lastin = next; @@ -542,8 +542,8 @@ void sigsamphold_setup(void) typedef struct sigrpole { t_object x_obj; - float x_f; - float x_last; + t_float x_f; + t_sample x_last; } t_sigrpole; t_class *sigrpole_class; @@ -561,17 +561,17 @@ static void *sigrpole_new(t_float f) static t_int *sigrpole_perform(t_int *w) { - float *in1 = (float *)(w[1]); - float *in2 = (float *)(w[2]); - float *out = (float *)(w[3]); + t_sample *in1 = (t_sample *)(w[1]); + t_sample *in2 = (t_sample *)(w[2]); + t_sample *out = (t_sample *)(w[3]); t_sigrpole *x = (t_sigrpole *)(w[4]); int n = (t_int)(w[5]); int i; - float last = x->x_last; + t_sample last = x->x_last; for (i = 0; i < n; i++) { - float next = *in1++; - float coef = *in2++; + t_sample next = *in1++; + t_sample coef = *in2++; *out++ = last = coef * last + next; } if (PD_BIGORSMALL(last)) @@ -615,8 +615,8 @@ void sigrpole_setup(void) typedef struct sigrzero { t_object x_obj; - float x_f; - float x_last; + t_float x_f; + t_sample x_last; } t_sigrzero; t_class *sigrzero_class; @@ -634,17 +634,17 @@ static void *sigrzero_new(t_float f) static t_int *sigrzero_perform(t_int *w) { - float *in1 = (float *)(w[1]); - float *in2 = (float *)(w[2]); - float *out = (float *)(w[3]); + t_sample *in1 = (t_sample *)(w[1]); + t_sample *in2 = (t_sample *)(w[2]); + t_sample *out = (t_sample *)(w[3]); t_sigrzero *x = (t_sigrzero *)(w[4]); int n = (t_int)(w[5]); int i; - float last = x->x_last; + t_sample last = x->x_last; for (i = 0; i < n; i++) { - float next = *in1++; - float coef = *in2++; + t_sample next = *in1++; + t_sample coef = *in2++; *out++ = next - coef * last; last = next; } @@ -687,8 +687,8 @@ void sigrzero_setup(void) typedef struct sigrzero_rev { t_object x_obj; - float x_f; - float x_last; + t_float x_f; + t_sample x_last; } t_sigrzero_rev; t_class *sigrzero_rev_class; @@ -706,17 +706,17 @@ static void *sigrzero_rev_new(t_float f) static t_int *sigrzero_rev_perform(t_int *w) { - float *in1 = (float *)(w[1]); - float *in2 = (float *)(w[2]); - float *out = (float *)(w[3]); + t_sample *in1 = (t_sample *)(w[1]); + t_sample *in2 = (t_sample *)(w[2]); + t_sample *out = (t_sample *)(w[3]); t_sigrzero_rev *x = (t_sigrzero_rev *)(w[4]); int n = (t_int)(w[5]); int i; - float last = x->x_last; + t_sample last = x->x_last; for (i = 0; i < n; i++) { - float next = *in1++; - float coef = *in2++; + t_sample next = *in1++; + t_sample coef = *in2++; *out++ = last - coef * next; last = next; } @@ -760,9 +760,9 @@ void sigrzero_rev_setup(void) typedef struct sigcpole { t_object x_obj; - float x_f; - float x_lastre; - float x_lastim; + t_float x_f; + t_sample x_lastre; + t_sample x_lastim; } t_sigcpole; t_class *sigcpole_class; @@ -786,24 +786,24 @@ static void *sigcpole_new(t_float re, t_float im) static t_int *sigcpole_perform(t_int *w) { - float *inre1 = (float *)(w[1]); - float *inim1 = (float *)(w[2]); - float *inre2 = (float *)(w[3]); - float *inim2 = (float *)(w[4]); - float *outre = (float *)(w[5]); - float *outim = (float *)(w[6]); + t_sample *inre1 = (t_sample *)(w[1]); + t_sample *inim1 = (t_sample *)(w[2]); + t_sample *inre2 = (t_sample *)(w[3]); + t_sample *inim2 = (t_sample *)(w[4]); + t_sample *outre = (t_sample *)(w[5]); + t_sample *outim = (t_sample *)(w[6]); t_sigcpole *x = (t_sigcpole *)(w[7]); int n = (t_int)(w[8]); int i; - float lastre = x->x_lastre; - float lastim = x->x_lastim; + t_sample lastre = x->x_lastre; + t_sample lastim = x->x_lastim; for (i = 0; i < n; i++) { - float nextre = *inre1++; - float nextim = *inim1++; - float coefre = *inre2++; - float coefim = *inim2++; - float tempre = *outre++ = nextre + lastre * coefre - lastim * coefim; + t_sample nextre = *inre1++; + t_sample nextim = *inim1++; + t_sample coefre = *inre2++; + t_sample coefim = *inim2++; + t_sample tempre = *outre++ = nextre + lastre * coefre - lastim * coefim; lastim = *outim++ = nextim + lastre * coefim + lastim * coefre; lastre = tempre; } @@ -853,9 +853,9 @@ void sigcpole_setup(void) typedef struct sigczero { t_object x_obj; - float x_f; - float x_lastre; - float x_lastim; + t_float x_f; + t_sample x_lastre; + t_sample x_lastim; } t_sigczero; t_class *sigczero_class; @@ -879,23 +879,23 @@ static void *sigczero_new(t_float re, t_float im) static t_int *sigczero_perform(t_int *w) { - float *inre1 = (float *)(w[1]); - float *inim1 = (float *)(w[2]); - float *inre2 = (float *)(w[3]); - float *inim2 = (float *)(w[4]); - float *outre = (float *)(w[5]); - float *outim = (float *)(w[6]); + t_sample *inre1 = (t_sample *)(w[1]); + t_sample *inim1 = (t_sample *)(w[2]); + t_sample *inre2 = (t_sample *)(w[3]); + t_sample *inim2 = (t_sample *)(w[4]); + t_sample *outre = (t_sample *)(w[5]); + t_sample *outim = (t_sample *)(w[6]); t_sigczero *x = (t_sigczero *)(w[7]); int n = (t_int)(w[8]); int i; - float lastre = x->x_lastre; - float lastim = x->x_lastim; + t_sample lastre = x->x_lastre; + t_sample lastim = x->x_lastim; for (i = 0; i < n; i++) { - float nextre = *inre1++; - float nextim = *inim1++; - float coefre = *inre2++; - float coefim = *inim2++; + t_sample nextre = *inre1++; + t_sample nextim = *inim1++; + t_sample coefre = *inre2++; + t_sample coefim = *inim2++; *outre++ = nextre - lastre * coefre + lastim * coefim; *outim++ = nextim - lastre * coefim - lastim * coefre; lastre = nextre; @@ -943,9 +943,9 @@ void sigczero_setup(void) typedef struct sigczero_rev { t_object x_obj; - float x_f; - float x_lastre; - float x_lastim; + t_float x_f; + t_sample x_lastre; + t_sample x_lastim; } t_sigczero_rev; t_class *sigczero_rev_class; @@ -969,23 +969,23 @@ static void *sigczero_rev_new(t_float re, t_float im) static t_int *sigczero_rev_perform(t_int *w) { - float *inre1 = (float *)(w[1]); - float *inim1 = (float *)(w[2]); - float *inre2 = (float *)(w[3]); - float *inim2 = (float *)(w[4]); - float *outre = (float *)(w[5]); - float *outim = (float *)(w[6]); + t_sample *inre1 = (t_sample *)(w[1]); + t_sample *inim1 = (t_sample *)(w[2]); + t_sample *inre2 = (t_sample *)(w[3]); + t_sample *inim2 = (t_sample *)(w[4]); + t_sample *outre = (t_sample *)(w[5]); + t_sample *outim = (t_sample *)(w[6]); t_sigczero_rev *x = (t_sigczero_rev *)(w[7]); int n = (t_int)(w[8]); int i; - float lastre = x->x_lastre; - float lastim = x->x_lastim; + t_sample lastre = x->x_lastre; + t_sample lastim = x->x_lastim; for (i = 0; i < n; i++) { - float nextre = *inre1++; - float nextim = *inim1++; - float coefre = *inre2++; - float coefim = *inim2++; + t_sample nextre = *inre1++; + t_sample nextim = *inim1++; + t_sample coefre = *inre2++; + t_sample coefim = *inim2++; /* transfer function is (A bar) - Z^-1, for the same frequency response as 1 - AZ^-1 from czero_tilde. */ *outre++ = lastre - nextre * coefre - nextim * coefim; diff --git a/pd/src/d_global.c b/pd/src/d_global.c index ea6615be..b9a7cae1 100644 --- a/pd/src/d_global.c +++ b/pd/src/d_global.c @@ -17,8 +17,8 @@ typedef struct _sigsend t_object x_obj; t_symbol *x_sym; int x_n; - float *x_vec; - float x_f; + t_sample *x_vec; + t_float x_f; } t_sigsend; static void *sigsend_new(t_symbol *s) @@ -27,16 +27,16 @@ static void *sigsend_new(t_symbol *s) pd_bind(&x->x_obj.ob_pd, s); x->x_sym = s; x->x_n = DEFSENDVS; - x->x_vec = (float *)getbytes(DEFSENDVS * sizeof(float)); - memset((char *)(x->x_vec), 0, DEFSENDVS * sizeof(float)); + x->x_vec = (t_sample *)getbytes(DEFSENDVS * sizeof(t_sample)); + memset((char *)(x->x_vec), 0, DEFSENDVS * sizeof(t_sample)); x->x_f = 0; return (x); } static t_int *sigsend_perform(t_int *w) { - t_float *in = (t_float *)(w[1]); - t_float *out = (t_float *)(w[2]); + t_sample *in = (t_sample *)(w[1]); + t_sample *out = (t_sample *)(w[2]); int n = (int)(w[3]); while (n--) { @@ -57,7 +57,7 @@ static void sigsend_dsp(t_sigsend *x, t_signal **sp) static void sigsend_free(t_sigsend *x) { pd_unbind(&x->x_obj.ob_pd, x->x_sym); - freebytes(x->x_vec, x->x_n * sizeof(float)); + freebytes(x->x_vec, x->x_n * sizeof(t_sample)); } static void sigsend_setup(void) @@ -76,7 +76,7 @@ typedef struct _sigreceive { t_object x_obj; t_symbol *x_sym; - t_float *x_wherefrom; + t_sample *x_wherefrom; int x_n; } t_sigreceive; @@ -93,9 +93,9 @@ static void *sigreceive_new(t_symbol *s) static t_int *sigreceive_perform(t_int *w) { t_sigreceive *x = (t_sigreceive *)(w[1]); - t_float *out = (t_float *)(w[2]); + t_sample *out = (t_sample *)(w[2]); int n = (int)(w[3]); - t_float *in = x->x_wherefrom; + t_sample *in = x->x_wherefrom; if (in) { while (n--) @@ -113,9 +113,9 @@ static t_int *sigreceive_perform(t_int *w) static t_int *sigreceive_perf8(t_int *w) { t_sigreceive *x = (t_sigreceive *)(w[1]); - t_float *out = (t_float *)(w[2]); + t_sample *out = (t_sample *)(w[2]); int n = (int)(w[3]); - t_float *in = x->x_wherefrom; + t_sample *in = x->x_wherefrom; if (in) { for (; n; n -= 8, in += 8, out += 8) @@ -194,7 +194,7 @@ typedef struct _sigcatch t_object x_obj; t_symbol *x_sym; int x_n; - float *x_vec; + t_sample *x_vec; } t_sigcatch; static void *sigcatch_new(t_symbol *s) @@ -203,16 +203,16 @@ static void *sigcatch_new(t_symbol *s) pd_bind(&x->x_obj.ob_pd, s); x->x_sym = s; x->x_n = DEFSENDVS; - x->x_vec = (float *)getbytes(DEFSENDVS * sizeof(float)); - memset((char *)(x->x_vec), 0, DEFSENDVS * sizeof(float)); + x->x_vec = (t_sample *)getbytes(DEFSENDVS * sizeof(t_sample)); + memset((char *)(x->x_vec), 0, DEFSENDVS * sizeof(t_sample)); outlet_new(&x->x_obj, &s_signal); return (x); } static t_int *sigcatch_perform(t_int *w) { - t_float *in = (t_float *)(w[1]); - t_float *out = (t_float *)(w[2]); + t_sample *in = (t_sample *)(w[1]); + t_sample *out = (t_sample *)(w[2]); int n = (int)(w[3]); while (n--) *out++ = *in, *in++ = 0; return (w+4); @@ -221,8 +221,8 @@ static t_int *sigcatch_perform(t_int *w) /* tb: vectorized catch function */ static t_int *sigcatch_perf8(t_int *w) { - t_float *in = (t_float *)(w[1]); - t_float *out = (t_float *)(w[2]); + t_sample *in = (t_sample *)(w[1]); + t_sample *out = (t_sample *)(w[2]); int n = (int)(w[3]); for (; n; n -= 8, in += 8, out += 8) { @@ -250,7 +250,7 @@ static void sigcatch_dsp(t_sigcatch *x, t_signal **sp) static void sigcatch_free(t_sigcatch *x) { pd_unbind(&x->x_obj.ob_pd, x->x_sym); - freebytes(x->x_vec, x->x_n * sizeof(float)); + freebytes(x->x_vec, x->x_n * sizeof(t_sample)); } static void sigcatch_setup(void) @@ -268,7 +268,7 @@ typedef struct _sigthrow { t_object x_obj; t_symbol *x_sym; - t_float *x_whereto; + t_sample *x_whereto; int x_n; t_float x_f; } t_sigthrow; @@ -286,9 +286,9 @@ static void *sigthrow_new(t_symbol *s) static t_int *sigthrow_perform(t_int *w) { t_sigthrow *x = (t_sigthrow *)(w[1]); - t_float *in = (t_float *)(w[2]); + t_sample *in = (t_sample *)(w[2]); int n = (int)(w[3]); - t_float *out = x->x_whereto; + t_sample *out = x->x_whereto; if (out) { while (n--) diff --git a/pd/src/d_math.c b/pd/src/d_math.c index 44f23e3d..213b866e 100644 --- a/pd/src/d_math.c +++ b/pd/src/d_math.c @@ -16,9 +16,9 @@ static t_class *clip_class; typedef struct _clip { t_object x_obj; - float x_f; - t_sample x_lo; - t_sample x_hi; + t_float x_f; + t_float x_lo; + t_float x_hi; } t_clip; static void *clip_new(t_floatarg lo, t_floatarg hi) @@ -36,12 +36,12 @@ static void *clip_new(t_floatarg lo, t_floatarg hi) static t_int *clip_perform(t_int *w) { t_clip *x = (t_clip *)(w[1]); - t_float *in = (t_float *)(w[2]); - t_float *out = (t_float *)(w[3]); + t_sample *in = (t_sample *)(w[2]); + t_sample *out = (t_sample *)(w[3]); int n = (int)(w[4]); while (n--) { - float f = *in++; + t_sample f = *in++; if (f < x->x_lo) f = x->x_lo; if (f > x->x_hi) f = x->x_hi; *out++ = f; @@ -125,7 +125,7 @@ float qrsqrt(float f) {return (q8_rsqrt(f)); } typedef struct sigrsqrt { t_object x_obj; - float x_f; + t_float x_f; } t_sigrsqrt; static t_class *sigrsqrt_class; @@ -140,16 +140,16 @@ static void *sigrsqrt_new(void) static t_int *sigrsqrt_perform(t_int *w) { - float *in = *(t_float **)(w+1), *out = *(t_float **)(w+2); + t_sample *in = *(t_sample **)(w+1), *out = *(t_sample **)(w+2); t_int n = *(t_int *)(w+3); while (n--) { - float f = *in; + t_sample f = *in; long l = *(long *)(in++); if (f < 0) *out++ = 0; else { - float g = rsqrt_exptab[(l >> 23) & 0xff] * + t_sample g = rsqrt_exptab[(l >> 23) & 0xff] * rsqrt_mantissatab[(l >> 13) & 0x3ff]; *out++ = 1.5 * g - 0.5 * g * g * g * f; } @@ -179,7 +179,7 @@ void sigrsqrt_setup(void) typedef struct sigsqrt { t_object x_obj; - float x_f; + t_float x_f; } t_sigsqrt; static t_class *sigsqrt_class; @@ -194,16 +194,16 @@ static void *sigsqrt_new(void) t_int *sigsqrt_perform(t_int *w) /* not static; also used in d_fft.c */ { - float *in = *(t_float **)(w+1), *out = *(t_float **)(w+2); + t_sample *in = *(t_sample **)(w+1), *out = *(t_sample **)(w+2); t_int n = *(t_int *)(w+3); while (n--) { - float f = *in; + t_sample f = *in; long l = *(long *)(in++); if (f < 0) *out++ = 0; else { - float g = rsqrt_exptab[(l >> 23) & 0xff] * + t_sample g = rsqrt_exptab[(l >> 23) & 0xff] * rsqrt_mantissatab[(l >> 13) & 0x3ff]; *out++ = f * (1.5 * g - 0.5 * g * g * g * f); } @@ -230,7 +230,7 @@ void sigsqrt_setup(void) typedef struct wrap { t_object x_obj; - float x_f; + t_float x_f; } t_sigwrap; t_class *sigwrap_class; @@ -245,11 +245,11 @@ static void *sigwrap_new(void) static t_int *sigwrap_perform(t_int *w) { - float *in = *(t_float **)(w+1), *out = *(t_float **)(w+2); + t_sample *in = *(t_sample **)(w+1), *out = *(t_sample **)(w+2); t_int n = *(t_int *)(w+3); while (n--) { - float f = *in++; + t_sample f = *in++; int k = f; if (f > 0) *out++ = f-k; else *out++ = f - (k-1); @@ -275,7 +275,7 @@ void sigwrap_setup(void) typedef struct mtof_tilde { t_object x_obj; - float x_f; + t_float x_f; } t_mtof_tilde; t_class *mtof_tilde_class; @@ -290,11 +290,11 @@ static void *mtof_tilde_new(void) static t_int *mtof_tilde_perform(t_int *w) { - float *in = *(t_float **)(w+1), *out = *(t_float **)(w+2); + t_sample *in = *(t_sample **)(w+1), *out = *(t_sample **)(w+2); t_int n = *(t_int *)(w+3); for (; n--; in++, out++) { - float f = *in; + t_sample f = *in; if (f <= -1500) *out = 0; else { @@ -323,7 +323,7 @@ void mtof_tilde_setup(void) typedef struct ftom_tilde { t_object x_obj; - float x_f; + t_float x_f; } t_ftom_tilde; t_class *ftom_tilde_class; @@ -338,11 +338,11 @@ static void *ftom_tilde_new(void) static t_int *ftom_tilde_perform(t_int *w) { - float *in = *(t_float **)(w+1), *out = *(t_float **)(w+2); + t_sample *in = *(t_sample **)(w+1), *out = *(t_sample **)(w+2); t_int n = *(t_int *)(w+3); for (; n--; *in++, out++) { - float f = *in; + t_sample f = *in; *out = (f > 0 ? 17.3123405046 * log(.12231220585 * f) : -1500); } return (w + 4); @@ -366,7 +366,7 @@ void ftom_tilde_setup(void) typedef struct dbtorms_tilde { t_object x_obj; - float x_f; + t_float x_f; } t_dbtorms_tilde; t_class *dbtorms_tilde_class; @@ -381,11 +381,11 @@ static void *dbtorms_tilde_new(void) static t_int *dbtorms_tilde_perform(t_int *w) { - float *in = *(t_float **)(w+1), *out = *(t_float **)(w+2); + t_sample *in = *(t_sample **)(w+1), *out = *(t_sample **)(w+2); t_int n = *(t_int *)(w+3); for (; n--; in++, out++) { - float f = *in; + t_sample f = *in; if (f <= 0) *out = 0; else { @@ -415,7 +415,7 @@ void dbtorms_tilde_setup(void) typedef struct rmstodb_tilde { t_object x_obj; - float x_f; + t_float x_f; } t_rmstodb_tilde; t_class *rmstodb_tilde_class; @@ -430,15 +430,15 @@ static void *rmstodb_tilde_new(void) static t_int *rmstodb_tilde_perform(t_int *w) { - float *in = *(t_float **)(w+1), *out = *(t_float **)(w+2); + t_sample *in = *(t_sample **)(w+1), *out = *(t_sample **)(w+2); t_int n = *(t_int *)(w+3); for (; n--; in++, out++) { - float f = *in; + t_sample f = *in; if (f <= 0) *out = 0; else { - float g = 100 + 20./LOGTEN * log(f); + t_sample g = 100 + 20./LOGTEN * log(f); *out = (g < 0 ? 0 : g); } } @@ -463,7 +463,7 @@ void rmstodb_tilde_setup(void) typedef struct dbtopow_tilde { t_object x_obj; - float x_f; + t_float x_f; } t_dbtopow_tilde; t_class *dbtopow_tilde_class; @@ -478,11 +478,11 @@ static void *dbtopow_tilde_new(void) static t_int *dbtopow_tilde_perform(t_int *w) { - float *in = *(t_float **)(w+1), *out = *(t_float **)(w+2); + t_sample *in = *(t_sample **)(w+1), *out = *(t_sample **)(w+2); t_int n = *(t_int *)(w+3); for (; n--; in++, out++) { - float f = *in; + t_sample f = *in; if (f <= 0) *out = 0; else { @@ -512,7 +512,7 @@ void dbtopow_tilde_setup(void) typedef struct powtodb_tilde { t_object x_obj; - float x_f; + t_float x_f; } t_powtodb_tilde; t_class *powtodb_tilde_class; @@ -527,15 +527,15 @@ static void *powtodb_tilde_new(void) static t_int *powtodb_tilde_perform(t_int *w) { - float *in = *(t_float **)(w+1), *out = *(t_float **)(w+2); + t_sample *in = *(t_sample **)(w+1), *out = *(t_sample **)(w+2); t_int n = *(t_int *)(w+3); for (; n--; in++, out++) { - float f = *in; + t_sample f = *in; if (f <= 0) *out = 0; else { - float g = 100 + 10./LOGTEN * log(f); + t_sample g = 100 + 10./LOGTEN * log(f); *out = (g < 0 ? 0 : g); } } diff --git a/pd/src/d_misc.c b/pd/src/d_misc.c index 3a327dc5..444986ea 100644 --- a/pd/src/d_misc.c +++ b/pd/src/d_misc.c @@ -15,7 +15,7 @@ static t_class *print_class; typedef struct _print { t_object x_obj; - float x_f; + t_float x_f; t_symbol *x_sym; int x_count; } t_print; @@ -23,22 +23,17 @@ typedef struct _print static t_int *print_perform(t_int *w) { t_print *x = (t_print *)(w[1]); - t_float *in = (t_float *)(w[2]); + t_sample *in = (t_sample *)(w[2]); int n = (int)(w[3]); if (x->x_count) { - post("%s:", x->x_sym->s_name); - if (n == 1) post("%8g", in[0]); - else if (n == 2) post("%8g %8g", in[0], in[1]); - else if (n == 4) post("%8g %8g %8g %8g", - in[0], in[1], in[2], in[3]); - else while (n > 0) - { - post("%-8.5g %-8.5g %-8.5g %-8.5g %-8.5g %-8.5g %-8.5g %-8.5g", - in[0], in[1], in[2], in[3], in[4], in[5], in[6], in[7]); - n -= 8; - in += 8; + int i=0; + startpost("%s:", x->x_sym->s_name); + for(i=0; ix_count--; } return (w+4); diff --git a/pd/src/d_osc.c b/pd/src/d_osc.c index b0becdba..93b1a89e 100644 --- a/pd/src/d_osc.c +++ b/pd/src/d_osc.c @@ -479,7 +479,7 @@ static void *noise_new(void) static t_int *noise_perform(t_int *w) { - t_float *out = (t_float *)(w[1]); + t_sample *out = (t_sample *)(w[1]); int *vp = (int *)(w[2]); int n = (int)(w[3]); int val = *vp; diff --git a/pd/src/d_resample.c b/pd/src/d_resample.c index 97ba1743..255af71d 100644 --- a/pd/src/d_resample.c +++ b/pd/src/d_resample.c @@ -8,8 +8,8 @@ /* --------------------- up/down-sampling --------------------- */ t_int *downsampling_perform_0(t_int *w) { - t_float *in = (t_float *)(w[1]); /* original signal */ - t_float *out = (t_float *)(w[2]); /* downsampled signal */ + t_sample *in = (t_sample *)(w[1]); /* original signal */ + t_sample *out = (t_sample *)(w[2]); /* downsampled signal */ int down = (int)(w[3]); /* downsampling factor */ int parent = (int)(w[4]); /* original vectorsize */ @@ -25,13 +25,13 @@ t_int *downsampling_perform_0(t_int *w) t_int *upsampling_perform_0(t_int *w) { - t_float *in = (t_float *)(w[1]); /* original signal */ - t_float *out = (t_float *)(w[2]); /* upsampled signal */ + t_sample *in = (t_sample *)(w[1]); /* original signal */ + t_sample *out = (t_sample *)(w[2]); /* upsampled signal */ int up = (int)(w[3]); /* upsampling factor */ int parent = (int)(w[4]); /* original vectorsize */ int n=parent*up; - t_float *dummy = out; + t_sample *dummy = out; while(n--)*out++=0; @@ -47,15 +47,15 @@ t_int *upsampling_perform_0(t_int *w) t_int *upsampling_perform_hold(t_int *w) { - t_float *in = (t_float *)(w[1]); /* original signal */ - t_float *out = (t_float *)(w[2]); /* upsampled signal */ + t_sample *in = (t_sample *)(w[1]); /* original signal */ + t_sample *out = (t_sample *)(w[2]); /* upsampled signal */ int up = (int)(w[3]); /* upsampling factor */ int parent = (int)(w[4]); /* original vectorsize */ int i=up; int n=parent; - t_float *dum_out = out; - t_float *dum_in = in; + t_sample *dum_out = out; + t_sample *dum_in = in; while (i--) { n = parent; @@ -72,20 +72,20 @@ t_int *upsampling_perform_hold(t_int *w) t_int *upsampling_perform_linear(t_int *w) { t_resample *x= (t_resample *)(w[1]); - t_float *in = (t_float *)(w[2]); /* original signal */ - t_float *out = (t_float *)(w[3]); /* upsampled signal */ + t_sample *in = (t_sample *)(w[2]); /* original signal */ + t_sample *out = (t_sample *)(w[3]); /* upsampled signal */ int up = (int)(w[4]); /* upsampling factor */ int parent = (int)(w[5]); /* original vectorsize */ int length = parent*up; int n; - t_float *fp; - t_float a=*x->buffer, b=*in; + t_sample *fp; + t_sample a=*x->buffer, b=*in; for (n=0; ns_n != outsize) { - t_float *buf=x->s_vec; + t_sample *buf=x->s_vec; t_freebytes(buf, x->s_n * sizeof(*buf)); - buf = (t_float *)t_getbytes(outsize * sizeof(*buf)); + buf = (t_sample *)t_getbytes(outsize * sizeof(*buf)); x->s_vec = buf; x->s_n = outsize; } @@ -203,9 +203,9 @@ void resampleto_dsp(t_resample *x, } if (x->s_n != insize) { - t_float *buf=x->s_vec; + t_sample *buf=x->s_vec; t_freebytes(buf, x->s_n * sizeof(*buf)); - buf = (t_float *)t_getbytes(insize * sizeof(*buf)); + buf = (t_sample *)t_getbytes(insize * sizeof(*buf)); x->s_vec = buf; x->s_n = insize; } diff --git a/pd/src/d_soundfile.c b/pd/src/d_soundfile.c index 93578e65..8768fa55 100644 --- a/pd/src/d_soundfile.c +++ b/pd/src/d_soundfile.c @@ -425,13 +425,81 @@ int open_soundfile_via_canvas(t_canvas *canvas, const char *filename, int header p_bigendian, p_nchannels, p_bytelimit, skipframes)); } -static void soundfile_xferin(int sfchannels, int nvecs, float **vecs, +static void soundfile_xferin_sample(int sfchannels, int nvecs, t_sample **vecs, long itemsread, unsigned char *buf, int nitems, int bytespersamp, int bigendian, int spread) { int i, j; unsigned char *sp, *sp2; - float *fp; + t_sample *fp; + int nchannels = (sfchannels < nvecs ? sfchannels : nvecs); + int bytesperframe = bytespersamp * sfchannels; + for (i = 0, sp = buf; i < nchannels; i++, sp += bytespersamp) + { + if (bytespersamp == 2) + { + if (bigendian) + { + for (j = 0, sp2 = sp, fp=vecs[i] + spread * itemsread; + j < nitems; j++, sp2 += bytesperframe, fp += spread) + *fp = SCALE * ((sp2[0] << 24) | (sp2[1] << 16)); + } + else + { + for (j = 0, sp2 = sp, fp=vecs[i] + spread * itemsread; + j < nitems; j++, sp2 += bytesperframe, fp += spread) + *fp = SCALE * ((sp2[1] << 24) | (sp2[0] << 16)); + } + } + else if (bytespersamp == 3) + { + if (bigendian) + { + for (j = 0, sp2 = sp, fp=vecs[i] + spread * itemsread; + j < nitems; j++, sp2 += bytesperframe, fp += spread) + *fp = SCALE * ((sp2[0] << 24) | (sp2[1] << 16) + | (sp2[2] << 8)); + } + else + { + for (j = 0, sp2 = sp, fp=vecs[i] + spread * itemsread; + j < nitems; j++, sp2 += bytesperframe, fp += spread) + *fp = SCALE * ((sp2[2] << 24) | (sp2[1] << 16) + | (sp2[0] << 8)); + } + } + else if (bytespersamp == 4) + { + if (bigendian) + { + for (j = 0, sp2 = sp, fp=vecs[i] + spread * itemsread; + j < nitems; j++, sp2 += bytesperframe, fp += spread) + *(long *)fp = ((sp2[0] << 24) | (sp2[1] << 16) + | (sp2[2] << 8) | sp2[3]); + } + else + { + for (j = 0, sp2 = sp, fp=vecs[i] + spread * itemsread; + j < nitems; j++, sp2 += bytesperframe, fp += spread) + *(long *)fp = ((sp2[3] << 24) | (sp2[2] << 16) + | (sp2[1] << 8) | sp2[0]); + } + } + } + /* zero out other outputs */ + for (i = sfchannels; i < nvecs; i++) + for (j = nitems, fp = vecs[i]; j--; ) + *fp++ = 0; + +} + +static void soundfile_xferin_float(int sfchannels, int nvecs, t_float **vecs, + long itemsread, unsigned char *buf, int nitems, int bytespersamp, + int bigendian, int spread) +{ + int i, j; + unsigned char *sp, *sp2; + t_float *fp; int nchannels = (sfchannels < nvecs ? sfchannels : nvecs); int bytesperframe = bytespersamp * sfchannels; for (i = 0, sp = buf; i < nchannels; i++, sp += bytespersamp) @@ -518,7 +586,7 @@ static void soundfile_xferin(int sfchannels, int nvecs, float **vecs, static int soundfiler_writeargparse(void *obj, int *p_argc, t_atom **p_argv, t_symbol **p_filesym, int *p_filetype, int *p_bytespersamp, int *p_swap, int *p_bigendian, - int *p_normalize, long *p_onset, long *p_nframes, float *p_rate) + int *p_normalize, long *p_onset, long *p_nframes, t_float *p_rate) { int argc = *p_argc; t_atom *argv = *p_argv; @@ -526,7 +594,7 @@ static int soundfiler_writeargparse(void *obj, int *p_argc, t_atom **p_argv, endianness = -1, swap, filetype = -1, normalize = 0; long onset = 0, nframes = 0x7fffffff; t_symbol *filesym; - float rate = -1; + t_float rate = -1; while (argc > 0 && argv->a_type == A_SYMBOL && *argv->a_w.w_symbol->s_name == '-') @@ -668,7 +736,7 @@ usage: static int create_soundfile(t_canvas *canvas, const char *filename, int filetype, int nframes, int bytespersamp, - int bigendian, int nchannels, int swap, float samplerate) + int bigendian, int nchannels, int swap, t_float samplerate) { char filenamebuf[MAXPDSTRING], buf2[MAXPDSTRING]; char headerbuf[WRITEHDRSIZE]; @@ -827,20 +895,20 @@ baddonewrite: post("%s: %s", filename, strerror(errno)); } -static void soundfile_xferout(int nchannels, float **vecs, +static void soundfile_xferout_sample(int nchannels, t_sample **vecs, unsigned char *buf, int nitems, long onset, int bytespersamp, - int bigendian, float normalfactor, int spread) + int bigendian, t_sample normalfactor, int spread) { int i, j; unsigned char *sp, *sp2; - float *fp; + t_sample *fp; int bytesperframe = bytespersamp * nchannels; long xx; for (i = 0, sp = buf; i < nchannels; i++, sp += bytespersamp) { if (bytespersamp == 2) { - float ff = normalfactor * 32768.; + t_sample ff = normalfactor * 32768.; if (bigendian) { for (j = 0, sp2 = sp, fp = vecs[i] + onset; @@ -874,7 +942,7 @@ static void soundfile_xferout(int nchannels, float **vecs, } else if (bytespersamp == 3) { - float ff = normalfactor * 8388608.; + t_sample ff = normalfactor * 8388608.; if (bigendian) { for (j = 0, sp2 = sp, fp=vecs[i] + onset; @@ -915,7 +983,7 @@ static void soundfile_xferout(int nchannels, float **vecs, for (j = 0, sp2 = sp, fp=vecs[i] + onset; j < nitems; j++, sp2 += bytesperframe, fp += spread) { - float f2 = *fp * normalfactor; + t_sample f2 = *fp * normalfactor; xx = *(long *)&f2; sp2[0] = (xx >> 24); sp2[1] = (xx >> 16); sp2[2] = (xx >> 8); sp2[3] = xx; @@ -926,7 +994,115 @@ static void soundfile_xferout(int nchannels, float **vecs, for (j = 0, sp2 = sp, fp=vecs[i] + onset; j < nitems; j++, sp2 += bytesperframe, fp += spread) { - float f2 = *fp * normalfactor; + t_sample f2 = *fp * normalfactor; + xx = *(long *)&f2; + sp2[3] = (xx >> 24); sp2[2] = (xx >> 16); + sp2[1] = (xx >> 8); sp2[0] = xx; + } + } + } + } +} +static void soundfile_xferout_float(int nchannels, t_float **vecs, + unsigned char *buf, int nitems, long onset, int bytespersamp, + int bigendian, t_sample normalfactor, int spread) +{ + int i, j; + unsigned char *sp, *sp2; + t_float *fp; + int bytesperframe = bytespersamp * nchannels; + long xx; + for (i = 0, sp = buf; i < nchannels; i++, sp += bytespersamp) + { + if (bytespersamp == 2) + { + t_sample ff = normalfactor * 32768.; + if (bigendian) + { + for (j = 0, sp2 = sp, fp = vecs[i] + onset; + j < nitems; j++, sp2 += bytesperframe, fp += spread) + { + int xx = 32768. + (*fp * ff); + xx -= 32768; + if (xx < -32767) + xx = -32767; + if (xx > 32767) + xx = 32767; + sp2[0] = (xx >> 8); + sp2[1] = xx; + } + } + else + { + for (j = 0, sp2 = sp, fp=vecs[i] + onset; + j < nitems; j++, sp2 += bytesperframe, fp += spread) + { + int xx = 32768. + (*fp * ff); + xx -= 32768; + if (xx < -32767) + xx = -32767; + if (xx > 32767) + xx = 32767; + sp2[1] = (xx >> 8); + sp2[0] = xx; + } + } + } + else if (bytespersamp == 3) + { + t_sample ff = normalfactor * 8388608.; + if (bigendian) + { + for (j = 0, sp2 = sp, fp=vecs[i] + onset; + j < nitems; j++, sp2 += bytesperframe, fp += spread) + { + int xx = 8388608. + (*fp * ff); + xx -= 8388608; + if (xx < -8388607) + xx = -8388607; + if (xx > 8388607) + xx = 8388607; + sp2[0] = (xx >> 16); + sp2[1] = (xx >> 8); + sp2[2] = xx; + } + } + else + { + for (j = 0, sp2 = sp, fp=vecs[i] + onset; + j < nitems; j++, sp2 += bytesperframe, fp += spread) + { + int xx = 8388608. + (*fp * ff); + xx -= 8388608; + if (xx < -8388607) + xx = -8388607; + if (xx > 8388607) + xx = 8388607; + sp2[2] = (xx >> 16); + sp2[1] = (xx >> 8); + sp2[0] = xx; + } + } + } + else if (bytespersamp == 4) + { + if (bigendian) + { + for (j = 0, sp2 = sp, fp=vecs[i] + onset; + j < nitems; j++, sp2 += bytesperframe, fp += spread) + { + t_sample f2 = *fp * normalfactor; + xx = *(long *)&f2; + sp2[0] = (xx >> 24); sp2[1] = (xx >> 16); + sp2[2] = (xx >> 8); sp2[3] = xx; + } + } + else + { + for (j = 0, sp2 = sp, fp=vecs[i] + onset; + j < nitems; j++, sp2 += bytesperframe, fp += spread) + { + t_sample f2 = *fp * normalfactor; xx = *(long *)&f2; sp2[3] = (xx >> 24); sp2[2] = (xx >> 16); sp2[1] = (xx >> 8); sp2[0] = xx; @@ -935,7 +1111,6 @@ static void soundfile_xferout(int nchannels, float **vecs, } } } - /* ------- soundfiler - reads and writes soundfiles to/from "garrays" ---- */ #define DEFMAXSIZE 4000000 /* default maximum 16 MB per channel */ @@ -1121,9 +1296,9 @@ static void soundfiler_read(t_soundfiler *x, t_symbol *s, thisread = (thisread > bufframes ? bufframes : thisread); nitems = fread(sampbuf, channels * bytespersamp, thisread, fp); if (nitems <= 0) break; - soundfile_xferin(channels, argc, (float **)vecs, itemsread, + soundfile_xferin_float(channels, argc, (t_float **)vecs, itemsread, (unsigned char *)sampbuf, nitems, bytespersamp, bigendian, - sizeof(t_word)/sizeof(float)); + sizeof(t_word)/sizeof(t_sample)); itemsread += nitems; } /* zero out remaining elements of vectors */ @@ -1157,7 +1332,7 @@ usage: done: if (fd >= 0) close (fd); - outlet_float(x->x_obj.ob_outlet, (float)itemsread); + outlet_float(x->x_obj.ob_outlet, (t_float)itemsread); } /* this is broken out from soundfiler_write below so garray_write can @@ -1175,7 +1350,8 @@ long soundfiler_dowrite(void *obj, t_canvas *canvas, char sampbuf[SAMPBUFSIZE]; int bufframes, nitems; int fd = -1; - float normfactor, biggest = 0, samplerate; + t_sample normfactor, biggest = 0; + t_float samplerate; t_symbol *filesym; if (soundfiler_writeargparse(obj, &argc, &argv, &filesym, &filetype, @@ -1244,9 +1420,9 @@ long soundfiler_dowrite(void *obj, t_canvas *canvas, { int thiswrite = nframes - itemswritten, nitems, nbytes; thiswrite = (thiswrite > bufframes ? bufframes : thiswrite); - soundfile_xferout(argc, (t_float **)vecs, (unsigned char *)sampbuf, + soundfile_xferout_float(argc, (t_float **)vecs, (unsigned char *)sampbuf, thiswrite, onset, bytespersamp, bigendian, normfactor, - sizeof(t_word)/sizeof(float)); + sizeof(t_word)/sizeof(t_sample)); nbytes = write(fd, sampbuf, nchannels * bytespersamp * thiswrite); if (nbytes < nchannels * bytespersamp * thiswrite) { @@ -1256,7 +1432,7 @@ long soundfiler_dowrite(void *obj, t_canvas *canvas, break; } itemswritten += thiswrite; - onset += thiswrite; + onset += thiswrite * (sizeof(t_word)/sizeof(float)); } if (fd >= 0) { @@ -1281,7 +1457,7 @@ static void soundfiler_write(t_soundfiler *x, t_symbol *s, { long bozo = soundfiler_dowrite(x, x->x_canvas, argc, argv); - outlet_float(x->x_obj.ob_outlet, (float)bozo); + outlet_float(x->x_obj.ob_outlet, (t_float)bozo); } static void soundfiler_setup(void) @@ -1343,7 +1519,7 @@ typedef struct _readsf int x_vecsize; /* vector size for transfers */ t_outlet *x_bangout; /* bang-on-done outlet */ int x_state; /* opened, running, or idle */ - float x_insamplerate; /* sample rate of input signal if known */ + t_float x_insamplerate; /* sample rate of input signal if known */ /* parameters to communicate with subthread */ int x_requestcode; /* pending request from parent to I/O thread */ char *x_filename; /* file to open (string is permanently allocated) */ @@ -1352,7 +1528,7 @@ typedef struct _readsf int x_bytespersample; /* bytes per sample (2 or 3) */ int x_bigendian; /* true if file is big-endian */ int x_sfchannels; /* number of channels in soundfile */ - float x_samplerate; /* sample rate of soundfile */ + t_float x_samplerate; /* sample rate of soundfile */ long x_onsetframes; /* number of sample frames to skip */ long x_bytelimit; /* max number of data bytes to read */ int x_fd; /* filedesc */ @@ -1365,7 +1541,7 @@ typedef struct _readsf int x_filetype; /* writesf~ only; type of file to create */ int x_itemswritten; /* writesf~ only; items writen */ int x_swap; /* writesf~ only; true if byte swapping */ - float x_f; /* writesf~ only; scalar for signal inlet */ + t_float x_f; /* writesf~ only; scalar for signal inlet */ pthread_mutex_t x_mutex; pthread_cond_t x_requestcondition; pthread_cond_t x_answercondition; @@ -1744,7 +1920,7 @@ static t_int *readsf_perform(t_int *w) int vecsize = x->x_vecsize, noutlets = x->x_noutlets, i, j, bytespersample = x->x_bytespersample, bigendian = x->x_bigendian; - float *fp; + t_sample *fp; if (x->x_state == STATE_STREAM) { int wantbytes, nchannels, sfchannels = x->x_sfchannels; @@ -1788,7 +1964,7 @@ static t_int *readsf_perform(t_int *w) (sfchannels * bytespersample); if (xfersize) { - soundfile_xferin(sfchannels, noutlets, x->x_outvec, 0, + soundfile_xferin_sample(sfchannels, noutlets, x->x_outvec, 0, (unsigned char *)(x->x_buf + x->x_fifotail), xfersize, bytespersample, bigendian, 1); vecsize -= xfersize; @@ -1803,7 +1979,7 @@ static t_int *readsf_perform(t_int *w) return (w+2); } - soundfile_xferin(sfchannels, noutlets, x->x_outvec, 0, + soundfile_xferin_sample(sfchannels, noutlets, x->x_outvec, 0, (unsigned char *)(x->x_buf + x->x_fifotail), vecsize, bytespersample, bigendian, 1); @@ -1999,7 +2175,7 @@ static void *writesf_child_main(void *zz) int filetype = x->x_filetype; char *filename = x->x_filename; t_canvas *canvas = x->x_canvas; - float samplerate = x->x_samplerate; + t_float samplerate = x->x_samplerate; /* alter the request code so that an ensuing "open" will get noticed. */ @@ -2244,7 +2420,7 @@ static t_int *writesf_perform(t_int *w) int vecsize = x->x_vecsize, sfchannels = x->x_sfchannels, i, j, bytespersample = x->x_bytespersample, bigendian = x->x_bigendian; - float *fp; + t_sample *fp; if (x->x_state == STATE_STREAM) { int wantbytes; @@ -2263,7 +2439,7 @@ static t_int *writesf_perform(t_int *w) #endif } - soundfile_xferout(sfchannels, x->x_outvec, + soundfile_xferout_sample(sfchannels, x->x_outvec, (unsigned char *)(x->x_buf + x->x_fifohead), vecsize, 0, bytespersample, bigendian, 1., 1); @@ -2316,7 +2492,7 @@ static void writesf_open(t_writesf *x, t_symbol *s, int argc, t_atom *argv) t_symbol *filesym; int filetype, bytespersamp, swap, bigendian, normalize; long onset, nframes; - float samplerate; + t_float samplerate; if (x->x_state != STATE_IDLE) { writesf_stop(x); diff --git a/pd/src/d_ugen.c b/pd/src/d_ugen.c index f7f27aa7..fe49b7de 100644 --- a/pd/src/d_ugen.c +++ b/pd/src/d_ugen.c @@ -18,7 +18,7 @@ #include extern t_class *vinlet_class, *voutlet_class, *canvas_class; -t_sample *obj_findsignalscalar(t_object *x, int m); +t_float *obj_findsignalscalar(t_object *x, int m); static int ugen_loud; static t_int *dsp_chain; static int dsp_chainsize; @@ -38,7 +38,7 @@ void voutlet_dspepilog(struct _voutlet *x, t_signal **parentsigs, t_int *zero_perform(t_int *w) /* zero out a vector */ { - t_float *out = (t_float *)(w[1]); + t_sample *out = (t_sample *)(w[1]); int n = (int)(w[2]); while (n--) *out++ = 0; return (w+3); @@ -46,7 +46,7 @@ t_int *zero_perform(t_int *w) /* zero out a vector */ t_int *zero_perf8(t_int *w) { - t_float *out = (t_float *)(w[1]); + t_sample *out = (t_sample *)(w[1]); int n = (int)(w[2]); for (; n; n -= 8, out += 8) @@ -427,7 +427,7 @@ void signal_makereusable(t_signal *sig) signal whose buffer and size will be obtained later via signal_setborrowed(). */ -t_signal *signal_new(int n, float sr) +t_signal *signal_new(int n, t_float sr) { int logn, n2, vecsize = 0; t_signal *ret, **whichlist; @@ -539,7 +539,7 @@ struct _dspcontext int dc_ninlets; int dc_noutlets; t_signal **dc_iosigs; - float dc_srate; + t_float dc_srate; int dc_vecsize; /* vector size, power of two */ int dc_calcsize; /* number of elements to calculate */ char dc_toplevel; /* true if "iosigs" is invalid. */ @@ -612,7 +612,7 @@ t_dspcontext *ugen_start_graph(int toplevel, t_signal **sp, int ninlets, int noutlets) { t_dspcontext *dc = (t_dspcontext *)getbytes(sizeof(*dc)); - float parent_srate, srate; + t_float parent_srate, srate; int parent_vecsize, vecsize; if (ugen_loud) post("ugen_start_graph..."); @@ -732,7 +732,7 @@ static void ugen_doit(t_dspcontext *dc, t_ugenbox *u) { if (!uin->i_nconnect) { - t_sample *scalar; + t_float *scalar; s3 = signal_new(dc->dc_vecsize, dc->dc_srate); /* post("%s: unconnected signal inlet set to zero", class_getname(u->u_obj->ob_pd)); */ @@ -867,10 +867,10 @@ void ugen_done_graph(t_dspcontext *dc) int i, n; t_block *blk; t_dspcontext *parent_context = dc->dc_parentcontext; - float parent_srate; + t_float parent_srate; int parent_vecsize; int period, frequency, phase, vecsize, calcsize; - float srate; + t_float srate; int chainblockbegin; /* DSP chain onset before block prolog code */ int chainblockend; /* and after block epilog code */ int chainafterall; /* and after signal outlet epilog */ @@ -1153,7 +1153,7 @@ static t_class *samplerate_tilde_class; typedef struct _samplerate { t_object x_obj; - float x_sr; + t_float x_sr; t_canvas *x_canvas; } t_samplerate; @@ -1161,13 +1161,13 @@ void *canvas_getblock(t_class *blockclass, t_canvas **canvasp); static void samplerate_tilde_bang(t_samplerate *x) { - float srate = sys_getsr(); + t_float srate = sys_getsr(); t_canvas *canvas = x->x_canvas; while (canvas) { t_block *b = (t_block *)canvas_getblock(block_class, &canvas); if (b) - srate *= (float)(b->x_upsample) / (float)(b->x_downsample); + srate *= (t_float)(b->x_upsample) / (t_float)(b->x_downsample); } outlet_float(x->x_obj.ob_outlet, srate); } diff --git a/pd/src/g_all_guis.c b/pd/src/g_all_guis.c index 2d18f480..6f196e34 100644 --- a/pd/src/g_all_guis.c +++ b/pd/src/g_all_guis.c @@ -438,7 +438,7 @@ void iemgui_label_font(void *x, t_iemgui *iemgui, t_symbol *s, int ac, t_atom *a else { f = 0; - strcpy(iemgui->x_font, "courier"); + strcpy(iemgui->x_font, sys_font); } iemgui->x_fsf.x_font_style = f; f = (int)atom_getintarg(1, ac, av); @@ -446,8 +446,9 @@ void iemgui_label_font(void *x, t_iemgui *iemgui, t_symbol *s, int ac, t_atom *a f = 4; iemgui->x_fontsize = f; if(glist_isvisible(iemgui->x_glist)) - sys_vgui(".x%lx.c itemconfigure %lxLABEL -font {%s %d bold}\n", - glist_getcanvas(iemgui->x_glist), x, iemgui->x_font, iemgui->x_fontsize); + sys_vgui(".x%lx.c itemconfigure %lxLABEL -font {{%s} -%d %s}\n", + glist_getcanvas(iemgui->x_glist), x, iemgui->x_font, + iemgui->x_fontsize, sys_fontweight); } void iemgui_size(void *x, t_iemgui *iemgui) @@ -622,7 +623,7 @@ int iemgui_dialog(t_iemgui *iemgui, t_symbol **srl, int argc, t_atom *argv) else { f = 0; - strcpy(iemgui->x_font, "courier"); + strcpy(iemgui->x_font, sys_font); } iemgui->x_fsf.x_font_style = f; if(fs < 4) diff --git a/pd/src/g_all_guis.h b/pd/src/g_all_guis.h index 2d7d7dd6..b352fb9c 100644 --- a/pd/src/g_all_guis.h +++ b/pd/src/g_all_guis.h @@ -144,7 +144,7 @@ typedef struct _iemgui int x_w; int x_ldx; int x_ldy; - char x_font[16]; + char x_font[MAXPDSTRING]; /* font names can be long! */ t_iem_fstyle_flags x_fsf; int x_fontsize; t_iem_init_symargs x_isa; @@ -208,8 +208,8 @@ typedef struct _hdial typedef struct _toggle { t_iemgui x_gui; - float x_on; - float x_nonzero; + t_float x_on; + t_float x_nonzero; } t_toggle; typedef struct _my_canvas @@ -238,8 +238,8 @@ typedef struct _vu int x_led_size; int x_peak; int x_rms; - float x_fp; - float x_fr; + t_float x_fp; + t_float x_fr; int x_scale; void *x_out_rms; void *x_out_peak; diff --git a/pd/src/g_array.c b/pd/src/g_array.c index 543823f6..0ebc99fb 100644 --- a/pd/src/g_array.c +++ b/pd/src/g_array.c @@ -394,7 +394,7 @@ void garray_arraydialog(t_garray *x, t_symbol *name, t_floatarg fsize, int flags = fflags; int saveit = ((flags & 1) != 0); int style = ((flags & 6) >> 1); - float stylewas = template_getfloat( + t_float stylewas = template_getfloat( template_findbyname(x->x_scalar->sc_template), gensym("style"), x->x_scalar->sc_vec, 1); if (deleteit != 0) @@ -449,7 +449,7 @@ void garray_arraydialog(t_garray *x, t_symbol *name, t_floatarg fsize, else if (style != stylewas) garray_fittograph(x, size, style); template_setfloat(scalartemplate, gensym("style"), - x->x_scalar->sc_vec, (float)style, 0); + x->x_scalar->sc_vec, (t_float)style, 0); garray_setsaveit(x, (saveit != 0)); garray_redraw(x); @@ -460,7 +460,7 @@ void garray_arraydialog(t_garray *x, t_symbol *name, t_floatarg fsize, void garray_arrayviewlist_new(t_garray *x) { int i, xonset=0, yonset=0, type=0, elemsize=0; - float yval; + t_float yval; char cmdbuf[200]; t_symbol *arraytype; t_array *a = garray_getarray_floatonly(x, &yonset, &elemsize); @@ -478,7 +478,7 @@ void garray_arrayviewlist_new(t_garray *x) gfxstub_new(&x->x_gobj.g_pd, x, cmdbuf); for (i = 0; i < ARRAYPAGESIZE && i < a->a_n; i++) { - yval = *(float *)(a->a_vec + + yval = *(t_float *)(a->a_vec + elemsize * i + yonset); sys_vgui(".%sArrayWindow.lb insert %d {%d) %g}\n", x->x_realname->s_name, @@ -493,7 +493,7 @@ void garray_arrayviewlist_fillpage(t_garray *x, t_float fTopItem) { int i, xonset=0, yonset=0, type=0, elemsize=0, topItem; - float yval; + t_float yval; char cmdbuf[200]; t_symbol *arraytype; t_array *a = garray_getarray_floatonly(x, &yonset, &elemsize); @@ -524,7 +524,7 @@ void garray_arrayviewlist_fillpage(t_garray *x, (i < (page + 1) * ARRAYPAGESIZE && i < a->a_n); i++) { - yval = *(float *)(a->a_vec + \ + yval = *(t_float *)(a->a_vec + \ elemsize * i + yonset); sys_vgui(".%sArrayWindow.lb insert %d {%d) %g}\n", x->x_realname->s_name, @@ -575,23 +575,23 @@ void array_redraw(t_array *a, t_glist *glist) /* routine to get screen coordinates of a point in an array */ void array_getcoordinate(t_glist *glist, char *elem, int xonset, int yonset, int wonset, int indx, - float basex, float basey, float xinc, + t_float basex, t_float basey, t_float xinc, t_fielddesc *xfielddesc, t_fielddesc *yfielddesc, t_fielddesc *wfielddesc, - float *xp, float *yp, float *wp) + t_float *xp, t_float *yp, t_float *wp) { - float xval, yval, ypix, wpix; + t_float xval, yval, ypix, wpix; if (xonset >= 0) - xval = *(float *)(elem + xonset); + xval = *(t_float *)(elem + xonset); else xval = indx * xinc; if (yonset >= 0) - yval = *(float *)(elem + yonset); + yval = *(t_float *)(elem + yonset); else yval = 0; ypix = glist_ytopixels(glist, basey + fielddesc_cvttocoord(yfielddesc, yval)); if (wonset >= 0) { /* found "w" field which controls linewidth. */ - float wval = *(float *)(elem + wonset); + t_float wval = *(t_float *)(elem + wonset); wpix = glist_ytopixels(glist, basey + fielddesc_cvttocoord(yfielddesc, yval) + fielddesc_cvttocoord(wfielddesc, wval)) - ypix; @@ -605,8 +605,8 @@ void array_getcoordinate(t_glist *glist, *wp = wpix; } -static float array_motion_xcumulative; -static float array_motion_ycumulative; +static t_float array_motion_xcumulative; +static t_float array_motion_ycumulative; static t_fielddesc *array_motion_xfield; static t_fielddesc *array_motion_yfield; static t_glist *array_motion_glist; @@ -617,9 +617,9 @@ static t_template *array_motion_template; static int array_motion_npoints; static int array_motion_elemsize; static int array_motion_altkey; -static float array_motion_initx; -static float array_motion_xperpix; -static float array_motion_yperpix; +static t_float array_motion_initx; +static t_float array_motion_xperpix; +static t_float array_motion_yperpix; static int array_motion_lastx; static int array_motion_fatten; @@ -638,9 +638,9 @@ static void array_motion(void *z, t_floatarg dx, t_floatarg dy) { t_word *thisword = (t_word *)(((char *)array_motion_wp) + i * array_motion_elemsize); - float xwas = fielddesc_getcoord(array_motion_xfield, + t_float xwas = fielddesc_getcoord(array_motion_xfield, array_motion_template, thisword, 1); - float ywas = (array_motion_yfield ? + t_float ywas = (array_motion_yfield ? fielddesc_getcoord(array_motion_yfield, array_motion_template, thisword, 1) : 0); fielddesc_setcoord(array_motion_xfield, @@ -651,7 +651,7 @@ static void array_motion(void *z, t_floatarg dx, t_floatarg dy) { if (i == 0) { - float newy = ywas + dy * array_motion_yperpix; + t_float newy = ywas + dy * array_motion_yperpix; if (newy < 0) newy = 0; fielddesc_setcoord(array_motion_yfield, @@ -672,13 +672,13 @@ static void array_motion(void *z, t_floatarg dx, t_floatarg dy) /* a y-only plot. */ int thisx = array_motion_initx + array_motion_xcumulative + 0.5, x2; int increment, i, nchange; - float newy = array_motion_ycumulative, + t_float newy = array_motion_ycumulative, oldy = fielddesc_getcoord(array_motion_yfield, array_motion_template, (t_word *)(((char *)array_motion_wp) + array_motion_elemsize * array_motion_lastx), 1); - float ydiff = newy - oldy; + t_float ydiff = newy - oldy; if (thisx < 0) thisx = 0; else if (thisx >= array_motion_npoints) thisx = array_motion_npoints - 1; @@ -704,7 +704,7 @@ static void array_motion(void *z, t_floatarg dx, t_floatarg dy) int scalar_doclick(t_word *data, t_template *template, t_scalar *sc, t_array *ap, struct _glist *owner, - float xloc, float yloc, int xpix, int ypix, + t_float xloc, t_float yloc, int xpix, int ypix, int shift, int alt, int dbl, int doit); /* try clicking on an element of the array as a scalar (if clicking @@ -712,14 +712,14 @@ int scalar_doclick(t_word *data, t_template *template, t_scalar *sc, static int array_doclick_element(t_array *array, t_glist *glist, t_scalar *sc, t_array *ap, t_symbol *elemtemplatesym, - float linewidth, float xloc, float xinc, float yloc, + t_float linewidth, t_float xloc, t_float xinc, t_float yloc, t_fielddesc *xfield, t_fielddesc *yfield, t_fielddesc *wfield, int xpix, int ypix, int shift, int alt, int dbl, int doit) { t_canvas *elemtemplatecanvas; t_template *elemtemplate; int elemsize, yonset, wonset, xonset, i, incr, hit; - float xsum; + t_float xsum; if (elemtemplatesym == &s_float) return (0); @@ -733,13 +733,13 @@ static int array_doclick_element(t_array *array, t_glist *glist, else incr = array->a_n / 300; for (i = 0, xsum = 0; i < array->a_n; i += incr) { - float usexloc, useyloc; + t_float usexloc, useyloc; if (xonset >= 0) usexloc = xloc + fielddesc_cvttocoord(xfield, - *(float *)(((char *)(array->a_vec) + elemsize * i) + xonset)); + *(t_float *)(((char *)(array->a_vec) + elemsize * i) + xonset)); else usexloc = xloc + xsum, xsum += xinc; useyloc = yloc + (yonset >= 0 ? fielddesc_cvttocoord(yfield, - *(float *)(((char *)(array->a_vec) + elemsize * i) + yonset)) : 0); + *(t_float *)(((char *)(array->a_vec) + elemsize * i) + yonset)) : 0); if (hit = scalar_doclick( (t_word *)((char *)(array->a_vec) + i * elemsize), @@ -755,7 +755,7 @@ static int array_doclick_element(t_array *array, t_glist *glist, they can be static (look in g_canvas.h for candidates). */ int array_doclick(t_array *array, t_glist *glist, t_scalar *sc, t_array *ap, t_symbol *elemtemplatesym, - float linewidth, float xloc, float xinc, float yloc, float scalarvis, + t_float linewidth, t_float xloc, t_float xinc, t_float yloc, t_float scalarvis, t_fielddesc *xfield, t_fielddesc *yfield, t_fielddesc *wfield, int xpix, int ypix, int shift, int alt, int dbl, int doit) { @@ -767,12 +767,12 @@ int array_doclick(t_array *array, t_glist *glist, t_scalar *sc, t_array *ap, &elemtemplate, &elemsize, xfield, yfield, wfield, &xonset, &yonset, &wonset)) { - float best = 100; + t_float best = 100; /* if it has more than 2000 points, just check 1000 of them. */ int incr = (array->a_n <= 2000 ? 1 : array->a_n / 1000); for (i = 0; i < array->a_n; i += incr) { - float pxpix, pypix, pwpix, dx, dy; + t_float pxpix, pypix, pwpix, dx, dy; array_getcoordinate(glist, (char *)(array->a_vec) + i * elemsize, xonset, yonset, wonset, i, xloc, yloc, xinc, xfield, yfield, wfield, &pxpix, &pypix, &pwpix); @@ -810,7 +810,7 @@ int array_doclick(t_array *array, t_glist *glist, t_scalar *sc, t_array *ap, best += 0.001; /* add truncation error margin */ for (i = 0; i < array->a_n; i += incr) { - float pxpix, pypix, pwpix, dx, dy, dy2, dy3; + t_float pxpix, pypix, pwpix, dx, dy, dy2, dy3; array_getcoordinate(glist, (char *)(array->a_vec) + i * elemsize, xonset, yonset, wonset, i, xloc, yloc, xinc, xfield, yfield, wfield, &pxpix, &pypix, &pwpix); @@ -903,7 +903,7 @@ int array_doclick(t_array *array, t_glist *glist, t_scalar *sc, t_array *ap, array_motion_ycumulative = fielddesc_getcoord(yfield, array_motion_template, (t_word *)(elem + i * elemsize), 1); - /* *(float *)((elem + elemsize * i) + yonset); */ + /* *(t_float *)((elem + elemsize * i) + yonset); */ } else { @@ -929,7 +929,7 @@ int array_doclick(t_array *array, t_glist *glist, t_scalar *sc, t_array *ap, static void array_getrect(t_array *array, t_glist *glist, int *xp1, int *yp1, int *xp2, int *yp2) { - float x1 = 0x7fffffff, y1 = 0x7fffffff, x2 = -0x7fffffff, y2 = -0x7fffffff; + t_float x1 = 0x7fffffff, y1 = 0x7fffffff, x2 = -0x7fffffff, y2 = -0x7fffffff; t_canvas *elemtemplatecanvas; t_template *elemtemplate; int elemsize, yonset, wonset, xonset, i; @@ -944,7 +944,7 @@ static void array_getrect(t_array *array, t_glist *glist, else incr = array->a_n / 300; for (i = 0; i < array->a_n; i += incr) { - float pxpix, pypix, pwpix, dx, dy; + t_float pxpix, pypix, pwpix, dx, dy; array_getcoordinate(glist, (char *)(array->a_vec) + i * elemsize, xonset, yonset, wonset, i, 0, 0, 1, @@ -1152,7 +1152,7 @@ int garray_getfloatwords(t_garray *x, int *size, t_word **vec) int garray_getfloatarray(t_garray *x, int *size, t_float **vec) { - if (sizeof(t_word) != sizeof(float)) + if (sizeof(t_word) != sizeof(t_float)) { static int warned; if (!warned) @@ -1180,13 +1180,13 @@ static void garray_const(t_garray *x, t_floatarg g) if (!array) error("%s: needs floating-point 'y' field", x->x_realname); else for (i = 0; i < array->a_n; i++) - *((float *)((char *)array->a_vec + *((t_float *)((char *)array->a_vec + elemsize * i) + yonset) = g; garray_redraw(x); } /* sum of Fourier components; called from routines below */ -static void garray_dofo(t_garray *x, int npoints, float dcval, +static void garray_dofo(t_garray *x, int npoints, t_float dcval, int nsin, t_float *vsin, int sineflag) { double phase, phaseincr, fj; @@ -1213,7 +1213,7 @@ static void garray_dofo(t_garray *x, int npoints, float dcval, else for (j = 0, fj = 0; j < nsin; j++, fj += phase) sum += vsin[j] * cos(fj); - *((float *)((array->a_vec + elemsize * i)) + yonset) + *((t_float *)((array->a_vec + elemsize * i)) + yonset) = sum; } garray_redraw(x); @@ -1282,7 +1282,7 @@ static void garray_normalize(t_garray *x, t_float f) for (i = 0, maxv = 0; i < array->a_n; i++) { - double v = *((float *)(array->a_vec + elemsize * i) + double v = *((t_float *)(array->a_vec + elemsize * i) + yonset); if (v > maxv) maxv = v; @@ -1293,7 +1293,7 @@ static void garray_normalize(t_garray *x, t_float f) { renormer = f / maxv; for (i = 0; i < array->a_n; i++) - *((float *)(array->a_vec + elemsize * i) + yonset) + *((t_float *)(array->a_vec + elemsize * i) + yonset) *= renormer; } garray_redraw(x); @@ -1331,7 +1331,7 @@ static void garray_list(t_garray *x, t_symbol *s, int argc, t_atom *argv) if (argc <= 0) return; } for (i = 0; i < argc; i++) - *((float *)(array->a_vec + elemsize * (i + firstindex)) + yonset) + *((t_float *)(array->a_vec + elemsize * (i + firstindex)) + yonset) = atom_getfloat(argv + i); } garray_redraw(x); @@ -1402,7 +1402,7 @@ static void garray_read(t_garray *x, t_symbol *filename) } for (i = 0; i < nelem; i++) { - if (!fscanf(fd, "%f", ((float *)(array->a_vec + + if (!fscanf(fd, "%f", ((t_float *)(array->a_vec + elemsize * i) + yonset))) { post("%s: read %d elements into table of size %d", @@ -1411,7 +1411,7 @@ static void garray_read(t_garray *x, t_symbol *filename) } } while (i < nelem) - *((float *)(array->a_vec + + *((t_float *)(array->a_vec + elemsize * i) + yonset) = 0, i++; fclose(fd); garray_redraw(x); @@ -1439,7 +1439,7 @@ static void garray_write(t_garray *x, t_symbol *filename) for (i = 0; i < array->a_n; i++) { if (fprintf(fd, "%g\n", - *(float *)(((array->a_vec + sizeof(t_word) * i)) + yonset)) < 1) + *(t_float *)(((array->a_vec + sizeof(t_word) * i)) + yonset)) < 1) { post("%s: write error", filename->s_name); break; diff --git a/pd/src/g_bang.c b/pd/src/g_bang.c index 3a5ef4d3..1e5d6604 100644 --- a/pd/src/g_bang.c +++ b/pd/src/g_bang.c @@ -55,11 +55,12 @@ void bng_draw_new(t_bng *x, t_glist *glist) xpos + x->x_gui.x_w-1, ypos + x->x_gui.x_h-1, x->x_flashed?x->x_gui.x_fcol:x->x_gui.x_bcol, x); sys_vgui(".x%lx.c create text %d %d -text {%s} -anchor w \ - -font {%s %d bold} -fill #%6.6x -tags %lxLABEL\n", + -font {{%s} -%d %s} -fill #%6.6x -tags %lxLABEL\n", canvas, xpos+x->x_gui.x_ldx, ypos+x->x_gui.x_ldy, strcmp(x->x_gui.x_lab->s_name, "empty")?x->x_gui.x_lab->s_name:"", - x->x_gui.x_font, x->x_gui.x_fontsize, x->x_gui.x_lcol, x); + x->x_gui.x_font, x->x_gui.x_fontsize, sys_fontweight, + x->x_gui.x_lcol, x); if(!x->x_gui.x_fsf.x_snd_able) sys_vgui(".x%lx.c create rectangle %d %d %d %d -tags %lxOUT%d\n", canvas, xpos, @@ -115,8 +116,8 @@ void bng_draw_config(t_bng* x, t_glist* glist) { t_canvas *canvas=glist_getcanvas(glist); - sys_vgui(".x%lx.c itemconfigure %lxLABEL -font {%s %d bold} -fill #%6.6x -text {%s} \n", - canvas, x, x->x_gui.x_font, x->x_gui.x_fontsize, + sys_vgui(".x%lx.c itemconfigure %lxLABEL -font {{%s} -%d %s} -fill #%6.6x -text {%s} \n", + canvas, x, x->x_gui.x_font, x->x_gui.x_fontsize, sys_fontweight, x->x_gui.x_fsf.x_selected?IEM_GUI_COLOR_SELECTED:x->x_gui.x_lcol, strcmp(x->x_gui.x_lab->s_name, "empty")?x->x_gui.x_lab->s_name:""); sys_vgui(".x%lx.c itemconfigure %lxBASE -fill #%6.6x\n", canvas, x, x->x_gui.x_bcol); @@ -237,7 +238,7 @@ static void bng_properties(t_gobj *z, t_glist *owner) t_symbol *srl[3]; iemgui_properties(&x->x_gui, srl); - sprintf(buf, "pdtk_iemgui_dialog %%s BANG \ + sprintf(buf, "pdtk_iemgui_dialog %%s |bang| \ ----------dimensions(pix):----------- %d %d size: 0 0 empty \ --------flash-time(ms)(ms):--------- %d intrrpt: %d hold: %d \ %d empty empty %d %d empty %d \ @@ -481,7 +482,7 @@ static void *bng_new(t_symbol *s, int argc, t_atom *argv) if(x->x_gui.x_fsf.x_font_style == 1) strcpy(x->x_gui.x_font, "helvetica"); else if(x->x_gui.x_fsf.x_font_style == 2) strcpy(x->x_gui.x_font, "times"); else { x->x_gui.x_fsf.x_font_style = 0; - strcpy(x->x_gui.x_font, "courier"); } + strcpy(x->x_gui.x_font, sys_font); } if (x->x_gui.x_fsf.x_rcv_able) pd_bind(&x->x_gui.x_obj.ob_pd, x->x_gui.x_rcv); diff --git a/pd/src/g_canvas.c b/pd/src/g_canvas.c index 10f897c1..36d3d3d6 100644 --- a/pd/src/g_canvas.c +++ b/pd/src/g_canvas.c @@ -448,8 +448,8 @@ static void canvas_coords(t_glist *x, t_symbol *s, int argc, t_atom *argv) /* make a new glist and add it to this glist. It will appear as a "graph", not a text object. */ t_glist *glist_addglist(t_glist *g, t_symbol *sym, - float x1, float y1, float x2, float y2, - float px1, float py1, float px2, float py2) + t_float x1, t_float y1, t_float x2, t_float y2, + t_float px1, t_float py1, t_float px2, t_float py2) { static int gcount = 0; int zz; @@ -474,7 +474,7 @@ t_glist *glist_addglist(t_glist *g, t_symbol *sym, that is higher on the screen. */ if (py2 < py1) { - float zz; + t_float zz; zz = y2; y2 = y1; y1 = zz; @@ -520,14 +520,14 @@ t_glist *glist_addglist(t_glist *g, t_symbol *sym, void glist_glist(t_glist *g, t_symbol *s, int argc, t_atom *argv) { t_symbol *sym = atom_getsymbolarg(0, argc, argv); - float x1 = atom_getfloatarg(1, argc, argv); - float y1 = atom_getfloatarg(2, argc, argv); - float x2 = atom_getfloatarg(3, argc, argv); - float y2 = atom_getfloatarg(4, argc, argv); - float px1 = atom_getfloatarg(5, argc, argv); - float py1 = atom_getfloatarg(6, argc, argv); - float px2 = atom_getfloatarg(7, argc, argv); - float py2 = atom_getfloatarg(8, argc, argv); + t_float x1 = atom_getfloatarg(1, argc, argv); + t_float y1 = atom_getfloatarg(2, argc, argv); + t_float x2 = atom_getfloatarg(3, argc, argv); + t_float y2 = atom_getfloatarg(4, argc, argv); + t_float px1 = atom_getfloatarg(5, argc, argv); + t_float py1 = atom_getfloatarg(6, argc, argv); + t_float px2 = atom_getfloatarg(7, argc, argv); + t_float py2 = atom_getfloatarg(8, argc, argv); glist_addglist(g, sym, x1, y1, x2, y2, px1, py1, px2, py2); } @@ -557,7 +557,7 @@ static void canvas_setbounds(t_canvas *x, int x1, int y1, int x2, int y2) fix so that zero is bottom edge and redraw. This is only appropriate if we're a regular "text" object on the parent. */ - float diff = x->gl_y1 - x->gl_y2; + t_float diff = x->gl_y1 - x->gl_y2; t_gobj *y; x->gl_y1 = heightwas * diff; x->gl_y2 = x->gl_y1 - diff; @@ -738,7 +738,7 @@ void canvas_create_editor(t_glist *x, int createit) } for (y = x->gl_list; y; y = y->g_next) if (pd_class(&y->g_pd) == canvas_class && - ((t_canvas *)y)->gl_isgraph) + ((t_canvas *)y)->gl_isgraph && !((t_canvas *)y)->gl_havewindow) canvas_create_editor((t_canvas *)y, createit); } @@ -808,7 +808,8 @@ void canvas_vis(t_canvas *x, t_floatarg f) if (glist_isgraph(x) && x->gl_owner) { t_glist *gl2 = x->gl_owner; - canvas_create_editor(x, 1); + if (!x->gl_owner->gl_isdeleting) + canvas_create_editor(x, 1); if (glist_isvisible(gl2)) gobj_vis(&x->gl_gobj, gl2, 0); x->gl_havewindow = 0; @@ -1043,18 +1044,21 @@ void canvas_loadbang(t_canvas *x) canvas_loadbangsubpatches(x); } - /* When you ask a canvas its size the result is 2 pixels more than what - you gave it to open it; perhaps there's a 1-pixel border all around it - or something. Anyway, we just add the 2 pixels back here; seems we - have to do this for linux but not MSW; not sure about MacOS. */ + /* When you ask a canvas its size the result is more than what + you gave it to open it; how much bigger apparently depends on the OS. */ #ifdef __unix__ #define HORIZBORDER 2 #define VERTBORDER 2 #else +#ifdef MACOSX +#define HORIZBORDER 6 +#define VERTBORDER 6 +#else #define HORIZBORDER 4 #define VERTBORDER 4 #endif +#endif static void canvas_relocate(t_canvas *x, t_symbol *canvasgeom, t_symbol *topgeom) diff --git a/pd/src/g_canvas.h b/pd/src/g_canvas.h index d3dee3d3..e2b6626a 100644 --- a/pd/src/g_canvas.h +++ b/pd/src/g_canvas.h @@ -131,8 +131,8 @@ typedef struct _arrayvis typedef struct _tick /* where to put ticks on x or y axes */ { - float k_point; /* one point to draw a big tick at */ - float k_inc; /* x or y increment per little tick */ + t_float k_point; /* one point to draw a big tick at */ + t_float k_inc; /* x or y increment per little tick */ int k_lperb; /* little ticks per big; 0 if no ticks to draw */ } t_tick; @@ -150,10 +150,10 @@ struct _glist struct _glist *gl_owner; /* parent glist, supercanvas, or 0 if none */ int gl_pixwidth; /* width in pixels (on parent, if a graph) */ int gl_pixheight; - float gl_x1; /* bounding rectangle in our own coordinates */ - float gl_y1; - float gl_x2; - float gl_y2; + t_float gl_x1; /* bounding rectangle in our own coordinates */ + t_float gl_y1; + t_float gl_x2; + t_float gl_y2; int gl_screenx1; /* screen coordinates when toplevel */ int gl_screeny1; int gl_screenx2; @@ -163,11 +163,11 @@ struct _glist t_tick gl_xtick; /* ticks marking X values */ int gl_nxlabels; /* number of X coordinate labels */ t_symbol **gl_xlabel; /* ... an array to hold them */ - float gl_xlabely; /* ... and their Y coordinates */ + t_float gl_xlabely; /* ... and their Y coordinates */ t_tick gl_ytick; /* same as above for Y ticks and labels */ int gl_nylabels; t_symbol **gl_ylabel; - float gl_ylabelx; + t_float gl_ylabelx; t_editor *gl_editor; /* editor structure when visible */ t_symbol *gl_name; /* symbol bound here */ int gl_font; /* nominal font size in points, e.g., 10 */ @@ -286,28 +286,28 @@ doesn't work on array elements... LATER reconsider this */ /* bounding rectangle: */ typedef void (*t_parentgetrectfn)(t_gobj *x, struct _glist *glist, - t_word *data, t_template *tmpl, float basex, float basey, + t_word *data, t_template *tmpl, t_float basex, t_float basey, int *x1, int *y1, int *x2, int *y2); /* displace it */ typedef void (*t_parentdisplacefn)(t_gobj *x, struct _glist *glist, - t_word *data, t_template *tmpl, float basex, float basey, + t_word *data, t_template *tmpl, t_float basex, t_float basey, int dx, int dy); /* change color to show selection */ typedef void (*t_parentselectfn)(t_gobj *x, struct _glist *glist, - t_word *data, t_template *tmpl, float basex, float basey, + t_word *data, t_template *tmpl, t_float basex, t_float basey, int state); /* change appearance to show activation/deactivation: */ typedef void (*t_parentactivatefn)(t_gobj *x, struct _glist *glist, - t_word *data, t_template *tmpl, float basex, float basey, + t_word *data, t_template *tmpl, t_float basex, t_float basey, int state); /* making visible or invisible */ typedef void (*t_parentvisfn)(t_gobj *x, struct _glist *glist, - t_word *data, t_template *tmpl, float basex, float basey, + t_word *data, t_template *tmpl, t_float basex, t_float basey, int flag); /* field a mouse click */ typedef int (*t_parentclickfn)(t_gobj *x, struct _glist *glist, t_word *data, t_template *tmpl, t_scalar *sc, t_array *ap, - float basex, float basey, + t_float basex, t_float basey, int xpix, int ypix, int shift, int alt, int dbl, int doit); struct _parentwidgetbehavior @@ -380,18 +380,18 @@ EXTERN void glist_sort(t_glist *canvas); EXTERN void glist_read(t_glist *x, t_symbol *filename, t_symbol *format); EXTERN void glist_mergefile(t_glist *x, t_symbol *filename, t_symbol *format); -EXTERN float glist_pixelstox(t_glist *x, float xpix); -EXTERN float glist_pixelstoy(t_glist *x, float ypix); -EXTERN float glist_xtopixels(t_glist *x, float xval); -EXTERN float glist_ytopixels(t_glist *x, float yval); -EXTERN float glist_dpixtodx(t_glist *x, float dxpix); -EXTERN float glist_dpixtody(t_glist *x, float dypix); +EXTERN t_float glist_pixelstox(t_glist *x, t_float xpix); +EXTERN t_float glist_pixelstoy(t_glist *x, t_float ypix); +EXTERN t_float glist_xtopixels(t_glist *x, t_float xval); +EXTERN t_float glist_ytopixels(t_glist *x, t_float yval); +EXTERN t_float glist_dpixtodx(t_glist *x, t_float dxpix); +EXTERN t_float glist_dpixtody(t_glist *x, t_float dypix); EXTERN void glist_getnextxy(t_glist *gl, int *xval, int *yval); EXTERN void glist_glist(t_glist *g, t_symbol *s, int argc, t_atom *argv); EXTERN t_glist *glist_addglist(t_glist *g, t_symbol *sym, - float x1, float y1, float x2, float y2, - float px1, float py1, float px2, float py2); + t_float x1, t_float y1, t_float x2, t_float y2, + t_float px1, t_float py1, t_float px2, t_float py2); EXTERN void glist_arraydialog(t_glist *parent, t_symbol *name, t_floatarg size, t_floatarg saveit, t_floatarg newgraph); EXTERN t_binbuf *glist_writetobinbuf(t_glist *x, int wholething); @@ -502,7 +502,7 @@ EXTERN int canvas_getindex(t_canvas *x, t_gobj *y); EXTERN void canvas_connect(t_canvas *x, t_floatarg fwhoout, t_floatarg foutno,t_floatarg fwhoin, t_floatarg finno); EXTERN void canvas_disconnect(t_canvas *x, - float index1, float outno, float index2, float inno); + t_float index1, t_float outno, t_float index2, t_float inno); EXTERN int canvas_isconnected (t_canvas *x, t_text *ob1, int n1, t_text *ob2, int n2); EXTERN void canvas_selectinrect(t_canvas *x, int lox, int loy, int hix, int hiy); @@ -545,21 +545,21 @@ EXTERN void word_restore(t_word *wp, t_template *tmpl, EXTERN t_scalar *scalar_new(t_glist *owner, t_symbol *templatesym); EXTERN void word_free(t_word *wp, t_template *tmpl); -EXTERN void scalar_getbasexy(t_scalar *x, float *basex, float *basey); +EXTERN void scalar_getbasexy(t_scalar *x, t_float *basex, t_float *basey); EXTERN void scalar_redraw(t_scalar *x, t_glist *glist); /* ------helper routines for "garrays" and "plots" -------------- */ EXTERN int array_doclick(t_array *array, t_glist *glist, t_scalar *sc, t_array *ap, t_symbol *elemtemplatesym, - float linewidth, float xloc, float xinc, float yloc, float scalarvis, + t_float linewidth, t_float xloc, t_float xinc, t_float yloc, t_float scalarvis, t_fielddesc *xfield, t_fielddesc *yfield, t_fielddesc *wfield, int xpix, int ypix, int shift, int alt, int dbl, int doit); EXTERN void array_getcoordinate(t_glist *glist, char *elem, int xonset, int yonset, int wonset, int indx, - float basex, float basey, float xinc, + t_float basex, t_float basey, t_float xinc, t_fielddesc *xfielddesc, t_fielddesc *yfielddesc, t_fielddesc *wfielddesc, - float *xp, float *yp, float *wp); + t_float *xp, t_float *yp, t_float *wp); EXTERN int array_getfields(t_symbol *elemtemplatesym, t_canvas **elemtemplatecanvasp, @@ -599,9 +599,9 @@ EXTERN void template_setsymbol(t_template *x, t_symbol *fieldname, EXTERN t_float fielddesc_getcoord(t_fielddesc *f, t_template *tmpl, t_word *wp, int loud); EXTERN void fielddesc_setcoord(t_fielddesc *f, t_template *tmpl, - t_word *wp, float pix, int loud); -EXTERN t_float fielddesc_cvttocoord(t_fielddesc *f, float val); -EXTERN float fielddesc_cvtfromcoord(t_fielddesc *f, float coord); + t_word *wp, t_float pix, int loud); +EXTERN t_float fielddesc_cvttocoord(t_fielddesc *f, t_float val); +EXTERN t_float fielddesc_cvtfromcoord(t_fielddesc *f, t_float coord); /* ----------------------- guiconnects, g_guiconnect.c --------- */ diff --git a/pd/src/g_editor.c b/pd/src/g_editor.c index aa8b35c0..9f3097de 100644 --- a/pd/src/g_editor.c +++ b/pd/src/g_editor.c @@ -381,7 +381,7 @@ static void *canvas_undo_set_disconnect(t_canvas *x, } void canvas_disconnect(t_canvas *x, - float index1, float outno, float index2, float inno) + t_float index1, t_float outno, t_float index2, t_float inno) { t_linetraverser t; t_outconnect *oc; @@ -792,6 +792,17 @@ static t_gobj *canvas_findhitbox(t_canvas *x, int xpos, int ypos, if (canvas_hitbox(x, y, xpos, ypos, &x1, &y1, &x2, &y2) && (x1 > *x1p)) *x1p = x1, *y1p = y1, *x2p = x2, *y2p = y2, rval = y; + } + /* if there are at least two selected objects, we'd prefer + to find a selected one (never mind which) to the one we got. */ + if (x->gl_editor && x->gl_editor->e_selection && + x->gl_editor->e_selection->sel_next && !glist_isselected(x, y)) + { + t_selection *sel; + for (sel = x->gl_editor->e_selection; sel; sel = sel->sel_next) + if (canvas_hitbox(x, sel->sel_what, xpos, ypos, &x1, &y1, &x2, &y2)) + *x1p = x1, *y1p = y1, *x2p = x2, *y2p = y2, + rval = sel->sel_what; } return (rval); } @@ -893,7 +904,7 @@ static void canvas_donecanvasdialog(t_glist *x, { - float xperpix, yperpix, x1, y1, x2, y2, xpix, ypix, xmargin, ymargin; + t_float xperpix, yperpix, x1, y1, x2, y2, xpix, ypix, xmargin, ymargin; int graphme, redraw = 0; xperpix = atom_getfloatarg(0, argc, argv); @@ -966,7 +977,7 @@ static void canvas_donecanvasdialog(t_glist *x, /* called from the gui when a popup menu comes back with "properties," "open," or "help." */ -static void canvas_done_popup(t_canvas *x, float which, float xpos, float ypos) +static void canvas_done_popup(t_canvas *x, t_float which, t_float xpos, t_float ypos) { char pathbuf[MAXPDSTRING], namebuf[MAXPDSTRING]; t_gobj *y; @@ -1201,16 +1212,16 @@ void canvas_doclick(t_canvas *x, int xpos, int ypos, int which, { t_linetraverser t; t_outconnect *oc; - float fx = xpos, fy = ypos; + t_float fx = xpos, fy = ypos; t_glist *glist2 = glist_getcanvas(x); linetraverser_start(&t, glist2); while (oc = linetraverser_next(&t)) { - float lx1 = t.tr_lx1, ly1 = t.tr_ly1, + t_float lx1 = t.tr_lx1, ly1 = t.tr_ly1, lx2 = t.tr_lx2, ly2 = t.tr_ly2; - float area = (lx2 - lx1) * (fy - ly1) - + t_float area = (lx2 - lx1) * (fy - ly1) - (ly2 - ly1) * (fx - lx1); - float dsquare = (lx2-lx1) * (lx2-lx1) + (ly2-ly1) * (ly2-ly1); + t_float dsquare = (lx2-lx1) * (lx2-lx1) + (ly2-ly1) * (ly2-ly1); if (area * area >= 50 * dsquare) continue; if ((lx2-lx1) * (fx-lx1) + (ly2-ly1) * (fy-ly1) < 0) continue; if ((lx2-lx1) * (lx2-fx) + (ly2-ly1) * (ly2-fy) < 0) continue; @@ -1493,9 +1504,9 @@ void canvas_key(t_canvas *x, t_symbol *s, int ac, t_atom *av) keynum = 0, gotkeysym = gensym("Right"); #endif if (keynumsym->s_thing && down) - pd_float(keynumsym->s_thing, (float)keynum); + pd_float(keynumsym->s_thing, (t_float)keynum); if (keyupsym->s_thing && !down) - pd_float(keyupsym->s_thing, (float)keynum); + pd_float(keyupsym->s_thing, (t_float)keynum); if (keynamesym->s_thing) { t_atom at[2]; @@ -1512,7 +1523,7 @@ void canvas_key(t_canvas *x, t_symbol *s, int ac, t_atom *av) if (x->gl_editor->e_grab && x->gl_editor->e_keyfn && keynum) (* x->gl_editor->e_keyfn) - (x->gl_editor->e_grab, (float)keynum); + (x->gl_editor->e_grab, (t_float)keynum); /* if a text editor is open send the key on, as long as it is either "real" (has a key number) or else is an arrow key. */ else if (x->gl_editor->e_textedfor && (keynum @@ -2382,7 +2393,7 @@ static void canvas_dofont(t_canvas *x, t_floatarg font, t_floatarg xresize, static void canvas_font(t_canvas *x, t_floatarg font, t_floatarg resize, t_floatarg whichresize) { - float realresize, realresx = 1, realresy = 1; + t_float realresize, realresx = 1, realresy = 1; t_canvas *x2 = canvas_getrootfor(x); if (!resize) realresize = 1; else diff --git a/pd/src/g_graph.c b/pd/src/g_graph.c index 1f449a63..f4196def 100644 --- a/pd/src/g_graph.c +++ b/pd/src/g_graph.c @@ -181,11 +181,11 @@ t_canvas *glist_getcanvas(t_glist *x) return((t_canvas *)x); } -static float gobj_getxforsort(t_gobj *g) +static t_float gobj_getxforsort(t_gobj *g) { if (pd_class(&g->g_pd) == scalar_class) { - float x1, y1; + t_float x1, y1; scalar_getbasexy((t_scalar *)g, &x1, &y1); return(x1); } @@ -195,7 +195,7 @@ static float gobj_getxforsort(t_gobj *g) static t_gobj *glist_merge(t_glist *x, t_gobj *g1, t_gobj *g2) { t_gobj *g = 0, *g9 = 0; - float f1 = 0, f2 = 0; + t_float f1 = 0, f2 = 0; if (g1) f1 = gobj_getxforsort(g1); if (g2) @@ -257,11 +257,11 @@ static t_gobj *glist_dosort(t_glist *x, void glist_sort(t_glist *x) { int nitems = 0, foo = 0; - float lastx = -1e37; + t_float lastx = -1e37; t_gobj *g; for (g = x->gl_list; g; g = g->g_next) { - float x1 = gobj_getxforsort(g); + t_float x1 = gobj_getxforsort(g); if (x1 < lastx) foo = 1; lastx = x1; @@ -505,7 +505,7 @@ static void graph_ylabel(t_glist *x, t_symbol *s, int argc, t_atom *argv) /****** routines to convert pixels to X or Y value and vice versa ******/ /* convert an x pixel value to an x coordinate value */ -float glist_pixelstox(t_glist *x, float xpix) +t_float glist_pixelstox(t_glist *x, t_float xpix) { /* if we appear as a text box on parent, our range in our coordinates (x1, etc.) specifies the coordinate range @@ -533,7 +533,7 @@ float glist_pixelstox(t_glist *x, float xpix) } } -float glist_pixelstoy(t_glist *x, float ypix) +t_float glist_pixelstoy(t_glist *x, t_float ypix) { if (!x->gl_isgraph) return (x->gl_y1 + (x->gl_y2 - x->gl_y1) * ypix); @@ -552,7 +552,7 @@ float glist_pixelstoy(t_glist *x, float ypix) } /* convert an x coordinate value to an x pixel location in window */ -float glist_xtopixels(t_glist *x, float xval) +t_float glist_xtopixels(t_glist *x, t_float xval) { if (!x->gl_isgraph) return ((xval - x->gl_x1) / (x->gl_x2 - x->gl_x1)); @@ -569,7 +569,7 @@ float glist_xtopixels(t_glist *x, float xval) } } -float glist_ytopixels(t_glist *x, float yval) +t_float glist_ytopixels(t_glist *x, t_float yval) { if (!x->gl_isgraph) return ((yval - x->gl_y1) / (x->gl_y2 - x->gl_y1)); @@ -589,12 +589,12 @@ float glist_ytopixels(t_glist *x, float yval) /* convert an X screen distance to an X coordinate increment. This is terribly inefficient; but probably not a big enough CPU hog to warrant optimizing. */ -float glist_dpixtodx(t_glist *x, float dxpix) +t_float glist_dpixtodx(t_glist *x, t_float dxpix) { return (dxpix * (glist_pixelstox(x, 1) - glist_pixelstox(x, 0))); } -float glist_dpixtody(t_glist *x, float dypix) +t_float glist_dpixtody(t_glist *x, t_float dypix) { return (dypix * (glist_pixelstoy(x, 1) - glist_pixelstoy(x, 0))); } @@ -723,7 +723,7 @@ static void graph_vis(t_gobj *gr, t_glist *parent_glist, int vis) if (vis) { int i; - float f; + t_float f; t_gobj *g; t_symbol *arrayname; t_garray *ga; @@ -741,16 +741,16 @@ static void graph_vis(t_gobj *gr, t_glist *parent_glist, int vis) { i -= sys_fontheight(glist_getfont(x)); sys_vgui(".x%lx.c create text %d %d -text {%s} -anchor nw\ - -font -*-courier-bold--normal--%d-* -tags %s\n", - (long)glist_getcanvas(x), x1, i, arrayname->s_name, - sys_hostfontsize(glist_getfont(x)), tag); + -font {{%s} -%d %s} -tags %s\n", + (long)glist_getcanvas(x), x1, i, arrayname->s_name, sys_font, + sys_hostfontsize(glist_getfont(x)), sys_fontweight, tag); } /* draw ticks on horizontal borders. If lperb field is zero, this is disabled. */ if (x->gl_xtick.k_lperb) { - float upix, lpix; + t_float upix, lpix; if (y2 < y1) upix = y1, lpix = y2; else upix = y2, lpix = y1; @@ -787,7 +787,7 @@ static void graph_vis(t_gobj *gr, t_glist *parent_glist, int vis) /* draw ticks in vertical borders*/ if (x->gl_ytick.k_lperb) { - float ubound, lbound; + t_float ubound, lbound; if (x->gl_y2 < x->gl_y1) ubound = x->gl_y1, lbound = x->gl_y2; else ubound = x->gl_y2, lbound = x->gl_y1; @@ -823,21 +823,22 @@ static void graph_vis(t_gobj *gr, t_glist *parent_glist, int vis) /* draw x labels */ for (i = 0; i < x->gl_nxlabels; i++) sys_vgui(".x%lx.c create text\ - %d %d -text {%s} -font -*-courier-bold--normal--%d-* -tags %s\n", + %d %d -text {%s} -font {{%s} -%d %s} -tags %s\n", glist_getcanvas(x), (int)glist_xtopixels(x, atof(x->gl_xlabel[i]->s_name)), - (int)glist_ytopixels(x, x->gl_xlabely), x->gl_xlabel[i]->s_name, - glist_getfont(x), tag); + (int)glist_ytopixels(x, x->gl_xlabely), + x->gl_xlabel[i]->s_name, sys_font, + glist_getfont(x), sys_fontweight, tag); /* draw y labels */ for (i = 0; i < x->gl_nylabels; i++) sys_vgui(".x%lx.c create text\ - %d %d -text {%s} -font -*-courier-bold--normal--%d-* -tags %s\n", + %d %d -text {%s} -font {{%s} -%d %s} -tags %s\n", glist_getcanvas(x), (int)glist_xtopixels(x, x->gl_ylabelx), (int)glist_ytopixels(x, atof(x->gl_ylabel[i]->s_name)), - x->gl_ylabel[i]->s_name, - glist_getfont(x), tag); + x->gl_ylabel[i]->s_name, sys_font, + glist_getfont(x), sys_fontweight, tag); /* draw contents of graph as glist */ for (g = x->gl_list; g; g = g->g_next) @@ -990,19 +991,19 @@ static void graph_delete(t_gobj *z, t_glist *glist) glist_delete(x, y); } -static float graph_lastxpix, graph_lastypix; +static t_float graph_lastxpix, graph_lastypix; static void graph_motion(void *z, t_floatarg dx, t_floatarg dy) { t_glist *x = (t_glist *)z; - float newxpix = graph_lastxpix + dx, newypix = graph_lastypix + dy; + t_float newxpix = graph_lastxpix + dx, newypix = graph_lastypix + dy; t_garray *a = (t_garray *)(x->gl_list); int oldx = 0.5 + glist_pixelstox(x, graph_lastxpix); int newx = 0.5 + glist_pixelstox(x, newxpix); t_word *vec; int nelem, i; - float oldy = glist_pixelstoy(x, graph_lastypix); - float newy = glist_pixelstoy(x, newypix); + t_float oldy = glist_pixelstoy(x, graph_lastypix); + t_float newy = glist_pixelstoy(x, newypix); graph_lastxpix = newxpix; graph_lastypix = newypix; /* verify that the array is OK */ @@ -1020,13 +1021,13 @@ static void graph_motion(void *z, t_floatarg dx, t_floatarg dy) { for (i = oldx + 1; i <= newx; i++) vec[i].w_float = newy + (oldy - newy) * - ((float)(newx - i))/(float)(newx - oldx); + ((t_float)(newx - i))/(t_float)(newx - oldx); } else if (oldx > newx + 1) { for (i = oldx - 1; i >= newx; i--) vec[i].w_float = newy + (oldy - newy) * - ((float)(newx - i))/(float)(newx - oldx); + ((t_float)(newx - i))/(t_float)(newx - oldx); } else vec[newx].w_float = newy; garray_redraw(a); diff --git a/pd/src/g_hdial.c b/pd/src/g_hdial.c index df595126..ace2ce66 100644 --- a/pd/src/g_hdial.c +++ b/pd/src/g_hdial.c @@ -73,10 +73,10 @@ void hradio_draw_new(t_hradio *x, t_glist *glist) x->x_drawn = x->x_on; } sys_vgui(".x%lx.c create text %d %d -text {%s} -anchor w \ - -font {%s %d bold} -fill #%6.6x -tags %lxLABEL\n", + -font {{%s} -%d %s} -fill #%6.6x -tags %lxLABEL\n", canvas, xx11b+x->x_gui.x_ldx, yy11+x->x_gui.x_ldy, strcmp(x->x_gui.x_lab->s_name, "empty")?x->x_gui.x_lab->s_name:"", - x->x_gui.x_font, x->x_gui.x_fontsize, + x->x_gui.x_font, x->x_gui.x_fontsize, sys_fontweight, x->x_gui.x_lcol, x); if(!x->x_gui.x_fsf.x_snd_able) sys_vgui(".x%lx.c create rectangle %d %d %d %d -tags %lxOUT%d\n", @@ -141,8 +141,8 @@ void hradio_draw_config(t_hradio* x, t_glist* glist) t_canvas *canvas=glist_getcanvas(glist); int n=x->x_number, i; - sys_vgui(".x%lx.c itemconfigure %lxLABEL -font {%s %d bold} -fill #%6.6x -text {%s} \n", - canvas, x, x->x_gui.x_font, x->x_gui.x_fontsize, + sys_vgui(".x%lx.c itemconfigure %lxLABEL -font {{%s} -%d %s} -fill #%6.6x -text {%s} \n", + canvas, x, x->x_gui.x_font, x->x_gui.x_fontsize, sys_fontweight, x->x_gui.x_fsf.x_selected?IEM_GUI_COLOR_SELECTED:x->x_gui.x_lcol, strcmp(x->x_gui.x_lab->s_name, "empty")?x->x_gui.x_lab->s_name:""); for(i=0; ix_gui, srl); if (pd_class(&x->x_gui.x_obj.ob_pd) == hradio_old_class) hchange = x->x_change; - sprintf(buf, "pdtk_iemgui_dialog %%s hradio \ + sprintf(buf, "pdtk_iemgui_dialog %%s |hradio| \ ----------dimensions(pix):----------- %d %d size: 0 0 empty \ empty 0.0 empty 0.0 empty %d \ %d new-only new&old %d %d number: %d \ @@ -347,14 +347,14 @@ static void hradio_bang(t_hradio *x) { if((x->x_change)&&(x->x_on != x->x_on_old)) { - SETFLOAT(x->x_at, (float)x->x_on_old); + SETFLOAT(x->x_at, (t_float)x->x_on_old); SETFLOAT(x->x_at+1, 0.0); outlet_list(x->x_gui.x_obj.ob_outlet, &s_list, 2, x->x_at); if(x->x_gui.x_fsf.x_snd_able && x->x_gui.x_snd->s_thing) pd_list(x->x_gui.x_snd->s_thing, &s_list, 2, x->x_at); } x->x_on_old = x->x_on; - SETFLOAT(x->x_at, (float)x->x_on); + SETFLOAT(x->x_at, (t_float)x->x_on); SETFLOAT(x->x_at+1, 1.0); outlet_list(x->x_gui.x_obj.ob_outlet, &s_list, 2, x->x_at); if(x->x_gui.x_fsf.x_snd_able && x->x_gui.x_snd->s_thing) @@ -381,7 +381,7 @@ static void hradio_fout(t_hradio *x, t_floatarg f) { if((x->x_change)&&(i != x->x_on_old)) { - SETFLOAT(x->x_at, (float)x->x_on_old); + SETFLOAT(x->x_at, (t_float)x->x_on_old); SETFLOAT(x->x_at+1, 0.0); outlet_list(x->x_gui.x_obj.ob_outlet, &s_list, 2, x->x_at); if(x->x_gui.x_fsf.x_snd_able && x->x_gui.x_snd->s_thing) @@ -392,7 +392,7 @@ static void hradio_fout(t_hradio *x, t_floatarg f) x->x_on = i; (*x->x_gui.x_draw)(x, x->x_gui.x_glist, IEM_GUI_DRAW_MODE_UPDATE); x->x_on_old = x->x_on; - SETFLOAT(x->x_at, (float)x->x_on); + SETFLOAT(x->x_at, (t_float)x->x_on); SETFLOAT(x->x_at+1, 1.0); outlet_list(x->x_gui.x_obj.ob_outlet, &s_list, 2, x->x_at); if(x->x_gui.x_fsf.x_snd_able && x->x_gui.x_snd->s_thing) @@ -425,7 +425,7 @@ static void hradio_float(t_hradio *x, t_floatarg f) { if(x->x_gui.x_fsf.x_put_in2out) { - SETFLOAT(x->x_at, (float)x->x_on_old); + SETFLOAT(x->x_at, (t_float)x->x_on_old); SETFLOAT(x->x_at+1, 0.0); outlet_list(x->x_gui.x_obj.ob_outlet, &s_list, 2, x->x_at); if(x->x_gui.x_fsf.x_snd_able && x->x_gui.x_snd->s_thing) @@ -439,7 +439,7 @@ static void hradio_float(t_hradio *x, t_floatarg f) x->x_on_old = x->x_on; if(x->x_gui.x_fsf.x_put_in2out) { - SETFLOAT(x->x_at, (float)x->x_on); + SETFLOAT(x->x_at, (t_float)x->x_on); SETFLOAT(x->x_at+1, 1.0); outlet_list(x->x_gui.x_obj.ob_outlet, &s_list, 2, x->x_at); if(x->x_gui.x_fsf.x_snd_able && x->x_gui.x_snd->s_thing) @@ -464,7 +464,7 @@ static void hradio_click(t_hradio *x, t_floatarg xpos, t_floatarg ypos, t_floata { int xx = (int)xpos - (int)text_xpix(&x->x_gui.x_obj, x->x_gui.x_glist); - hradio_fout(x, (float)(xx / x->x_gui.x_w)); + hradio_fout(x, (t_float)(xx / x->x_gui.x_w)); } static int hradio_newclick(t_gobj *z, struct _glist *glist, int xpix, int ypix, int shift, int alt, int dbl, int doit) @@ -589,7 +589,7 @@ static void *hradio_donew(t_symbol *s, int argc, t_atom *argv, int old) if(x->x_gui.x_fsf.x_font_style == 1) strcpy(x->x_gui.x_font, "helvetica"); else if(x->x_gui.x_fsf.x_font_style == 2) strcpy(x->x_gui.x_font, "times"); else { x->x_gui.x_fsf.x_font_style = 0; - strcpy(x->x_gui.x_font, "courier"); } + strcpy(x->x_gui.x_font, sys_font); } if(num < 1) num = 1; if(num > IEM_RADIO_MAX) diff --git a/pd/src/g_hslider.c b/pd/src/g_hslider.c index 4958639a..8dc3d0e6 100644 --- a/pd/src/g_hslider.c +++ b/pd/src/g_hslider.c @@ -76,11 +76,12 @@ static void hslider_draw_new(t_hslider *x, t_glist *glist) canvas, r, ypos+1, r, ypos + x->x_gui.x_h, x->x_gui.x_fcol, x); sys_vgui(".x%lx.c create text %d %d -text {%s} -anchor w \ - -font {%s %d bold} -fill #%6.6x -tags %lxLABEL\n", + -font {{%s} -%d %s} -fill #%6.6x -tags %lxLABEL\n", canvas, xpos+x->x_gui.x_ldx, ypos+x->x_gui.x_ldy, strcmp(x->x_gui.x_lab->s_name, "empty")?x->x_gui.x_lab->s_name:"", - x->x_gui.x_font, x->x_gui.x_fontsize, x->x_gui.x_lcol, x); + x->x_gui.x_font, x->x_gui.x_fontsize, sys_fontweight, + x->x_gui.x_lcol, x); if(!x->x_gui.x_fsf.x_snd_able) sys_vgui(".x%lx.c create rectangle %d %d %d %d -tags %lxOUT%d\n", canvas, xpos-3, ypos + x->x_gui.x_h-1, @@ -136,8 +137,8 @@ static void hslider_draw_config(t_hslider* x,t_glist* glist) { t_canvas *canvas=glist_getcanvas(glist); - sys_vgui(".x%lx.c itemconfigure %lxLABEL -font {%s %d bold} -fill #%6.6x -text {%s} \n", - canvas, x, x->x_gui.x_font, x->x_gui.x_fontsize, + sys_vgui(".x%lx.c itemconfigure %lxLABEL -font {{%s} -%d %s} -fill #%6.6x -text {%s} \n", + canvas, x, x->x_gui.x_font, x->x_gui.x_fontsize, sys_fontweight, x->x_gui.x_fsf.x_selected?IEM_GUI_COLOR_SELECTED:x->x_gui.x_lcol, strcmp(x->x_gui.x_lab->s_name, "empty")?x->x_gui.x_lab->s_name:""); sys_vgui(".x%lx.c itemconfigure %lxKNOB -fill #%6.6x\n", canvas, x, x->x_gui.x_fcol); @@ -222,7 +223,7 @@ static void hslider_save(t_gobj *z, t_binbuf *b) binbuf_addv(b, "ssiisiiffiisssiiiiiiiii", gensym("#X"),gensym("obj"), (int)x->x_gui.x_obj.te_xpix, (int)x->x_gui.x_obj.te_ypix, gensym("hsl"), x->x_gui.x_w, x->x_gui.x_h, - (float)x->x_min, (float)x->x_max, + (t_float)x->x_min, (t_float)x->x_max, x->x_lin0_log1, iem_symargstoint(&x->x_gui.x_isa), srl[0], srl[1], srl[2], x->x_gui.x_ldx, x->x_gui.x_ldy, @@ -285,7 +286,7 @@ static void hslider_properties(t_gobj *z, t_glist *owner) t_symbol *srl[3]; iemgui_properties(&x->x_gui, srl); - sprintf(buf, "pdtk_iemgui_dialog %%s HSLIDER \ + sprintf(buf, "pdtk_iemgui_dialog %%s |hsl| \ --------dimensions(pix)(pix):-------- %d %d width: %d %d height: \ -----------output-range:----------- %g left: %g right: %g \ %d lin log %d %d empty %d \ @@ -586,7 +587,7 @@ static void *hslider_new(t_symbol *s, int argc, t_atom *argv) if(x->x_gui.x_fsf.x_font_style == 1) strcpy(x->x_gui.x_font, "helvetica"); else if(x->x_gui.x_fsf.x_font_style == 2) strcpy(x->x_gui.x_font, "times"); else { x->x_gui.x_fsf.x_font_style = 0; - strcpy(x->x_gui.x_font, "courier"); } + strcpy(x->x_gui.x_font, sys_font); } if(x->x_gui.x_fsf.x_rcv_able) pd_bind(&x->x_gui.x_obj.ob_pd, x->x_gui.x_rcv); x->x_gui.x_ldx = ldx; diff --git a/pd/src/g_io.c b/pd/src/g_io.c index 6c173c27..2ee89c1c 100644 --- a/pd/src/g_io.c +++ b/pd/src/g_io.c @@ -292,10 +292,10 @@ typedef struct _voutlet t_canvas *x_canvas; t_outlet *x_parentoutlet; int x_bufsize; - t_float *x_buf; /* signal buffer; zero if not a signal */ - t_float *x_endbuf; - t_float *x_empty; /* next to read out of buffer in epilog code */ - t_float *x_write; /* next to write in to buffer */ + t_sample *x_buf; /* signal buffer; zero if not a signal */ + t_sample *x_endbuf; + t_sample *x_empty; /* next to read out of buffer in epilog code */ + t_sample *x_write; /* next to write in to buffer */ int x_hop; /* hopsize */ /* vice versa from the inlet, if we don't block, this holds the parent's outlet signal, valid between the prolog and the dsp setup @@ -373,7 +373,7 @@ t_int *voutlet_perform(t_int *w) t_voutlet *x = (t_voutlet *)(w[1]); t_float *in = (t_float *)(w[2]); int n = (int)(w[3]); - t_float *out = x->x_write, *outwas = out; + t_sample *out = x->x_write, *outwas = out; #if 0 if (tot < 5) post("-in %lx out %lx n %d", in, out, n); if (tot < 5) post("-buf %lx endbuf %lx", x->x_buf, x->x_endbuf); @@ -393,10 +393,10 @@ t_int *voutlet_perform(t_int *w) static t_int *voutlet_doepilog(t_int *w) { t_voutlet *x = (t_voutlet *)(w[1]); - t_float *out = (t_float *)(w[2]); + t_sample *out = (t_sample *)(w[2]); int n = (int)(w[3]); - t_float *in = x->x_empty; + t_sample *in = x->x_empty; if (x->x_updown.downsample != x->x_updown.upsample) out = x->x_updown.s_vec; @@ -413,8 +413,8 @@ static t_int *voutlet_doepilog_resampling(t_int *w) { t_voutlet *x = (t_voutlet *)(w[1]); int n = (int)(w[2]); - t_float *in = x->x_empty; - t_float *out = x->x_updown.s_vec; + t_sample *in = x->x_empty; + t_sample *out = x->x_updown.s_vec; #if 0 if (tot < 5) post("outlet in %lx out %lx n %lx", in, out, n), tot++; @@ -504,9 +504,9 @@ void voutlet_dspepilog(struct _voutlet *x, t_signal **parentsigs, if (bufsize < myvecsize) bufsize = myvecsize; if (bufsize != (oldbufsize = x->x_bufsize)) { - t_float *buf = x->x_buf; + t_sample *buf = x->x_buf; t_freebytes(buf, oldbufsize * sizeof(*buf)); - buf = (t_float *)t_getbytes(bufsize * sizeof(*buf)); + buf = (t_sample *)t_getbytes(bufsize * sizeof(*buf)); memset((char *)buf, 0, bufsize * sizeof(*buf)); x->x_bufsize = bufsize; x->x_endbuf = buf + bufsize; @@ -556,7 +556,7 @@ static void *voutlet_newsig(t_symbol *s) x->x_parentoutlet = canvas_addoutlet(x->x_canvas, &x->x_obj.ob_pd, &s_signal); inlet_new(&x->x_obj, &x->x_obj.ob_pd, &s_signal, &s_signal); - x->x_endbuf = x->x_buf = (t_float *)getbytes(0); + x->x_endbuf = x->x_buf = (t_sample *)getbytes(0); x->x_bufsize = 0; resample_init(&x->x_updown); diff --git a/pd/src/g_mycanvas.c b/pd/src/g_mycanvas.c index 93f96ff5..1040c11f 100644 --- a/pd/src/g_mycanvas.c +++ b/pd/src/g_mycanvas.c @@ -44,10 +44,11 @@ void my_canvas_draw_new(t_my_canvas *x, t_glist *glist) xpos + x->x_gui.x_w, ypos + x->x_gui.x_h, x->x_gui.x_bcol, x); sys_vgui(".x%lx.c create text %d %d -text {%s} -anchor w \ - -font {%s %d bold} -fill #%6.6x -tags %lxLABEL\n", + -font {{%s} -%d %s} -fill #%6.6x -tags %lxLABEL\n", canvas, xpos+x->x_gui.x_ldx, ypos+x->x_gui.x_ldy, strcmp(x->x_gui.x_lab->s_name, "empty")?x->x_gui.x_lab->s_name:"", - x->x_gui.x_font, x->x_gui.x_fontsize, x->x_gui.x_lcol, x); + x->x_gui.x_font, x->x_gui.x_fontsize, sys_fontweight, + x->x_gui.x_lcol, x); } void my_canvas_draw_move(t_my_canvas *x, t_glist *glist) @@ -84,8 +85,9 @@ void my_canvas_draw_config(t_my_canvas* x, t_glist* glist) x->x_gui.x_bcol, x->x_gui.x_bcol); sys_vgui(".x%lx.c itemconfigure %lxBASE -outline #%6.6x\n", canvas, x, x->x_gui.x_fsf.x_selected?IEM_GUI_COLOR_SELECTED:x->x_gui.x_bcol); - sys_vgui(".x%lx.c itemconfigure %lxLABEL -font {%s %d bold} -fill #%6.6x -text {%s} \n", - canvas, x, x->x_gui.x_font, x->x_gui.x_fontsize, x->x_gui.x_lcol, + sys_vgui(".x%lx.c itemconfigure %lxLABEL -font {{%s} -%d %s} -fill #%6.6x -text {%s} \n", + canvas, x, x->x_gui.x_font, x->x_gui.x_fontsize, sys_fontweight, + x->x_gui.x_lcol, strcmp(x->x_gui.x_lab->s_name, "empty")?x->x_gui.x_lab->s_name:""); } @@ -152,7 +154,7 @@ static void my_canvas_properties(t_gobj *z, t_glist *owner) t_symbol *srl[3]; iemgui_properties(&x->x_gui, srl); - sprintf(buf, "pdtk_iemgui_dialog %%s MY_CANVAS \ + sprintf(buf, "pdtk_iemgui_dialog %%s |cnv| \ ------selectable_dimensions(pix):------ %d %d size: 0.0 0.0 empty \ ------visible_rectangle(pix)(pix):------ %d width: %d height: %d \ %d empty empty %d %d empty %d \ @@ -331,7 +333,7 @@ static void *my_canvas_new(t_symbol *s, int argc, t_atom *argv) if(x->x_gui.x_fsf.x_font_style == 1) strcpy(x->x_gui.x_font, "helvetica"); else if(x->x_gui.x_fsf.x_font_style == 2) strcpy(x->x_gui.x_font, "times"); else { x->x_gui.x_fsf.x_font_style = 0; - strcpy(x->x_gui.x_font, "courier"); } + strcpy(x->x_gui.x_font, sys_font); } if (x->x_gui.x_fsf.x_rcv_able) pd_bind(&x->x_gui.x_obj.ob_pd, x->x_gui.x_rcv); x->x_gui.x_ldx = ldx; diff --git a/pd/src/g_numbox.c b/pd/src/g_numbox.c index 04c9c1bb..db25e918 100644 --- a/pd/src/g_numbox.c +++ b/pd/src/g_numbox.c @@ -195,15 +195,17 @@ static void my_numbox_draw_new(t_my_numbox *x, t_glist *glist) xpos, ypos + x->x_gui.x_h, x->x_gui.x_fcol, x); sys_vgui(".x%lx.c create text %d %d -text {%s} -anchor w \ - -font {%s %d bold} -fill #%6.6x -tags %lxLABEL\n", + -font {{%s} -%d %s} -fill #%6.6x -tags %lxLABEL\n", canvas, xpos+x->x_gui.x_ldx, ypos+x->x_gui.x_ldy, strcmp(x->x_gui.x_lab->s_name, "empty")?x->x_gui.x_lab->s_name:"", - x->x_gui.x_font, x->x_gui.x_fontsize, x->x_gui.x_lcol, x); + x->x_gui.x_font, x->x_gui.x_fontsize, sys_fontweight, + x->x_gui.x_lcol, x); my_numbox_ftoa(x); sys_vgui(".x%lx.c create text %d %d -text {%s} -anchor w \ - -font {%s %d bold} -fill #%6.6x -tags %lxNUMBER\n", + -font {{%s} -%d %s} -fill #%6.6x -tags %lxNUMBER\n", canvas, xpos+half+2, ypos+half+d, - x->x_buf, x->x_gui.x_font, x->x_gui.x_fontsize, x->x_gui.x_fcol, x); + x->x_buf, x->x_gui.x_font, x->x_gui.x_fontsize, sys_fontweight, + x->x_gui.x_fcol, x); if(!x->x_gui.x_fsf.x_snd_able) sys_vgui(".x%lx.c create rectangle %d %d %d %d -tags %lxOUT%d\n", canvas, @@ -269,12 +271,12 @@ static void my_numbox_draw_config(t_my_numbox* x,t_glist* glist) { t_canvas *canvas=glist_getcanvas(glist); - sys_vgui(".x%lx.c itemconfigure %lxLABEL -font {%s %d bold} -fill #%6.6x -text {%s} \n", - canvas, x, x->x_gui.x_font, x->x_gui.x_fontsize, + sys_vgui(".x%lx.c itemconfigure %lxLABEL -font {{%s} -%d %s} -fill #%6.6x -text {%s} \n", + canvas, x, x->x_gui.x_font, x->x_gui.x_fontsize, sys_fontweight, x->x_gui.x_fsf.x_selected?IEM_GUI_COLOR_SELECTED:x->x_gui.x_lcol, strcmp(x->x_gui.x_lab->s_name, "empty")?x->x_gui.x_lab->s_name:""); - sys_vgui(".x%lx.c itemconfigure %lxNUMBER -font {%s %d bold} -fill #%6.6x \n", - canvas, x, x->x_gui.x_font, x->x_gui.x_fontsize, + sys_vgui(".x%lx.c itemconfigure %lxNUMBER -font {{%s} -%d %s} -fill #%6.6x \n", + canvas, x, x->x_gui.x_font, x->x_gui.x_fontsize, sys_fontweight, x->x_gui.x_fsf.x_selected?IEM_GUI_COLOR_SELECTED:x->x_gui.x_fcol); sys_vgui(".x%lx.c itemconfigure %lxBASE1 -fill #%6.6x\n", canvas, x, x->x_gui.x_bcol); @@ -389,7 +391,7 @@ static void my_numbox_save(t_gobj *z, t_binbuf *b) binbuf_addv(b, "ssiisiiffiisssiiiiiiifi", gensym("#X"),gensym("obj"), (int)x->x_gui.x_obj.te_xpix, (int)x->x_gui.x_obj.te_ypix, gensym("nbx"), x->x_gui.x_w, x->x_gui.x_h, - (float)x->x_min, (float)x->x_max, + (t_float)x->x_min, (t_float)x->x_max, x->x_lin0_log1, iem_symargstoint(&x->x_gui.x_isa), srl[0], srl[1], srl[2], x->x_gui.x_ldx, x->x_gui.x_ldy, @@ -451,7 +453,7 @@ static void my_numbox_properties(t_gobj *z, t_glist *owner) sys_queuegui(x, x->x_gui.x_glist, my_numbox_draw_update); } - sprintf(buf, "pdtk_iemgui_dialog %%s NUMBERBOX \ + sprintf(buf, "pdtk_iemgui_dialog %%s |nbx| \ -------dimensions(digits)(pix):------- %d %d width: %d %d height: \ -----------output-range:----------- %g min: %g max: %d \ %d lin log %d %d log-height: %d \ @@ -806,7 +808,7 @@ static void *my_numbox_new(t_symbol *s, int argc, t_atom *argv) if(x->x_gui.x_fsf.x_font_style == 1) strcpy(x->x_gui.x_font, "helvetica"); else if(x->x_gui.x_fsf.x_font_style == 2) strcpy(x->x_gui.x_font, "times"); else { x->x_gui.x_fsf.x_font_style = 0; - strcpy(x->x_gui.x_font, "courier"); } + strcpy(x->x_gui.x_font, sys_font); } if (x->x_gui.x_fsf.x_rcv_able) pd_bind(&x->x_gui.x_obj.ob_pd, x->x_gui.x_rcv); x->x_gui.x_ldx = ldx; diff --git a/pd/src/g_readwrite.c b/pd/src/g_readwrite.c index ff93a4dd..97b56c02 100644 --- a/pd/src/g_readwrite.c +++ b/pd/src/g_readwrite.c @@ -619,15 +619,15 @@ static void canvas_saveto(t_canvas *x, t_binbuf *b) binbuf_addv(b, "ssfffffffff;", gensym("#X"), gensym("coords"), x->gl_x1, x->gl_y1, x->gl_x2, x->gl_y2, - (float)x->gl_pixwidth, (float)x->gl_pixheight, - (float)((x->gl_hidetext)?2.:1.), - (float)x->gl_xmargin, (float)x->gl_ymargin); + (t_float)x->gl_pixwidth, (t_float)x->gl_pixheight, + (t_float)((x->gl_hidetext)?2.:1.), + (t_float)x->gl_xmargin, (t_float)x->gl_ymargin); /* otherwise write in 0.38-compatible form */ else binbuf_addv(b, "ssfffffff;", gensym("#X"), gensym("coords"), x->gl_x1, x->gl_y1, x->gl_x2, x->gl_y2, - (float)x->gl_pixwidth, (float)x->gl_pixheight, - (float)x->gl_isgraph); + (t_float)x->gl_pixwidth, (t_float)x->gl_pixheight, + (t_float)x->gl_isgraph); } } diff --git a/pd/src/g_rtext.c b/pd/src/g_rtext.c index cbb0ba88..948ebcb4 100644 --- a/pd/src/g_rtext.c +++ b/pd/src/g_rtext.c @@ -15,10 +15,16 @@ #include "g_canvas.h" #include "t_tk.h" -#define LMARGIN 1 -#define RMARGIN 1 +#define LMARGIN 2 +#define RMARGIN 2 +/* for some reason, it draws text 1 pixel lower on Mac OS X (& linux too?) */ +#ifndef MSW #define TMARGIN 2 #define BMARGIN 2 +#else +#define TMARGIN 3 +#define BMARGIN 1 +#endif #define SEND_FIRST 1 #define SEND_UPDATE 2 @@ -150,7 +156,7 @@ extern int sys_oldtclversion; static void rtext_senditup(t_rtext *x, int action, int *widthp, int *heightp, int *indexp) { - float dispx, dispy; + t_float dispx, dispy; char smallbuf[200], *tempbuf; int outchars = 0, nlines = 0, ncolumns = 0, pixwide, pixhigh, font, fontwidth, fontheight, findx, findy; diff --git a/pd/src/g_scalar.c b/pd/src/g_scalar.c index 76d54007..675df500 100644 --- a/pd/src/g_scalar.c +++ b/pd/src/g_scalar.c @@ -49,7 +49,7 @@ void word_restore(t_word *wp, t_template *template, int type = datatypes->ds_type; if (type == DT_FLOAT) { - float f; + t_float f; if (argc) { f = atom_getfloat(argv); @@ -145,7 +145,7 @@ void glist_scalar(t_glist *glist, } /* -------------------- widget behavior for scalar ------------ */ -void scalar_getbasexy(t_scalar *x, float *basex, float *basey) +void scalar_getbasexy(t_scalar *x, t_float *basex, t_float *basey) { t_template *template = template_findbyname(x->sc_template); *basex = template_getfloat(template, gensym("x"), x->sc_vec, 0); @@ -160,7 +160,7 @@ static void scalar_getrect(t_gobj *z, t_glist *owner, t_canvas *templatecanvas = template_findcanvas(template); int x1 = 0x7fffffff, x2 = -0x7fffffff, y1 = 0x7fffffff, y2 = -0x7fffffff; t_gobj *y; - float basex, basey; + t_float basex, basey; scalar_getbasexy(x, &basex, &basey); /* if someone deleted the template canvas, we're just a point */ if (!templatecanvas) @@ -260,8 +260,8 @@ static void scalar_displace(t_gobj *z, t_glist *glist, int dx, int dy) gpointer_init(&gp); gpointer_setglist(&gp, glist, x); SETPOINTER(&at[0], &gp); - SETFLOAT(&at[1], (float)dx); - SETFLOAT(&at[2], (float)dy); + SETFLOAT(&at[1], (t_float)dx); + SETFLOAT(&at[2], (t_float)dy); template_notify(template, gensym("displace"), 2, at); scalar_redraw(x, glist); } @@ -283,7 +283,7 @@ static void scalar_vis(t_gobj *z, t_glist *owner, int vis) t_template *template = template_findbyname(x->sc_template); t_canvas *templatecanvas = template_findcanvas(template); t_gobj *y; - float basex, basey; + t_float basex, basey; scalar_getbasexy(x, &basex, &basey); /* if we don't know how to draw it, make a small rectangle */ if (!templatecanvas) @@ -327,14 +327,14 @@ void scalar_redraw(t_scalar *x, t_glist *glist) int scalar_doclick(t_word *data, t_template *template, t_scalar *sc, t_array *ap, struct _glist *owner, - float xloc, float yloc, int xpix, int ypix, + t_float xloc, t_float yloc, int xpix, int ypix, int shift, int alt, int dbl, int doit) { int hit = 0; t_canvas *templatecanvas = template_findcanvas(template); t_gobj *y; - float basex = template_getfloat(template, gensym("x"), data, 0); - float basey = template_getfloat(template, gensym("y"), data, 0); + t_float basex = template_getfloat(template, gensym("x"), data, 0); + t_float basey = template_getfloat(template, gensym("y"), data, 0); for (y = templatecanvas->gl_list; y; y = y->g_next) { t_parentwidgetbehavior *wb = pd_getparentwidget(&y->g_pd); diff --git a/pd/src/g_template.c b/pd/src/g_template.c index f5519e65..4d66bbed 100644 --- a/pd/src/g_template.c +++ b/pd/src/g_template.c @@ -147,7 +147,7 @@ t_float template_getfloat(t_template *x, t_symbol *fieldname, t_word *wp, { int onset, type; t_symbol *arraytype; - float val = 0; + t_float val = 0; if (template_find_field(x, fieldname, &onset, &type, &arraytype)) { if (type == DT_FLOAT) @@ -721,14 +721,14 @@ struct _fielddesc t_symbol *fd_symbol; /* the field is a constant symbol */ t_symbol *fd_varsym; /* the field is variable and this is the name */ } fd_un; - float fd_v1; /* min and max values */ - float fd_v2; - float fd_screen1; /* min and max screen values */ - float fd_screen2; - float fd_quantum; /* quantization in value */ + t_float fd_v1; /* min and max values */ + t_float fd_v2; + t_float fd_screen1; /* min and max screen values */ + t_float fd_screen2; + t_float fd_quantum; /* quantization in value */ }; -static void fielddesc_setfloat_const(t_fielddesc *fd, float f) +static void fielddesc_setfloat_const(t_fielddesc *fd, t_float f) { fd->fd_type = A_FLOAT; fd->fd_var = 0; @@ -851,9 +851,9 @@ static t_float fielddesc_getfloat(t_fielddesc *f, t_template *template, } /* convert a variable's value to a screen coordinate via its fielddesc */ -t_float fielddesc_cvttocoord(t_fielddesc *f, float val) +t_float fielddesc_cvttocoord(t_fielddesc *f, t_float val) { - float coord, pix, extreme, div; + t_float coord, pix, extreme, div; if (f->fd_v2 == f->fd_v1) return (val); div = (f->fd_screen2 - f->fd_screen1)/(f->fd_v2 - f->fd_v1); @@ -877,7 +877,7 @@ t_float fielddesc_getcoord(t_fielddesc *f, t_template *template, { if (f->fd_var) { - float val = template_getfloat(template, + t_float val = template_getfloat(template, f->fd_un.fd_varsym, wp, loud); return (fielddesc_cvttocoord(f, val)); } @@ -909,15 +909,15 @@ static t_symbol *fielddesc_getsymbol(t_fielddesc *f, t_template *template, } /* convert from a screen coordinate to a variable value */ -float fielddesc_cvtfromcoord(t_fielddesc *f, float coord) +t_float fielddesc_cvtfromcoord(t_fielddesc *f, t_float coord) { - float val; + t_float val; if (f->fd_screen2 == f->fd_screen1) val = coord; else { - float div = (f->fd_v2 - f->fd_v1)/(f->fd_screen2 - f->fd_screen1); - float extreme; + t_float div = (f->fd_v2 - f->fd_v1)/(f->fd_screen2 - f->fd_screen1); + t_float extreme; val = f->fd_v1 + (coord - f->fd_screen1) * div; if (f->fd_quantum != 0) val = ((int)((val/f->fd_quantum) + 0.5)) * f->fd_quantum; @@ -932,11 +932,11 @@ float fielddesc_cvtfromcoord(t_fielddesc *f, float coord) } void fielddesc_setcoord(t_fielddesc *f, t_template *template, - t_word *wp, float coord, int loud) + t_word *wp, t_float coord, int loud) { if (f->fd_type == A_FLOAT && f->fd_var) { - float val = fielddesc_cvtfromcoord(f, coord); + t_float val = fielddesc_cvtfromcoord(f, coord); template_setfloat(template, f->fd_un.fd_varsym, wp, val, loud); } @@ -1040,7 +1040,7 @@ void curve_float(t_curve *x, t_floatarg f) /* -------------------- widget behavior for curve ------------ */ static void curve_getrect(t_gobj *z, t_glist *glist, - t_word *data, t_template *template, float basex, float basey, + t_word *data, t_template *template, t_float basex, t_float basey, int *xp1, int *yp1, int *xp2, int *yp2) { t_curve *x = (t_curve *)z; @@ -1072,21 +1072,21 @@ static void curve_getrect(t_gobj *z, t_glist *glist, } static void curve_displace(t_gobj *z, t_glist *glist, - t_word *data, t_template *template, float basex, float basey, + t_word *data, t_template *template, t_float basex, t_float basey, int dx, int dy) { /* refuse */ } static void curve_select(t_gobj *z, t_glist *glist, - t_word *data, t_template *template, float basex, float basey, + t_word *data, t_template *template, t_float basex, t_float basey, int state) { /* fill in later */ } static void curve_activate(t_gobj *z, t_glist *glist, - t_word *data, t_template *template, float basex, float basey, + t_word *data, t_template *template, t_float basex, t_float basey, int state) { /* fill in later */ @@ -1122,7 +1122,7 @@ static void numbertocolor(int n, char *s) } static void curve_vis(t_gobj *z, t_glist *glist, - t_word *data, t_template *template, float basex, float basey, + t_word *data, t_template *template, t_float basex, t_float basey, int vis) { t_curve *x = (t_curve *)z; @@ -1137,7 +1137,7 @@ static void curve_vis(t_gobj *z, t_glist *glist, if (n > 1) { int flags = x->x_flags, closed = (flags & CLOSED); - float width = fielddesc_getfloat(&x->x_width, template, data, 1); + t_float width = fielddesc_getfloat(&x->x_width, template, data, 1); char outline[20], fill[20]; int pix[200]; if (n > 100) @@ -1185,12 +1185,12 @@ static void curve_vis(t_gobj *z, t_glist *glist, } static int curve_motion_field; -static float curve_motion_xcumulative; -static float curve_motion_xbase; -static float curve_motion_xper; -static float curve_motion_ycumulative; -static float curve_motion_ybase; -static float curve_motion_yper; +static t_float curve_motion_xcumulative; +static t_float curve_motion_xbase; +static t_float curve_motion_xper; +static t_float curve_motion_ycumulative; +static t_float curve_motion_ybase; +static t_float curve_motion_yper; static t_glist *curve_motion_glist; static t_scalar *curve_motion_scalar; static t_array *curve_motion_array; @@ -1237,7 +1237,7 @@ static void curve_motion(void *z, t_floatarg dx, t_floatarg dy) static int curve_click(t_gobj *z, t_glist *glist, t_word *data, t_template *template, t_scalar *sc, t_array *ap, - float basex, float basey, + t_float basex, t_float basey, int xpix, int ypix, int shift, int alt, int dbl, int doit) { t_curve *x = (t_curve *)z; @@ -1438,8 +1438,8 @@ void plot_float(t_plot *x, t_floatarg f) static int plot_readownertemplate(t_plot *x, t_word *data, t_template *ownertemplate, t_symbol **elemtemplatesymp, t_array **arrayp, - float *linewidthp, float *xlocp, float *xincp, float *ylocp, float *stylep, - float *visp, float *scalarvisp, + t_float *linewidthp, t_float *xlocp, t_float *xincp, t_float *ylocp, t_float *stylep, + t_float *visp, t_float *scalarvisp, t_fielddesc **xfield, t_fielddesc **yfield, t_fielddesc **wfield) { int arrayonset, type; @@ -1538,7 +1538,7 @@ int array_getfields(t_symbol *elemtemplatesym, } static void plot_getrect(t_gobj *z, t_glist *glist, - t_word *data, t_template *template, float basex, float basey, + t_word *data, t_template *template, t_float basex, t_float basey, int *xp1, int *yp1, int *xp2, int *yp2) { t_plot *x = (t_plot *)z; @@ -1546,11 +1546,11 @@ static void plot_getrect(t_gobj *z, t_glist *glist, t_canvas *elemtemplatecanvas; t_template *elemtemplate; t_symbol *elemtemplatesym; - float linewidth, xloc, xinc, yloc, style, xsum, yval, vis, scalarvis; + t_float linewidth, xloc, xinc, yloc, style, xsum, yval, vis, scalarvis; t_array *array; int x1 = 0x7fffffff, y1 = 0x7fffffff, x2 = -0x7fffffff, y2 = -0x7fffffff; int i; - float xpix, ypix, wpix; + t_float xpix, ypix, wpix; t_fielddesc *xfielddesc, *yfielddesc, *wfielddesc; if (!plot_readownertemplate(x, data, template, &elemtemplatesym, &array, &linewidth, &xloc, &xinc, &yloc, &style, @@ -1565,7 +1565,7 @@ static void plot_getrect(t_gobj *z, t_glist *glist, int incr = (array->a_n <= 2000 ? 1 : array->a_n / 1000); for (i = 0, xsum = 0; i < array->a_n; i += incr) { - float usexloc, useyloc; + t_float usexloc, useyloc; t_gobj *y; /* get the coords of the point proper */ array_getcoordinate(glist, (char *)(array->a_vec) + i * elemsize, @@ -1585,11 +1585,11 @@ static void plot_getrect(t_gobj *z, t_glist *glist, /* check also the drawing instructions for the scalar */ if (xonset >= 0) usexloc = basex + xloc + fielddesc_cvttocoord(xfielddesc, - *(float *)(((char *)(array->a_vec) + elemsize * i) + *(t_float *)(((char *)(array->a_vec) + elemsize * i) + xonset)); else usexloc = basex + xsum, xsum += xinc; if (yonset >= 0) - yval = *(float *)(((char *)(array->a_vec) + elemsize * i) + yval = *(t_float *)(((char *)(array->a_vec) + elemsize * i) + yonset); else yval = 0; useyloc = basey + yloc + fielddesc_cvttocoord(yfielddesc, yval); @@ -1622,28 +1622,28 @@ static void plot_getrect(t_gobj *z, t_glist *glist, } static void plot_displace(t_gobj *z, t_glist *glist, - t_word *data, t_template *template, float basex, float basey, + t_word *data, t_template *template, t_float basex, t_float basey, int dx, int dy) { /* not yet */ } static void plot_select(t_gobj *z, t_glist *glist, - t_word *data, t_template *template, float basex, float basey, + t_word *data, t_template *template, t_float basex, t_float basey, int state) { /* not yet */ } static void plot_activate(t_gobj *z, t_glist *glist, - t_word *data, t_template *template, float basex, float basey, + t_word *data, t_template *template, t_float basex, t_float basey, int state) { /* not yet */ } static void plot_vis(t_gobj *z, t_glist *glist, - t_word *data, t_template *template, float basex, float basey, + t_word *data, t_template *template, t_float basex, t_float basey, int tovis) { t_plot *x = (t_plot *)z; @@ -1651,7 +1651,7 @@ static void plot_vis(t_gobj *z, t_glist *glist, t_canvas *elemtemplatecanvas; t_template *elemtemplate; t_symbol *elemtemplatesym; - float linewidth, xloc, xinc, yloc, style, usexloc, xsum, yval, vis, + t_float linewidth, xloc, xinc, yloc, style, usexloc, xsum, yval, vis, scalarvis; t_array *array; int nelem; @@ -1681,17 +1681,17 @@ static void plot_vis(t_gobj *z, t_glist *glist, { if (style == PLOTSTYLE_POINTS) { - float minyval = 1e20, maxyval = -1e20; + t_float minyval = 1e20, maxyval = -1e20; int ndrawn = 0; for (xsum = basex + xloc, i = 0; i < nelem; i++) { - float yval, xpix, ypix, nextxloc; + t_float yval, xpix, ypix, nextxloc; int ixpix, inextx; if (xonset >= 0) { usexloc = basex + xloc + - *(float *)((elem + elemsize * i) + xonset); + *(t_float *)((elem + elemsize * i) + xonset); ixpix = glist_xtopixels(glist, fielddesc_cvttocoord(xfielddesc, usexloc)); inextx = ixpix + 2; @@ -1707,7 +1707,7 @@ static void plot_vis(t_gobj *z, t_glist *glist, } if (yonset >= 0) - yval = yloc + *(float *)((elem + elemsize * i) + yonset); + yval = yloc + *(t_float *)((elem + elemsize * i) + yonset); else yval = 0; if (yval > maxyval) maxyval = yval; @@ -1734,7 +1734,7 @@ static void plot_vis(t_gobj *z, t_glist *glist, { char outline[20]; int lastpixel = -1, ndrawn = 0; - float yval = 0, wval = 0, xpix; + t_float yval = 0, wval = 0, xpix; int ixpix = 0; /* draw the trace */ numbertocolor(fielddesc_getfloat(&x->x_outlinecolor, template, @@ -1749,13 +1749,13 @@ static void plot_vis(t_gobj *z, t_glist *glist, for (i = 0, xsum = xloc; i < nelem; i++) { if (xonset >= 0) - usexloc = xloc + *(float *)((elem + elemsize * i) + usexloc = xloc + *(t_float *)((elem + elemsize * i) + xonset); else usexloc = xsum, xsum += xinc; if (yonset >= 0) - yval = *(float *)((elem + elemsize * i) + yonset); + yval = *(t_float *)((elem + elemsize * i) + yonset); else yval = 0; - wval = *(float *)((elem + elemsize * i) + wonset); + wval = *(t_float *)((elem + elemsize * i) + wonset); xpix = glist_xtopixels(glist, basex + fielddesc_cvttocoord(xfielddesc, usexloc)); ixpix = xpix + 0.5; @@ -1774,15 +1774,15 @@ static void plot_vis(t_gobj *z, t_glist *glist, lastpixel = -1; for (i = nelem-1; i >= 0; i--) { - float usexloc; + t_float usexloc; if (xonset >= 0) - usexloc = xloc + *(float *)((elem + elemsize * i) + usexloc = xloc + *(t_float *)((elem + elemsize * i) + xonset); else xsum -= xinc, usexloc = xsum; if (yonset >= 0) - yval = *(float *)((elem + elemsize * i) + yonset); + yval = *(t_float *)((elem + elemsize * i) + yonset); else yval = 0; - wval = *(float *)((elem + elemsize * i) + wonset); + wval = *(t_float *)((elem + elemsize * i) + wonset); xpix = glist_xtopixels(glist, basex + fielddesc_cvttocoord(xfielddesc, usexloc)); ixpix = xpix + 0.5; @@ -1826,13 +1826,13 @@ static void plot_vis(t_gobj *z, t_glist *glist, for (xsum = xloc, i = 0; i < nelem; i++) { - float usexloc; + t_float usexloc; if (xonset >= 0) - usexloc = xloc + *(float *)((elem + elemsize * i) + + usexloc = xloc + *(t_float *)((elem + elemsize * i) + xonset); else usexloc = xsum, xsum += xinc; if (yonset >= 0) - yval = *(float *)((elem + elemsize * i) + yonset); + yval = *(t_float *)((elem + elemsize * i) + yonset); else yval = 0; xpix = glist_xtopixels(glist, basex + fielddesc_cvttocoord(xfielddesc, usexloc)); @@ -1868,14 +1868,14 @@ static void plot_vis(t_gobj *z, t_glist *glist, { for (xsum = xloc, i = 0; i < nelem; i++) { - float usexloc, useyloc; + t_float usexloc, useyloc; t_gobj *y; if (xonset >= 0) usexloc = basex + xloc + - *(float *)((elem + elemsize * i) + xonset); + *(t_float *)((elem + elemsize * i) + xonset); else usexloc = basex + xsum, xsum += xinc; if (yonset >= 0) - yval = *(float *)((elem + elemsize * i) + yonset); + yval = *(t_float *)((elem + elemsize * i) + yonset); else yval = 0; useyloc = basey + yloc + fielddesc_cvttocoord(yfielddesc, yval); @@ -1917,12 +1917,12 @@ static void plot_vis(t_gobj *z, t_glist *glist, static int plot_click(t_gobj *z, t_glist *glist, t_word *data, t_template *template, t_scalar *sc, t_array *ap, - float basex, float basey, + t_float basex, t_float basey, int xpix, int ypix, int shift, int alt, int dbl, int doit) { t_plot *x = (t_plot *)z; t_symbol *elemtemplatesym; - float linewidth, xloc, xinc, yloc, style, vis, scalarvis; + t_float linewidth, xloc, xinc, yloc, style, vis, scalarvis; t_array *array; t_fielddesc *xfielddesc, *yfielddesc, *wfielddesc; @@ -2058,7 +2058,7 @@ static void drawnumber_sprintf(t_drawnumber *x, char *buf, t_atom *ap) } static void drawnumber_getrect(t_gobj *z, t_glist *glist, - t_word *data, t_template *template, float basex, float basey, + t_word *data, t_template *template, t_float basex, t_float basey, int *xp1, int *yp1, int *xp2, int *yp2) { t_drawnumber *x = (t_drawnumber *)z; @@ -2090,14 +2090,14 @@ static void drawnumber_getrect(t_gobj *z, t_glist *glist, } static void drawnumber_displace(t_gobj *z, t_glist *glist, - t_word *data, t_template *template, float basex, float basey, + t_word *data, t_template *template, t_float basex, t_float basey, int dx, int dy) { /* refuse */ } static void drawnumber_select(t_gobj *z, t_glist *glist, - t_word *data, t_template *template, float basex, float basey, + t_word *data, t_template *template, t_float basex, t_float basey, int state) { post("drawnumber_select %d", state); @@ -2105,14 +2105,14 @@ static void drawnumber_select(t_gobj *z, t_glist *glist, } static void drawnumber_activate(t_gobj *z, t_glist *glist, - t_word *data, t_template *template, float basex, float basey, + t_word *data, t_template *template, t_float basex, t_float basey, int state) { post("drawnumber_activate %d", state); } static void drawnumber_vis(t_gobj *z, t_glist *glist, - t_word *data, t_template *template, float basex, float basey, + t_word *data, t_template *template, t_float basex, t_float basey, int vis) { t_drawnumber *x = (t_drawnumber *)z; @@ -2136,14 +2136,14 @@ static void drawnumber_vis(t_gobj *z, t_glist *glist, drawnumber_sprintf(x, buf, &at); sys_vgui(".x%lx.c create text %d %d -anchor nw -fill %s -text {%s}", glist_getcanvas(glist), xloc, yloc, colorstring, buf); - sys_vgui(" -font -*-courier-bold--normal--%d-*", - sys_hostfontsize(glist_getfont(glist))); + sys_vgui(" -font {{%s} -%d %s}", sys_font, + sys_hostfontsize(glist_getfont(glist)), sys_fontweight); sys_vgui(" -tags drawnumber%lx\n", data); } else sys_vgui(".x%lx.c delete drawnumber%lx\n", glist_getcanvas(glist), data); } -static float drawnumber_motion_ycumulative; +static t_float drawnumber_motion_ycumulative; static t_glist *drawnumber_motion_glist; static t_scalar *drawnumber_motion_scalar; static t_array *drawnumber_motion_array; @@ -2225,7 +2225,7 @@ static void drawnumber_key(void *z, t_floatarg fkey) else { /* key entry for a numeric field. This is just a stopgap. */ - float newf; + t_float newf; if (drawnumber_motion_firstkey) sbuf[0] = 0; else sprintf(sbuf, "%g", template_getfloat(drawnumber_motion_template, @@ -2258,7 +2258,7 @@ static void drawnumber_key(void *z, t_floatarg fkey) static int drawnumber_click(t_gobj *z, t_glist *glist, t_word *data, t_template *template, t_scalar *sc, t_array *ap, - float basex, float basey, + t_float basex, t_float basey, int xpix, int ypix, int shift, int alt, int dbl, int doit) { t_drawnumber *x = (t_drawnumber *)z; diff --git a/pd/src/g_text.c b/pd/src/g_text.c index fa28f70e..bbdb7729 100644 --- a/pd/src/g_text.c +++ b/pd/src/g_text.c @@ -145,8 +145,11 @@ void canvas_obj(t_glist *gl, t_symbol *s, int argc, t_atom *argv) canvas_objtext(gl, atom_getintarg(0, argc, argv), atom_getintarg(1, argc, argv), 0, b); } - else - { + else if(!glist_isvisible(gl)){ + /* JMZ: not a good idea to go into interactive mode in a closed canvas... */ + post("unable to create stub object in closed canvas!"); + return; + } else { t_binbuf *b = binbuf_new(); int xpix, ypix; pd_vmess(&gl->gl_pd, gensym("editmode"), "i", 1); @@ -417,6 +420,11 @@ void canvas_msg(t_glist *gl, t_symbol *s, int argc, t_atom *argv) else { int xpix, ypix; + /* JMZ: not a good idea to go into interactive mode in a closed canvas... */ + if(!glist_isvisible(gl)){ + post("unable to create stub message in closed canvas!"); + return; + } pd_vmess(&gl->gl_pd, gensym("editmode"), "i", 1); glist_noselect(gl); glist_getnextxy(gl, &xpix, &ypix); @@ -922,7 +930,7 @@ static void text_getrect(t_gobj *z, t_glist *glist, { t_text *x = (t_text *)z; int width, height, iscomment = (x->te_type == T_TEXT); - float x1, y1, x2, y2; + t_float x1, y1, x2, y2; /* for number boxes, we know width and height a priori, and should report them here so that graphs can get swelled to fit. */ diff --git a/pd/src/g_toggle.c b/pd/src/g_toggle.c index e36be5fa..830e99cb 100644 --- a/pd/src/g_toggle.c +++ b/pd/src/g_toggle.c @@ -61,11 +61,12 @@ void toggle_draw_new(t_toggle *x, t_glist *glist) canvas, xx+w+1, yy + x->x_gui.x_h-w-1, xx + x->x_gui.x_w-w, yy+w, w, (x->x_on!=0.0)?x->x_gui.x_fcol:x->x_gui.x_bcol, x); sys_vgui(".x%lx.c create text %d %d -text {%s} -anchor w \ - -font {%s %d bold} -fill #%6.6x -tags %lxLABEL\n", + -font {{%s} -%d %s} -fill #%6.6x -tags %lxLABEL\n", canvas, xx+x->x_gui.x_ldx, yy+x->x_gui.x_ldy, strcmp(x->x_gui.x_lab->s_name, "empty")?x->x_gui.x_lab->s_name:"", - x->x_gui.x_font, x->x_gui.x_fontsize, x->x_gui.x_lcol, x); + x->x_gui.x_font, x->x_gui.x_fontsize, sys_fontweight, + x->x_gui.x_lcol, x); if(!x->x_gui.x_fsf.x_snd_able) sys_vgui(".x%lx.c create rectangle %d %d %d %d -tags %lxOUT%d\n", canvas, xx, yy + x->x_gui.x_h-1, xx + IOWIDTH, yy + x->x_gui.x_h, x, 0); @@ -120,8 +121,8 @@ void toggle_draw_config(t_toggle* x, t_glist* glist) { t_canvas *canvas=glist_getcanvas(glist); - sys_vgui(".x%lx.c itemconfigure %lxLABEL -font {%s %d bold} -fill #%6.6x -text {%s} \n", - canvas, x, x->x_gui.x_font, x->x_gui.x_fontsize, + sys_vgui(".x%lx.c itemconfigure %lxLABEL -font {{%s} -%d %s} -fill #%6.6x -text {%s} \n", + canvas, x, x->x_gui.x_font, x->x_gui.x_fontsize, sys_fontweight, x->x_gui.x_fsf.x_selected?IEM_GUI_COLOR_SELECTED:x->x_gui.x_lcol, strcmp(x->x_gui.x_lab->s_name, "empty")?x->x_gui.x_lab->s_name:""); sys_vgui(".x%lx.c itemconfigure %lxBASE -fill #%6.6x\n", canvas, x, @@ -225,7 +226,7 @@ static void toggle_properties(t_gobj *z, t_glist *owner) t_symbol *srl[3]; iemgui_properties(&x->x_gui, srl); - sprintf(buf, "pdtk_iemgui_dialog %%s TOGGLE \ + sprintf(buf, "pdtk_iemgui_dialog %%s |tgl| \ ----------dimensions(pix):----------- %d %d size: 0 0 empty \ -----------non-zero-value:----------- %g value: 0.0 empty %g \ -1 lin log %d %d empty %d \ @@ -256,7 +257,7 @@ static void toggle_dialog(t_toggle *x, t_symbol *s, int argc, t_atom *argv) { t_symbol *srl[3]; int a = (int)atom_getintarg(0, argc, argv); - float nonzero = (float)atom_getfloatarg(2, argc, argv); + t_float nonzero = (t_float)atom_getfloatarg(2, argc, argv); int sr_flags; if(nonzero == 0.0) @@ -313,7 +314,7 @@ static void toggle_fout(t_toggle *x, t_floatarg f) static void toggle_loadbang(t_toggle *x) { if(!sys_noloadbang && x->x_gui.x_isa.x_loadinit) - toggle_fout(x, (float)x->x_on); + toggle_fout(x, (t_float)x->x_on); } static void toggle_size(t_toggle *x, t_symbol *s, int ac, t_atom *av) @@ -365,7 +366,7 @@ static void *toggle_new(t_symbol *s, int argc, t_atom *argv) int a=IEM_GUI_DEFAULTSIZE, f=0; int ldx=17, ldy=7; int fs=10; - float on=0.0, nonzero=1.0; + t_float on=0.0, nonzero=1.0; char str[144]; iem_inttosymargs(&x->x_gui.x_isa, 0); @@ -390,11 +391,11 @@ static void *toggle_new(t_symbol *s, int argc, t_atom *argv) bflcol[0] = (int)atom_getintarg(9, argc, argv); bflcol[1] = (int)atom_getintarg(10, argc, argv); bflcol[2] = (int)atom_getintarg(11, argc, argv); - on = (float)atom_getfloatarg(12, argc, argv); + on = (t_float)atom_getfloatarg(12, argc, argv); } else iemgui_new_getnames(&x->x_gui, 2, 0); if((argc == 14)&&IS_A_FLOAT(argv,13)) - nonzero = (float)atom_getfloatarg(13, argc, argv); + nonzero = (t_float)atom_getfloatarg(13, argc, argv); x->x_gui.x_draw = (t_iemfunptr)toggle_draw; x->x_gui.x_fsf.x_snd_able = 1; @@ -407,7 +408,7 @@ static void *toggle_new(t_symbol *s, int argc, t_atom *argv) if(x->x_gui.x_fsf.x_font_style == 1) strcpy(x->x_gui.x_font, "helvetica"); else if(x->x_gui.x_fsf.x_font_style == 2) strcpy(x->x_gui.x_font, "times"); else { x->x_gui.x_fsf.x_font_style = 0; - strcpy(x->x_gui.x_font, "courier"); } + strcpy(x->x_gui.x_font, sys_font); } x->x_nonzero = (nonzero!=0.0)?nonzero:1.0; if(x->x_gui.x_isa.x_loadinit) x->x_on = (on!=0.0)?nonzero:0.0; diff --git a/pd/src/g_traversal.c b/pd/src/g_traversal.c index 7de67848..de8f23c8 100644 --- a/pd/src/g_traversal.c +++ b/pd/src/g_traversal.c @@ -206,7 +206,7 @@ static void ptrobj_traverse(t_ptrobj *x, t_symbol *s) else pd_error(x, "pointer: list '%s' not found", s->s_name); } -static void ptrobj_vnext(t_ptrobj *x, float f) +static void ptrobj_vnext(t_ptrobj *x, t_float f) { t_gobj *gobj; t_gpointer *gp = &x->x_gp; @@ -774,7 +774,7 @@ static void getsize_pointer(t_getsize *x, t_gpointer *gp) else w = gp->gp_un.gp_scalar->sc_vec; array = *(t_array **)(((char *)w) + onset); - outlet_float(x->x_obj.ob_outlet, (float)(array->a_n)); + outlet_float(x->x_obj.ob_outlet, (t_float)(array->a_n)); } static void getsize_setup(void) diff --git a/pd/src/g_vdial.c b/pd/src/g_vdial.c index 3d352b35..9f7732f5 100644 --- a/pd/src/g_vdial.c +++ b/pd/src/g_vdial.c @@ -75,10 +75,10 @@ void vradio_draw_new(t_vradio *x, t_glist *glist) x->x_drawn = x->x_on; } sys_vgui(".x%lx.c create text %d %d -text {%s} -anchor w \ - -font {%s %d bold} -fill #%6.6x -tags %lxLABEL\n", + -font {{%s} -%d %s} -fill #%6.6x -tags %lxLABEL\n", canvas, xx11+x->x_gui.x_ldx, yy11b+x->x_gui.x_ldy, strcmp(x->x_gui.x_lab->s_name, "empty")?x->x_gui.x_lab->s_name:"", - x->x_gui.x_font, x->x_gui.x_fontsize, + x->x_gui.x_font, x->x_gui.x_fontsize, sys_fontweight, x->x_gui.x_lcol, x); if(!x->x_gui.x_fsf.x_snd_able) sys_vgui(".x%lx.c create rectangle %d %d %d %d -tags %lxOUT%d\n", @@ -141,8 +141,8 @@ void vradio_draw_config(t_vradio* x, t_glist* glist) t_canvas *canvas=glist_getcanvas(glist); int n=x->x_number, i; - sys_vgui(".x%lx.c itemconfigure %lxLABEL -font {%s %d bold} -fill #%6.6x -text {%s} \n", - canvas, x, x->x_gui.x_font, x->x_gui.x_fontsize, + sys_vgui(".x%lx.c itemconfigure %lxLABEL -font {{%s} -%d %s} -fill #%6.6x -text {%s} \n", + canvas, x, x->x_gui.x_font, x->x_gui.x_fontsize, sys_fontweight, x->x_gui.x_fsf.x_selected?IEM_GUI_COLOR_SELECTED:x->x_gui.x_lcol, strcmp(x->x_gui.x_lab->s_name, "empty")?x->x_gui.x_lab->s_name:""); for(i=0; ix_gui, srl); if(pd_class(&x->x_gui.x_obj.ob_pd) == vradio_old_class) hchange = x->x_change; - sprintf(buf, "pdtk_iemgui_dialog %%s vradio \ + sprintf(buf, "pdtk_iemgui_dialog %%s |vradio| \ ----------dimensions(pix):----------- %d %d size: 0 0 empty \ empty 0.0 empty 0.0 empty %d \ %d new-only new&old %d %d number: %d \ @@ -347,14 +347,14 @@ static void vradio_bang(t_vradio *x) { if((x->x_change)&&(x->x_on != x->x_on_old)) { - SETFLOAT(x->x_at, (float)x->x_on_old); + SETFLOAT(x->x_at, (t_float)x->x_on_old); SETFLOAT(x->x_at+1, 0.0); outlet_list(x->x_gui.x_obj.ob_outlet, &s_list, 2, x->x_at); if(x->x_gui.x_fsf.x_snd_able && x->x_gui.x_snd->s_thing) pd_list(x->x_gui.x_snd->s_thing, &s_list, 2, x->x_at); } x->x_on_old = x->x_on; - SETFLOAT(x->x_at, (float)x->x_on); + SETFLOAT(x->x_at, (t_float)x->x_on); SETFLOAT(x->x_at+1, 1.0); outlet_list(x->x_gui.x_obj.ob_outlet, &s_list, 2, x->x_at); if(x->x_gui.x_fsf.x_snd_able && x->x_gui.x_snd->s_thing) @@ -382,7 +382,7 @@ static void vradio_fout(t_vradio *x, t_floatarg f) /* compatibility with earlier "vdial" behavior */ if((x->x_change)&&(i != x->x_on_old)) { - SETFLOAT(x->x_at, (float)x->x_on_old); + SETFLOAT(x->x_at, (t_float)x->x_on_old); SETFLOAT(x->x_at+1, 0.0); outlet_list(x->x_gui.x_obj.ob_outlet, &s_list, 2, x->x_at); if(x->x_gui.x_fsf.x_snd_able && x->x_gui.x_snd->s_thing) @@ -393,7 +393,7 @@ static void vradio_fout(t_vradio *x, t_floatarg f) x->x_on = i; (*x->x_gui.x_draw)(x, x->x_gui.x_glist, IEM_GUI_DRAW_MODE_UPDATE); x->x_on_old = x->x_on; - SETFLOAT(x->x_at, (float)x->x_on); + SETFLOAT(x->x_at, (t_float)x->x_on); SETFLOAT(x->x_at+1, 1.0); outlet_list(x->x_gui.x_obj.ob_outlet, &s_list, 2, x->x_at); if(x->x_gui.x_fsf.x_snd_able && x->x_gui.x_snd->s_thing) @@ -426,7 +426,7 @@ static void vradio_float(t_vradio *x, t_floatarg f) { if(x->x_gui.x_fsf.x_put_in2out) { - SETFLOAT(x->x_at, (float)x->x_on_old); + SETFLOAT(x->x_at, (t_float)x->x_on_old); SETFLOAT(x->x_at+1, 0.0); outlet_list(x->x_gui.x_obj.ob_outlet, &s_list, 2, x->x_at); if(x->x_gui.x_fsf.x_snd_able && x->x_gui.x_snd->s_thing) @@ -440,7 +440,7 @@ static void vradio_float(t_vradio *x, t_floatarg f) x->x_on_old = x->x_on; if(x->x_gui.x_fsf.x_put_in2out) { - SETFLOAT(x->x_at, (float)x->x_on); + SETFLOAT(x->x_at, (t_float)x->x_on); SETFLOAT(x->x_at+1, 1.0); outlet_list(x->x_gui.x_obj.ob_outlet, &s_list, 2, x->x_at); if(x->x_gui.x_fsf.x_snd_able && x->x_gui.x_snd->s_thing) @@ -466,7 +466,7 @@ static void vradio_click(t_vradio *x, t_floatarg xpos, t_floatarg ypos, { int yy = (int)ypos - text_ypix(&x->x_gui.x_obj, x->x_gui.x_glist); - vradio_fout(x, (float)(yy / x->x_gui.x_h)); + vradio_fout(x, (t_float)(yy / x->x_gui.x_h)); } static int vradio_newclick(t_gobj *z, struct _glist *glist, @@ -590,7 +590,7 @@ static void *vradio_donew(t_symbol *s, int argc, t_atom *argv, int old) if(x->x_gui.x_fsf.x_font_style == 1) strcpy(x->x_gui.x_font, "helvetica"); else if(x->x_gui.x_fsf.x_font_style == 2) strcpy(x->x_gui.x_font, "times"); else { x->x_gui.x_fsf.x_font_style = 0; - strcpy(x->x_gui.x_font, "courier"); } + strcpy(x->x_gui.x_font, sys_font); } if(num < 1) num = 1; if(num > IEM_RADIO_MAX) diff --git a/pd/src/g_vslider.c b/pd/src/g_vslider.c index 1b575dac..87309029 100644 --- a/pd/src/g_vslider.c +++ b/pd/src/g_vslider.c @@ -59,10 +59,11 @@ static void vslider_draw_new(t_vslider *x, t_glist *glist) canvas, xpos+1, r, xpos + x->x_gui.x_w, r, x->x_gui.x_fcol, x); sys_vgui(".x%lx.c create text %d %d -text {%s} -anchor w \ - -font {%s %d bold} -fill #%6.6x -tags %lxLABEL\n", + -font {{%s} -%d %s} -fill #%6.6x -tags %lxLABEL\n", canvas, xpos+x->x_gui.x_ldx, ypos+x->x_gui.x_ldy, strcmp(x->x_gui.x_lab->s_name, "empty")?x->x_gui.x_lab->s_name:"", - x->x_gui.x_font, x->x_gui.x_fontsize, x->x_gui.x_lcol, x); + x->x_gui.x_font, x->x_gui.x_fontsize, sys_fontweight, + x->x_gui.x_lcol, x); if(!x->x_gui.x_fsf.x_snd_able) sys_vgui(".x%lx.c create rectangle %d %d %d %d -tags %lxOUT%d\n", canvas, @@ -122,8 +123,8 @@ static void vslider_draw_config(t_vslider* x,t_glist* glist) { t_canvas *canvas=glist_getcanvas(glist); - sys_vgui(".x%lx.c itemconfigure %lxLABEL -font {%s %d bold} -fill #%6.6x -text {%s} \n", - canvas, x, x->x_gui.x_font, x->x_gui.x_fontsize, + sys_vgui(".x%lx.c itemconfigure %lxLABEL -font {{%s} -%d %s} -fill #%6.6x -text {%s} \n", + canvas, x, x->x_gui.x_font, x->x_gui.x_fontsize, sys_fontweight, x->x_gui.x_fsf.x_selected?IEM_GUI_COLOR_SELECTED:x->x_gui.x_lcol, strcmp(x->x_gui.x_lab->s_name, "empty")?x->x_gui.x_lab->s_name:""); sys_vgui(".x%lx.c itemconfigure %lxKNOB -fill #%6.6x\n", canvas, @@ -214,7 +215,7 @@ static void vslider_save(t_gobj *z, t_binbuf *b) binbuf_addv(b, "ssiisiiffiisssiiiiiiiii", gensym("#X"),gensym("obj"), (int)x->x_gui.x_obj.te_xpix, (int)x->x_gui.x_obj.te_ypix, gensym("vsl"), x->x_gui.x_w, x->x_gui.x_h, - (float)x->x_min, (float)x->x_max, + (t_float)x->x_min, (t_float)x->x_max, x->x_lin0_log1, iem_symargstoint(&x->x_gui.x_isa), srl[0], srl[1], srl[2], x->x_gui.x_ldx, x->x_gui.x_ldy, @@ -277,7 +278,7 @@ static void vslider_properties(t_gobj *z, t_glist *owner) iemgui_properties(&x->x_gui, srl); - sprintf(buf, "pdtk_iemgui_dialog %%s VSLIDER \ + sprintf(buf, "pdtk_iemgui_dialog %%s |vsl| \ --------dimensions(pix)(pix):-------- %d %d width: %d %d height: \ -----------output-range:----------- %g bottom: %g top: %d \ %d lin log %d %d empty %d \ @@ -562,7 +563,7 @@ static void *vslider_new(t_symbol *s, int argc, t_atom *argv) if(x->x_gui.x_fsf.x_font_style == 1) strcpy(x->x_gui.x_font, "helvetica"); else if(x->x_gui.x_fsf.x_font_style == 2) strcpy(x->x_gui.x_font, "times"); else { x->x_gui.x_fsf.x_font_style = 0; - strcpy(x->x_gui.x_font, "courier"); } + strcpy(x->x_gui.x_font, sys_font); } if(x->x_gui.x_fsf.x_rcv_able) pd_bind(&x->x_gui.x_obj.ob_pd, x->x_gui.x_rcv); x->x_gui.x_ldx = ldx; x->x_gui.x_ldy = ldy; diff --git a/pd/src/g_vumeter.c b/pd/src/g_vumeter.c index ac6ee0ae..f0ec30aa 100644 --- a/pd/src/g_vumeter.c +++ b/pd/src/g_vumeter.c @@ -116,17 +116,19 @@ static void vu_draw_new(t_vu *x, t_glist *glist) canvas, quad1, yyy, quad3, yyy, x->x_led_size, iemgui_color_hex[led_col], x, i); if(((i+2)&3) && (x->x_scale)) sys_vgui(".x%lx.c create text %d %d -text {%s} -anchor w \ - -font {%s %d bold} -fill #%6.6x -tags %lxSCALE%d\n", - canvas, end, yyy+k3, iemgui_vu_scale_str[i], x->x_gui.x_font, x->x_gui.x_fontsize, - x->x_gui.x_lcol, x, i); + -font {{%s} -%d %s} -fill #%6.6x -tags %lxSCALE%d\n", + canvas, end, yyy+k3, iemgui_vu_scale_str[i], + x->x_gui.x_font, x->x_gui.x_fontsize, + sys_fontweight, x->x_gui.x_lcol, x, i); } if(x->x_scale) { i=IEM_VU_STEPS+1; yyy = k4 + k1*(k2-i); sys_vgui(".x%lx.c create text %d %d -text {%s} -anchor w \ - -font {%s %d bold} -fill #%6.6x -tags %lxSCALE%d\n", - canvas, end, yyy+k3, iemgui_vu_scale_str[i], x->x_gui.x_font, x->x_gui.x_fontsize, + -font {{%s} -%d %s} -fill #%6.6x -tags %lxSCALE%d\n", + canvas, end, yyy+k3, iemgui_vu_scale_str[i], x->x_gui.x_font, + x->x_gui.x_fontsize, sys_fontweight, x->x_gui.x_lcol, x, i); } sys_vgui(".x%lx.c create rectangle %d %d %d %d -fill #%6.6x -outline #%6.6x -tags %lxRCOVER\n", @@ -136,10 +138,11 @@ static void vu_draw_new(t_vu *x, t_glist *glist) canvas, mid, ypos+10, mid, ypos+10, x->x_led_size, x->x_gui.x_bcol, x); sys_vgui(".x%lx.c create text %d %d -text {%s} -anchor w \ - -font {%s %d bold} -fill #%6.6x -tags %lxLABEL\n", + -font {{%s} -%d %s} -fill #%6.6x -tags %lxLABEL\n", canvas, xpos+x->x_gui.x_ldx, ypos+x->x_gui.x_ldy, strcmp(x->x_gui.x_lab->s_name, "empty")?x->x_gui.x_lab->s_name:"", - x->x_gui.x_font, x->x_gui.x_fontsize, x->x_gui.x_lcol, x); + x->x_gui.x_font, x->x_gui.x_fontsize, sys_fontweight, + x->x_gui.x_lcol, x); if(!x->x_gui.x_fsf.x_snd_able) { sys_vgui(".x%lx.c create rectangle %d %d %d %d -tags %lxOUT%d\n", @@ -274,19 +277,21 @@ static void vu_draw_config(t_vu* x, t_glist* glist) sys_vgui(".x%lx.c itemconfigure %lxRLED%d -width %d\n", canvas, x, i, x->x_led_size); if(((i+2)&3) && (x->x_scale)) - sys_vgui(".x%lx.c itemconfigure %lxSCALE%d -text {%s} -font {%s %d bold} -fill #%6.6x\n", - canvas, x, i, iemgui_vu_scale_str[i], x->x_gui.x_font, x->x_gui.x_fontsize, + sys_vgui(".x%lx.c itemconfigure %lxSCALE%d -text {%s} -font {{%s} -%d %s} -fill #%6.6x\n", + canvas, x, i, iemgui_vu_scale_str[i], x->x_gui.x_font, + x->x_gui.x_fontsize, sys_fontweight, x->x_gui.x_fsf.x_selected?IEM_GUI_COLOR_SELECTED:x->x_gui.x_lcol); } if(x->x_scale) { i=IEM_VU_STEPS+1; - sys_vgui(".x%lx.c itemconfigure %lxSCALE%d -text {%s} -font {%s %d bold} -fill #%6.6x\n", - canvas, x, i, iemgui_vu_scale_str[i], x->x_gui.x_font, x->x_gui.x_fontsize, + sys_vgui(".x%lx.c itemconfigure %lxSCALE%d -text {%s} -font {{%s} -%d %s} -fill #%6.6x\n", + canvas, x, i, iemgui_vu_scale_str[i], x->x_gui.x_font, + x->x_gui.x_fontsize, sys_fontweight, x->x_gui.x_fsf.x_selected?IEM_GUI_COLOR_SELECTED:x->x_gui.x_lcol); } - sys_vgui(".x%lx.c itemconfigure %lxLABEL -font {%s %d bold} -fill #%6.6x -text {%s} \n", - canvas, x, x->x_gui.x_font, x->x_gui.x_fontsize, + sys_vgui(".x%lx.c itemconfigure %lxLABEL -font {{%s} -%d %s} -fill #%6.6x -text {%s} \n", + canvas, x, x->x_gui.x_font, x->x_gui.x_fontsize, sys_fontweight, x->x_gui.x_fsf.x_selected?IEM_GUI_COLOR_SELECTED:x->x_gui.x_lcol, strcmp(x->x_gui.x_lab->s_name, "empty")?x->x_gui.x_lab->s_name:""); @@ -476,16 +481,18 @@ static void vu_scale(t_vu *x, t_floatarg fscale) yyy = k4 + k1*(k2-i); if((i+2)&3) sys_vgui(".x%lx.c create text %d %d -text {%s} -anchor w \ - -font {%s %d bold} -fill #%6.6x -tags %lxSCALE%d\n", - canvas, end, yyy+k3, iemgui_vu_scale_str[i], x->x_gui.x_font, x->x_gui.x_fontsize, - x->x_gui.x_lcol, x, i); + -font {{%s} -%d %s} -fill #%6.6x -tags %lxSCALE%d\n", + canvas, end, yyy+k3, iemgui_vu_scale_str[i], + x->x_gui.x_font, x->x_gui.x_fontsize, + sys_fontweight, x->x_gui.x_lcol, x, i); } i=IEM_VU_STEPS+1; yyy = k4 + k1*(k2-i); sys_vgui(".x%lx.c create text %d %d -text {%s} -anchor w \ - -font {%s %d bold} -fill #%6.6x -tags %lxSCALE%d\n", - canvas, end, yyy+k3, iemgui_vu_scale_str[i], x->x_gui.x_font, x->x_gui.x_fontsize, - x->x_gui.x_lcol, x, i); + -font {{%s} -%d %s} -fill #%6.6x -tags %lxSCALE%d\n", + canvas, end, yyy+k3, iemgui_vu_scale_str[i], + x->x_gui.x_font, x->x_gui.x_fontsize, sys_fontweight, + sys_fontweight, x->x_gui.x_lcol, x, i); } } } @@ -497,7 +504,7 @@ static void vu_properties(t_gobj *z, t_glist *owner) t_symbol *srl[3]; iemgui_properties(&x->x_gui, srl); - sprintf(buf, "pdtk_iemgui_dialog %%s VU-METER \ + sprintf(buf, "pdtk_iemgui_dialog %%s |vu| \ --------dimensions(pix)(pix):-------- %d %d width: %d %d height: \ empty 0.0 empty 0.0 empty %d \ %d no_scale scale %d %d empty %d \ @@ -531,7 +538,7 @@ static void vu_dialog(t_vu *x, t_symbol *s, int argc, t_atom *argv) vu_check_height(x, h); if(scale != 0) scale = 1; - vu_scale(x, (float)scale); + vu_scale(x, (t_float)scale); (*x->x_gui.x_draw)(x, x->x_gui.x_glist, IEM_GUI_DRAW_MODE_CONFIG); (*x->x_gui.x_draw)(x, x->x_gui.x_glist, IEM_GUI_DRAW_MODE_IO + sr_flags); (*x->x_gui.x_draw)(x, x->x_gui.x_glist, IEM_GUI_DRAW_MODE_MOVE); @@ -586,7 +593,7 @@ static void vu_float(t_vu *x, t_floatarg rms) x->x_rms = iemgui_vu_db2i[i]; } i = (int)(100.0*rms + 10000.5); - rms = 0.01*(float)(i - 10000); + rms = 0.01*(t_float)(i - 10000); x->x_fr = rms; outlet_float(x->x_out_rms, rms); x->x_updaterms = 1; @@ -607,7 +614,7 @@ static void vu_ft1(t_vu *x, t_floatarg peak) x->x_peak = iemgui_vu_db2i[i]; } i = (int)(100.0*peak + 10000.5); - peak = 0.01*(float)(i - 10000); + peak = 0.01*(t_float)(i - 10000); x->x_fp = peak; x->x_updatepeak = 1; sys_queuegui(x, x->x_gui.x_glist, vu_draw_update); @@ -627,7 +634,7 @@ static void *vu_new(t_symbol *s, int argc, t_atom *argv) t_vu *x = (t_vu *)pd_new(vu_class); int bflcol[]={-66577, -1, -1}; int w=IEM_GUI_DEFAULTSIZE, h=IEM_VU_STEPS*IEM_VU_DEFAULTSIZE; - int ldx=-1, ldy=-8, f=0, fs=8, scale=1; + int ldx=-1, ldy=-8, f=0, fs=10, scale=1; int ftbreak=IEM_BNG_DEFAULTBREAKFLASHTIME, fthold=IEM_BNG_DEFAULTHOLDFLASHTIME; char str[144]; @@ -667,7 +674,7 @@ static void *vu_new(t_symbol *s, int argc, t_atom *argv) else if(x->x_gui.x_fsf.x_font_style == 2) strcpy(x->x_gui.x_font, "times"); else { x->x_gui.x_fsf.x_font_style = 0; - strcpy(x->x_gui.x_font, "courier"); } + strcpy(x->x_gui.x_font, sys_font); } if(x->x_gui.x_fsf.x_rcv_able) pd_bind(&x->x_gui.x_obj.ob_pd, x->x_gui.x_rcv); x->x_gui.x_ldx = ldx; diff --git a/pd/src/m_binbuf.c b/pd/src/m_binbuf.c index 69580741..c2ebd2ca 100644 --- a/pd/src/m_binbuf.c +++ b/pd/src/m_binbuf.c @@ -387,9 +387,6 @@ void binbuf_restore(t_binbuf *x, int argc, t_atom *argv) x->b_n = newsize; } - -#define MSTACKSIZE 10000 /* FIXME -- make this grow as needed */ - void binbuf_print(t_binbuf *x) { int i, startedpost = 0, newline = 1; @@ -531,13 +528,70 @@ done: return (gensym(buf2)); } +#define SMALLMSG 5 +#define HUGEMSG 1000 +#ifdef MSW +#include +#else +#include +#endif +#if HAVE_ALLOCA +#define ATOMS_ALLOCA(x, n) ((x) = (t_atom *)((n) < HUGEMSG ? \ + alloca((n) * sizeof(t_atom)) : getbytes((n) * sizeof(t_atom)))) +#define ATOMS_FREEA(x, n) ( \ + ((n) < HUGEMSG || (freebytes((x), (n) * sizeof(t_atom)), 0))) +#else +#define ATOMS_ALLOCA(x, n) ((x) = (t_atom *)getbytes((n) * sizeof(t_atom))) +#define ATOMS_FREEA(x, n) (freebytes((x), (n) * sizeof(t_atom))) +#endif + void binbuf_eval(t_binbuf *x, t_pd *target, int argc, t_atom *argv) { - static t_atom mstack[MSTACKSIZE], *msp = mstack, *ems = mstack+MSTACKSIZE; - t_atom *stackwas = msp; + t_atom smallstack[SMALLMSG], *mstack, *msp; t_atom *at = x->b_vec; int ac = x->b_n; - int nargs; + int nargs, maxnargs = 0; + if (ac <= SMALLMSG) + mstack = smallstack; + else + { +#if 1 + /* count number of args in biggest message. The wierd + treatment of "pd_objectmaker" is because when the message + goes out to objectmaker, commas and semis are passed + on as regular args (see below). We're tacitly assuming here + that the pd_objectmaker target can't come up via a named + destination in the message, only because the original "target" + points there. */ + if (target == &pd_objectmaker) + maxnargs = ac; + else + { + int i, j = (target ? 0 : -1); + for (i = 0; i < ac; i++) + { + if (at[i].a_type == A_SEMI) + j = -1; + else if (at[i].a_type == A_COMMA) + j = 0; + else if (++j > maxnargs) + maxnargs = j; + } + } + if (maxnargs <= SMALLMSG) + mstack = smallstack; + else ATOMS_ALLOCA(mstack, maxnargs); +#else + /* just pessimistically allocate enough to hold everything + at once. This turned out to run slower in a simple benchmark + I tried, perhaps because the extra memory allocation + hurt the cache hit rate. */ + maxnargs = ac; + ATOMS_ALLOCA(mstack, maxnargs); +#endif + + } + msp = mstack; while (1) { t_pd *nexttarget; @@ -597,11 +651,6 @@ void binbuf_eval(t_binbuf *x, t_pd *target, int argc, t_atom *argv) { t_symbol *s9; if (!ac) goto gotmess; - if (msp >= ems) - { - error("message stack overflow"); - goto broken; - } switch (at->a_type) { case A_SEMI: @@ -667,27 +716,26 @@ void binbuf_eval(t_binbuf *x, t_pd *target, int argc, t_atom *argv) gotmess: if (nargs) { - switch (stackwas->a_type) + switch (mstack->a_type) { case A_SYMBOL: - typedmess(target, stackwas->a_w.w_symbol, nargs-1, stackwas+1); + typedmess(target, mstack->a_w.w_symbol, nargs-1, mstack+1); break; case A_FLOAT: - if (nargs == 1) pd_float(target, stackwas->a_w.w_float); - else pd_list(target, 0, nargs, stackwas); + if (nargs == 1) pd_float(target, mstack->a_w.w_float); + else pd_list(target, 0, nargs, mstack); break; } } - msp = stackwas; + msp = mstack; if (!ac) break; target = nexttarget; at++; ac--; } - - return; -broken: - msp = stackwas; +broken: + if (maxnargs > SMALLMSG) + ATOMS_FREEA(mstack, maxnargs); } static int binbuf_doopen(char *s, int mode) @@ -959,7 +1007,7 @@ static t_binbuf *binbuf_convert(t_binbuf *oldb, int maxtopd) atom_getfloatarg(2, natom, nextmess), atom_getfloatarg(5, natom, nextmess) - atom_getfloatarg(3, natom, nextmess), - (float)sys_defaultfont); + (t_float)sys_defaultfont); } } if (!strcmp(first, "#P")) @@ -1042,7 +1090,7 @@ static t_binbuf *binbuf_convert(t_binbuf *oldb, int maxtopd) } else if (!strcmp(second, "slider")) { - float inc = atom_getfloatarg(7, natom, nextmess); + t_float inc = atom_getfloatarg(7, natom, nextmess); if (inc <= 0) inc = 1; binbuf_addv(newb, "ssffsffffffsssfffffffff;", diff --git a/pd/src/m_class.c b/pd/src/m_class.c index 0737a660..622fbd2d 100644 --- a/pd/src/m_class.c +++ b/pd/src/m_class.c @@ -400,7 +400,7 @@ static void pd_floatforsignal(t_pd *x, t_float f) { int offset = (*x)->c_floatsignalin; if (offset > 0) - *(t_sample *)(((char *)x) + offset) = f; + *(t_float *)(((char *)x) + offset) = f; else pd_error(x, "%s: float unexpected for signal input", (*x)->c_name->s_name); diff --git a/pd/src/m_glob.c b/pd/src/m_glob.c index aca3bf24..c3a70e53 100644 --- a/pd/src/m_glob.c +++ b/pd/src/m_glob.c @@ -49,6 +49,12 @@ void glob_foo(void *dummy, t_symbol *s, int argc, t_atom *argv) } #endif +static void glob_version(t_pd *dummy, float f) +{ + if (f > 0) + error("file format newer than this version of Pd (trying anyway...)"); +} + void max_default(t_pd *x, t_symbol *s, int argc, t_atom *argv) { int i; @@ -113,6 +119,8 @@ void glob_init(void) class_addmethod(glob_pdobject, (t_method)glob_ping, gensym("ping"), 0); class_addmethod(glob_pdobject, (t_method)glob_savepreferences, gensym("save-preferences"), 0); + class_addmethod(glob_pdobject, (t_method)glob_version, + gensym("version"), A_FLOAT, 0); #ifdef UNIX class_addmethod(glob_pdobject, (t_method)glob_watchdog, gensym("watchdog"), 0); diff --git a/pd/src/m_obj.c b/pd/src/m_obj.c index f5c91cdf..3f8bcda4 100644 --- a/pd/src/m_obj.c +++ b/pd/src/m_obj.c @@ -15,7 +15,7 @@ union inletunion t_gpointer *iu_pointerslot; t_float *iu_floatslot; t_symbol **iu_symslot; - t_sample iu_floatsignalvalue; + t_float iu_floatsignalvalue; }; struct _inlet @@ -660,7 +660,7 @@ int obj_issignaloutlet(t_object *x, int m) return (o2 && (o2->o_sym == &s_signal)); } -t_sample *obj_findsignalscalar(t_object *x, int m) +t_float *obj_findsignalscalar(t_object *x, int m) { int n = 0; t_inlet *i; @@ -668,7 +668,7 @@ t_sample *obj_findsignalscalar(t_object *x, int m) { if (!m--) return (x->ob_pd->c_floatsignalin > 0 ? - (t_sample *)(((char *)x) + x->ob_pd->c_floatsignalin) : 0); + (t_float *)(((char *)x) + x->ob_pd->c_floatsignalin) : 0); n++; } for (i = x->ob_inlet; i; i = i->i_next, m--) diff --git a/pd/src/m_pd.h b/pd/src/m_pd.h index 5460c517..c92ba837 100644 --- a/pd/src/m_pd.h +++ b/pd/src/m_pd.h @@ -11,7 +11,7 @@ extern "C" { #define PD_MAJOR_VERSION 0 #define PD_MINOR_VERSION 41 #define PD_BUGFIX_VERSION 0 -#define PD_TEST_VERSION "test06" +#define PD_TEST_VERSION "test10" /* old name for "MSW" flag -- we have to take it for the sake of many old "nmakefiles" for externs, which will define NT and not MSW */ @@ -368,6 +368,8 @@ EXTERN t_glist *canvas_getcurrent(void); EXTERN void canvas_makefilename(t_glist *c, char *file, char *result,int resultsize); EXTERN t_symbol *canvas_getdir(t_glist *x); +EXTERN char sys_font[]; /* default typeface set in s_main.c */ +EXTERN char sys_fontweight[]; /* default font weight set in s_main.c */ EXTERN int sys_fontwidth(int fontsize); EXTERN int sys_fontheight(int fontsize); EXTERN void canvas_dataproperties(t_glist *x, t_scalar *sc, t_binbuf *b); @@ -479,7 +481,7 @@ typedef struct _signal { int s_n; /* number of points in the array */ t_sample *s_vec; /* the array */ - float s_sr; /* sample rate */ + t_float s_sr; /* sample rate */ int s_refcount; /* number of times used */ int s_isborrowed; /* whether we're going to borrow our array */ struct _signal *s_borrowedfrom; /* signal to borrow it from */ @@ -496,24 +498,24 @@ EXTERN t_int *copy_perform(t_int *args); EXTERN void dsp_add_plus(t_sample *in1, t_sample *in2, t_sample *out, int n); EXTERN void dsp_add_copy(t_sample *in, t_sample *out, int n); -EXTERN void dsp_add_scalarcopy(t_sample *in, t_sample *out, int n); +EXTERN void dsp_add_scalarcopy(t_float *in, t_sample *out, int n); EXTERN void dsp_add_zero(t_sample *out, int n); EXTERN int sys_getblksize(void); -EXTERN float sys_getsr(void); +EXTERN t_float sys_getsr(void); EXTERN int sys_get_inchannels(void); EXTERN int sys_get_outchannels(void); EXTERN void dsp_add(t_perfroutine f, int n, ...); EXTERN void dsp_addv(t_perfroutine f, int n, t_int *vec); -EXTERN void pd_fft(float *buf, int npoints, int inverse); +EXTERN void pd_fft(t_float *buf, int npoints, int inverse); EXTERN int ilog2(int n); -EXTERN void mayer_fht(float *fz, int n); -EXTERN void mayer_fft(int n, float *real, float *imag); -EXTERN void mayer_ifft(int n, float *real, float *imag); -EXTERN void mayer_realfft(int n, float *real); -EXTERN void mayer_realifft(int n, float *real); +EXTERN void mayer_fht(t_sample *fz, int n); +EXTERN void mayer_fft(int n, t_sample *real, t_sample *imag); +EXTERN void mayer_ifft(int n, t_sample *real, t_sample *imag); +EXTERN void mayer_realfft(int n, t_sample *real); +EXTERN void mayer_realifft(int n, t_sample *real); EXTERN float *cos_table; #define LOGCOSTABSIZE 9 @@ -532,13 +534,13 @@ typedef struct _resample t_int downsample; /* downsampling factor */ t_int upsample; /* upsampling factor */ - t_float *s_vec; /* here we hold the resampled data */ + t_sample *s_vec; /* here we hold the resampled data */ int s_n; - t_float *coeffs; /* coefficients for filtering... */ + t_sample *coeffs; /* coefficients for filtering... */ int coefsize; - t_float *buffer; /* buffer for filtering */ + t_sample *buffer; /* buffer for filtering */ int bufsize; } t_resample; @@ -550,18 +552,18 @@ EXTERN void resamplefrom_dsp(t_resample *x, t_sample *in, int insize, int outsiz EXTERN void resampleto_dsp(t_resample *x, t_sample *out, int insize, int outsize, int method); /* ----------------------- utility functions for signals -------------- */ -EXTERN float mtof(float); -EXTERN float ftom(float); -EXTERN float rmstodb(float); -EXTERN float powtodb(float); -EXTERN float dbtorms(float); -EXTERN float dbtopow(float); - -EXTERN float q8_sqrt(float); -EXTERN float q8_rsqrt(float); +EXTERN t_float mtof(t_float); +EXTERN t_float ftom(t_float); +EXTERN t_float rmstodb(t_float); +EXTERN t_float powtodb(t_float); +EXTERN t_float dbtorms(t_float); +EXTERN t_float dbtopow(t_float); + +EXTERN t_float q8_sqrt(t_float); +EXTERN t_float q8_rsqrt(t_float); #ifndef N32 -EXTERN float qsqrt(float); /* old names kept for extern compatibility */ -EXTERN float qrsqrt(float); +EXTERN t_float qsqrt(t_float); /* old names kept for extern compatibility */ +EXTERN t_float qrsqrt(t_float); #endif /* --------------------- data --------------------------------- */ @@ -572,7 +574,7 @@ EXTERN_STRUCT _garray; EXTERN t_class *garray_class; EXTERN int garray_getfloatarray(t_garray *x, int *size, t_float **vec); EXTERN int garray_getfloatwords(t_garray *x, int *size, t_word **vec); -EXTERN float garray_get(t_garray *x, t_symbol *s, t_int indx); +EXTERN t_float garray_get(t_garray *x, t_symbol *s, t_int indx); EXTERN void garray_redraw(t_garray *x); EXTERN int garray_npoints(t_garray *x); EXTERN char *garray_vec(t_garray *x); @@ -622,7 +624,6 @@ defined, there is a "te_xpix" field in objects, not a "te_xpos" as before: */ #define PD_USE_TE_XPIX - #if defined(__i386__) || defined(__x86_64__) /* a test for NANs and denormals. Should only be necessary on i386. */ #define PD_BADFLOAT(f) ((((*(unsigned int*)&(f))&0x7f800000)==0) || \ diff --git a/pd/src/m_sched.c b/pd/src/m_sched.c index 035c0b27..76f24a78 100644 --- a/pd/src/m_sched.c +++ b/pd/src/m_sched.c @@ -28,6 +28,11 @@ int sys_schedblocksize = DEFDACBLKSIZE; int sys_usecsincelastsleep(void); int sys_sleepgrain; +void sched_reopenmeplease(void) /* request from s_audio for deferred reopen */ +{ + sys_quit = SYS_QUIT_RESTART; +} + typedef void (*t_clockmethod)(void *client); struct _clock @@ -286,7 +291,7 @@ static void sched_pollformeters( void) } if (sched_meterson) { - float inmax, outmax; + t_sample inmax, outmax; sys_getmeters(&inmax, &outmax); indb = 0.5 + rmstodb(inmax); outdb = 0.5 + rmstodb(outmax); @@ -311,7 +316,7 @@ static void sched_pollformeters( void) sched_diddsp + (int)(sys_dacsr /(double)sys_schedblocksize); } -void glob_meters(void *dummy, float f) +void glob_meters(void *dummy, t_float f) { if (f == 0) sys_getmeters(0, 0); @@ -342,10 +347,13 @@ void sched_set_using_audio(int flag) sched_referencerealtime = sys_getrealtime(); sched_referencelogicaltime = clock_getlogicaltime(); } - if (flag == SCHED_AUDIO_CALLBACK && sched_useaudio != SCHED_AUDIO_CALLBACK) + if (flag == SCHED_AUDIO_CALLBACK && + sched_useaudio != SCHED_AUDIO_CALLBACK) sys_quit = SYS_QUIT_RESTART; - if (flag != SCHED_AUDIO_CALLBACK && sched_useaudio == SCHED_AUDIO_CALLBACK) - post("sorry, can't turn off callbacks yet; restart Pd"); /* not right yet! */ + if (flag != SCHED_AUDIO_CALLBACK && + sched_useaudio == SCHED_AUDIO_CALLBACK) + post("sorry, can't turn off callbacks yet; restart Pd"); + /* not right yet! */ sys_time_per_dsp_tick = (TIMEUNITPERSEC) * ((double)sys_schedblocksize) / sys_dacsr; @@ -529,7 +537,7 @@ void sched_audio_callbackfn(void) static void m_callbackscheduler(void) { sys_initmidiqueue(); - while (1) + while (!sys_quit) { #ifdef MSW Sleep(1000); diff --git a/pd/src/makefile.in b/pd/src/makefile.in index d77d4ac4..b4ad8217 100644 --- a/pd/src/makefile.in +++ b/pd/src/makefile.in @@ -59,7 +59,7 @@ SRC = g_canvas.c g_graph.c g_text.c g_rtext.c g_array.c g_template.c g_io.c \ OBJ = $(SRC:.c=.o) -GSRC = t_main.c t_tkcmd.c +GSRC = @GUISRC@ GOBJ = $(GSRC:.c=.o) @@ -83,10 +83,10 @@ endif .PHONY: pd gui externs all -all: $(PDEXEC) $(BIN_DIR)/pd-watchdog $(BIN_DIR)/$(GUINAME) $(BIN_DIR)/pdsend \ +all: pd $(BIN_DIR)/pd-watchdog gui $(BIN_DIR)/pdsend \ $(BIN_DIR)/pdreceive $(BIN_DIR)/pd.tk externs -bin: $(PDEXEC) $(BIN_DIR)/pd-watchdog $(BIN_DIR)/$(GUINAME) $(BIN_DIR)/pdsend \ +bin: pd $(BIN_DIR)/pd-watchdog gui $(BIN_DIR)/pdsend \ $(BIN_DIR)/pdreceive $(BIN_DIR)/pd.tk $(OBJ) : %.o : %.c @@ -100,7 +100,11 @@ $(ASIOOBJ): %.o : %.cpp pd: $(PDEXEC) +ifneq ($(GSRC),) gui: $(BIN_DIR)/$(GUINAME) +else +gui: +endif pd-watchdog: $(BIN_DIR)/pd-watchdog @@ -118,7 +122,7 @@ $(BIN_DIR)/pdreceive: u_pdreceive.c $(BIN_DIR) $(PDEXEC): $(OBJ) $(BIN_DIR) cd ../obj; $(CC) $(LDFLAGS) $(DBG_CFLAGS) -o $(PDEXEC) $(OBJ) $(LIB) - + $(BIN_DIR)/pd-gui: $(GOBJ) $(GSRC) cd ../obj; $(CC) $(INCLUDE) -o $(BIN_DIR)/$(GUINAME) $(GOBJ) $(GLIB) @@ -170,12 +174,12 @@ install: all for dir in $(shell ls -1 ../doc | grep -v CVS); do \ echo "installing $$dir"; \ install -d $(pddocdir)/$$dir ; \ - install -p ../doc/$$dir/*.* $(pddocdir)/$$dir ; \ + install -m644 -p ../doc/$$dir/*.* $(pddocdir)/$$dir ; \ done for dir in $(shell ls -1 ../doc/7.stuff | grep -v CVS); do \ echo "installing 7.stuff/$$dir"; \ install -d $(pddocdir)/7.stuff/$$dir ; \ - install -p ../doc/7.stuff/$$dir/*.* $(pddocdir)/7.stuff/$$dir ; \ + install -m644 -p ../doc/7.stuff/$$dir/*.* $(pddocdir)/7.stuff/$$dir ; \ done mv $(ABOUT_FILE) $(ABOUT_FILE).tmp cat $(ABOUT_FILE).tmp | sed 's|PD_VERSION|Pd version $(PD_VERSION)|' \ diff --git a/pd/src/makefile.nt b/pd/src/makefile.nt index d60651cd..addad543 100644 --- a/pd/src/makefile.nt +++ b/pd/src/makefile.nt @@ -2,17 +2,23 @@ all: pd gui ..\bin\pd.tk ..\bin\pdsend.exe ..\bin\pdreceive.exe -VC = "C:\Program Files\Microsoft Visual Studio\VC98" + +VCSDK = "C:\Program Files\Microsoft SDKs\Windows\v6.0A" +VC9 = "C:\Program Files\Microsoft Visual Studio 9.0\VC" #VC="\Program Files\DevStudio\Vc" -INCLUDE = -I.\ -I..\Tcl\include -I\DXSDK\include -I$(VC)\include +INCLUDE = -I.\ -I..\Tcl\include -I\DXSDK\include -I$(VC9)\Include \ + -I$(VCSDK)\Include -LDIR = $(VC)\lib +LDIR = $(VCSDK)\lib +LD2 = $(VC9)\lib -LIB = /NODEFAULTLIB:libc /NODEFAULTLIB:oldnames /NODEFAULTLIB:kernel \ - /NODEFAULTLIB:uuid \ - $(LDIR)\libc.lib $(LDIR)\oldnames.lib $(LDIR)\kernel32.lib \ +LIB = /NODEFAULTLIB:libcmt /NODEFAULTLIB:oldnames /NODEFAULTLIB:libc \ + /NODEFAULTLIB:uuid $(LDIR)\kernel32.lib \ $(LDIR)\wsock32.lib $(LDIR)\winmm.lib $(LDIR)\advapi32.lib \ - $(LDIR)\setupapi.lib ..\bin\pthreadVC.lib + $(LDIR)\setupapi.lib ..\bin\pthreadVC.lib \ + $(LD2)\libcmt.lib $(LD2)\oldnames.lib + +# \ GLIB = $(LIB) ..\bin\tcl84.lib ..\bin\tk84.lib CFLAGS = /nologo /W3 /DMSW /DNT /DPD /DPD_INTERNAL /DWIN32 /DWINDOWS /Ox \ @@ -97,11 +103,11 @@ pd: ..\bin\pd.exe ..\bin\pd.com gui: ..\bin\pdtcl.dll ..\bin\pd.exe: s_entry.obj ..\bin\pd.lib - link $(LFLAGS) /out:..\bin\pd.exe /INCREMENTAL:NO s_entry.obj \ + link $(LFLAGS) /OUT:..\bin\pd.exe /INCREMENTAL:NO s_entry.obj \ ..\bin\pd.lib $(LIB) $(ASIOLIB) ..\bin\pd.dll ..\bin\pd.lib: $(OBJC) $(OBJASIO) - link $(LFLAGS) /dll /export:sys_main /out:..\bin\pd.dll $(OBJC) \ + link /DLL /OUT:..\bin\pd.dll /EXPORT:sys_main $(LFLAGS) $(OBJC) \ $(OBJASIO) $(LIB) $(ASIOLIB) ..\bin\pdtcl.dll: t_tkcmd.obj diff --git a/pd/src/notes.txt b/pd/src/notes.txt index cc709392..b00b03da 100644 --- a/pd/src/notes.txt +++ b/pd/src/notes.txt @@ -1,7 +1,10 @@ ---------------- dolist -------------------- - binbuf_read_via_canvas in x_qlist.c +fixed crash bug closing patches with open GOPs +fixed PC device counting problem (first device invoked by -audiodev 0) +fixed MSTACKSIZE limitation in m_binbuf.c +fixed so that if more than one object is selected, clicking prefers to + "hit" a selected one (better dragging after "duplicate") -PC device counting problem (first device invoked by -audiodev 0) test: compile on various versions of linux @@ -12,17 +15,16 @@ windows: "-audiodev" with no args in registry can't start up? mac: clicking on windows seems sometimes not to open them -what does OSX do when jack is compiled into Pd but not installed?? -turn on paMacCore_ChangeDeviceParameters for mac (pa_mac_core.h) + what does OSX do when jack is compiled into Pd but not installed?? + turn on paMacCore_ChangeDeviceParameters for mac (pa_mac_core.h) Gnome: why don't windows pop up when clicked on? problems: +check real-time gaps in writesf~ fix declare to update current patch when changed objects on GOP don't erase if you edit the GOP while they're showing -MSTACKSIZE limitation in m_binbuf.c add -stack option to make 'regular' stack larger TK menu on Windows says "wish" -activating windows in Gnome? help browser broke on Panurge offer both new and old help browser style look again at array vis/invis conundrum, g_template.c @@ -37,7 +39,6 @@ when retyping abstractions, offer to save dirty one should linux stop grabbing focus on vis? Is there a way to detect whether the mouse is in a window when it opens? arrays that don't fit in bounds don't update (same as red rectangle problem?) -look in d_resample.pd to understand inlet~ upsampling... patcher inlets don't deal with scalars (zbug.pd) check if there's a problem loading libs on startup if superuser read xx.txt in "bad" gives warnings @@ -55,7 +56,8 @@ real-time spectrum grapher document ||, |, etc, better features: -clickles connection (hit 'c' key or something) +flag to prevent unlocking patches +clickless connection (hit 'c' key? see Bouchard paper) messages to suppress menus&accelerators, and invisibilize Pd window machine-independent fonts callback scheduling on Mac diff --git a/pd/src/s_audio.c b/pd/src/s_audio.c index b00c0dd6..04b15b21 100644 --- a/pd/src/s_audio.c +++ b/pd/src/s_audio.c @@ -39,14 +39,14 @@ int sys_outchannels; int sys_advance_samples; /* scheduler advance in samples */ int sys_blocksize = 0; /* audio I/O block size in sample frames */ int sys_audioapi = API_DEFAULT; - +int sys_audioapiopened = -1; /* save last API opened for later closing */ static int sys_meters; /* true if we're metering */ -static float sys_inmax; /* max input amplitude */ -static float sys_outmax; /* max output amplitude */ +static t_sample sys_inmax; /* max input amplitude */ +static t_sample sys_outmax; /* max output amplitude */ /* exported variables */ int sys_schedadvance; /* scheduler advance in microseconds */ -float sys_dacsr; +t_float sys_dacsr; t_sample *sys_soundout; t_sample *sys_soundin; @@ -67,7 +67,10 @@ static int audio_rate; static int audio_advance; static int audio_callback; +static int audio_callback_is_open; /* reflects true actual state */ +static int audio_nextinchans, audio_nextoutchans; void sched_audio_callbackfn(void); +void sched_reopenmeplease(void); static int audio_isopen(void) { @@ -137,18 +140,18 @@ void sys_setchsr(int chin, int chout, int sr) { int nblk; int inbytes = (chin ? chin : 2) * - (DEFDACBLKSIZE*sizeof(float)); + (DEFDACBLKSIZE*sizeof(t_sample)); int outbytes = (chout ? chout : 2) * - (DEFDACBLKSIZE*sizeof(float)); + (DEFDACBLKSIZE*sizeof(t_sample)); if (sys_soundin) freebytes(sys_soundin, (sys_inchannels? sys_inchannels : 2) * - (DEFDACBLKSIZE*sizeof(float))); + (DEFDACBLKSIZE*sizeof(t_sample))); if (sys_soundout) freebytes(sys_soundout, (sys_outchannels? sys_outchannels : 2) * - (DEFDACBLKSIZE*sizeof(float))); + (DEFDACBLKSIZE*sizeof(t_sample))); sys_inchannels = chin; sys_outchannels = chout; sys_dacsr = sr; @@ -156,10 +159,10 @@ void sys_setchsr(int chin, int chout, int sr) if (sys_advance_samples < 3 * DEFDACBLKSIZE) sys_advance_samples = 3 * DEFDACBLKSIZE; - sys_soundin = (t_float *)getbytes(inbytes); + sys_soundin = (t_sample *)getbytes(inbytes); memset(sys_soundin, 0, inbytes); - sys_soundout = (t_float *)getbytes(outbytes); + sys_soundout = (t_sample *)getbytes(outbytes); memset(sys_soundout, 0, outbytes); if (sys_verbose) @@ -193,9 +196,6 @@ void sys_set_audio_settings(int naudioindev, int *audioindev, int nchindev, { return; } - /* if we're already open close it */ - if (sys_inchannels || sys_outchannels) - sys_close_audio(); if (rate < 1) rate = DEFAULTSRATE; @@ -324,10 +324,11 @@ void sys_set_audio_settings(int naudioindev, int *audioindev, int nchindev, nrealoutdev++; } sys_schedadvance = advance * 1000; - sys_setchsr(inchans, outchans, rate); sys_log_error(ERR_NOTHING); + audio_nextinchans = inchans; + audio_nextoutchans = outchans; sys_save_audio_params(nrealindev, realindev, realinchans, - nrealoutdev, realoutdev, realoutchans, sys_dacsr, advance, callback); + nrealoutdev, realoutdev, realoutchans, rate, advance, callback); } void sys_close_audio(void) @@ -339,33 +340,36 @@ void sys_close_audio(void) if (!audio_isopen()) return; #ifdef USEAPI_PORTAUDIO - if (sys_audioapi == API_PORTAUDIO) + if (sys_audioapiopened == API_PORTAUDIO) pa_close_audio(); else #endif #ifdef USEAPI_JACK - if (sys_audioapi == API_JACK) + if (sys_audioapiopened == API_JACK) jack_close_audio(); else #endif #ifdef USEAPI_OSS - if (sys_audioapi == API_OSS) + if (sys_audioapiopened == API_OSS) oss_close_audio(); else #endif #ifdef USEAPI_ALSA - if (sys_audioapi == API_ALSA) + if (sys_audioapiopened == API_ALSA) alsa_close_audio(); else #endif #ifdef USEAPI_MMIO - if (sys_audioapi == API_MMIO) + if (sys_audioapiopened == API_MMIO) mmio_close_audio(); else #endif - post("sys_close_audio: unknown API %d", sys_audioapi); + post("sys_close_audio: unknown API %d", sys_audioapiopened); sys_inchannels = sys_outchannels = 0; + sys_audioapiopened = -1; sched_set_using_audio(SCHED_AUDIO_NONE); + audio_state = 0; + audio_callback_is_open = 0; } /* open audio using whatever parameters were last used */ @@ -376,6 +380,7 @@ void sys_reopen_audio( void) int rate, advance, callback, outcome = 0; sys_get_audio_params(&naudioindev, audioindev, chindev, &naudiooutdev, audiooutdev, choutdev, &rate, &advance, &callback); + sys_setchsr(audio_nextinchans, audio_nextoutchans, rate); if (!naudioindev && !naudiooutdev) { sched_set_using_audio(SCHED_AUDIO_NONE); @@ -426,12 +431,17 @@ void sys_reopen_audio( void) { audio_state = 0; sched_set_using_audio(SCHED_AUDIO_NONE); + sys_audioapiopened = -1; + audio_callback_is_open = 0; } else { + /* fprintf(stderr, "started w/callback %d\n", callback); */ audio_state = 1; sched_set_using_audio( (callback ? SCHED_AUDIO_CALLBACK : SCHED_AUDIO_POLL)); + sys_audioapiopened = sys_audioapi; + audio_callback_is_open = callback; } sys_vgui("set pd_whichapi %d\n", (outcome == 0 ? sys_audioapi : 0)); } @@ -441,11 +451,11 @@ int sys_send_dacs(void) if (sys_meters) { int i, n; - float maxsamp; + t_sample maxsamp; for (i = 0, n = sys_inchannels * DEFDACBLKSIZE, maxsamp = sys_inmax; i < n; i++) { - float f = sys_soundin[i]; + t_sample f = sys_soundin[i]; if (f > maxsamp) maxsamp = f; else if (-f > maxsamp) maxsamp = -f; } @@ -453,7 +463,7 @@ int sys_send_dacs(void) for (i = 0, n = sys_outchannels * DEFDACBLKSIZE, maxsamp = sys_outmax; i < n; i++) { - float f = sys_soundout[i]; + t_sample f = sys_soundout[i]; if (f > maxsamp) maxsamp = f; else if (-f > maxsamp) maxsamp = -f; } @@ -489,7 +499,7 @@ int sys_send_dacs(void) return (0); } -float sys_getsr(void) +t_float sys_getsr(void) { return (sys_dacsr); } @@ -504,7 +514,7 @@ int sys_get_inchannels(void) return (sys_inchannels); } -void sys_getmeters(float *inmax, float *outmax) +void sys_getmeters(t_sample *inmax, t_sample *outmax) { if (inmax) { @@ -684,6 +694,7 @@ void glob_audio_properties(t_pd *dummy, t_floatarg flongform) gfxstub_new(&glob_pdobject, (void *)glob_audio_properties, buf); } +extern int pa_foo; /* new values from dialog window */ void glob_audio_dialog(t_pd *dummy, t_symbol *s, int argc, t_atom *argv) { @@ -697,7 +708,6 @@ void glob_audio_dialog(t_pd *dummy, t_symbol *s, int argc, t_atom *argv) int newrate = atom_getintarg(16, argc, argv); int newadvance = atom_getintarg(17, argc, argv); int newcallback = atom_getintarg(18, argc, argv); - int statewas; for (i = 0; i < 4; i++) { @@ -732,13 +742,14 @@ void glob_audio_dialog(t_pd *dummy, t_symbol *s, int argc, t_atom *argv) if (newcallback < 0) newcallback = 0; - if (audio_callback == newcallback) + if (!audio_callback_is_open && !newcallback) sys_close_audio(); sys_set_audio_settings(nindev, newaudioindev, nindev, newaudioinchan, noutdev, newaudiooutdev, noutdev, newaudiooutchan, newrate, newadvance, (newcallback >= 0 ? newcallback : 0)); - if (audio_callback == newcallback) + if (!audio_callback_is_open && !newcallback) sys_reopen_audio(); + else sched_reopenmeplease(); } void sys_listdevs(void ) @@ -815,7 +826,6 @@ void glob_audio_setapi(void *dummy, t_floatarg f) else if (audio_isopen()) { sys_close_audio(); - audio_state = 0; } } @@ -832,7 +842,6 @@ void sys_set_audio_state(int onoff) if (audio_isopen()) sys_close_audio(); } - audio_state = onoff; } void sys_get_audio_apis(char *buf) diff --git a/pd/src/s_audio_jack.c b/pd/src/s_audio_jack.c index 92f652e9..f00e2f13 100644 --- a/pd/src/s_audio_jack.c +++ b/pd/src/s_audio_jack.c @@ -18,8 +18,8 @@ static jack_nframes_t jack_out_max; #define JACK_OUT_MAX 64 static jack_nframes_t jack_filled = 0; -static float jack_outbuf[NUM_JACK_PORTS*BUF_JACK]; -static float jack_inbuf[NUM_JACK_PORTS*BUF_JACK]; +static t_sample jack_outbuf[NUM_JACK_PORTS*BUF_JACK]; +static t_sample jack_inbuf[NUM_JACK_PORTS*BUF_JACK]; static int jack_started = 0; @@ -39,22 +39,42 @@ static int process (jack_nframes_t nframes, void *arg) { int j; - float *out; - float *in; - + jack_default_audio_sample_t *out, *in; if (nframes > JACK_OUT_MAX) jack_out_max = nframes; else jack_out_max = JACK_OUT_MAX; if (jack_filled >= nframes) { if (jack_filled != nframes) fprintf(stderr,"Partial read"); - - for (j = 0; j < sys_outchannels; j++) { + /* hmm, how to find out whether 't_sample' and 'jack_default_audio_sample_t' are actually the same type??? */ + if(sizeof(t_sample)==sizeof(jack_default_audio_sample_t)) + { + for (j = 0; j < sys_outchannels; j++) { out = jack_port_get_buffer (output_port[j], nframes); - memcpy(out, jack_outbuf + (j * BUF_JACK), sizeof (float) * nframes); - } - for (j = 0; j < sys_inchannels; j++) { + memcpy(out, jack_outbuf + (j * BUF_JACK), sizeof (jack_default_audio_sample_t) * nframes); + } + for (j = 0; j < sys_inchannels; j++) { + in = jack_port_get_buffer( input_port[j], nframes); + memcpy(jack_inbuf + (j * BUF_JACK), in, sizeof (jack_default_audio_sample_t) * nframes); + } + } + else + { + unsigned int frame=0; + t_sample*data; + for (j = 0; j < sys_outchannels; j++) { + out = jack_port_get_buffer (output_port[j], nframes); + data=jack_outbuf + (j * BUF_JACK); + for(frame=0; frame 1) { int save = param; @@ -399,10 +418,12 @@ int oss_open_audio(int nindev, int *indev, int nchin, int *chin, sys_setalarm(1000000); /* perhaps it's already open from the above? */ - if (linux_dacs[n].d_fd >= 0) + if (linux_adcs[n].d_fd >= 0) { fd = linux_adcs[n].d_fd; alreadyopened = 1; + if (sys_verbose) + post("already opened it"); } else { @@ -624,7 +645,7 @@ static void oss_doresync( void) int oss_send_dacs(void) { - float *fp1, *fp2; + t_sample *fp1, *fp2; long fill; int i, j, dev, rtnval = SENDDACS_YES; char buf[OSS_MAXSAMPLEWIDTH * DEFDACBLKSIZE * OSS_MAXCHPERDEV]; @@ -758,7 +779,7 @@ int oss_send_dacs(void) thischan += nchannels; } memset(sys_soundout, 0, - sys_outchannels * (sizeof(float) * DEFDACBLKSIZE)); + sys_outchannels * (sizeof(t_sample) * DEFDACBLKSIZE)); /* do input */ diff --git a/pd/src/s_audio_pa.c b/pd/src/s_audio_pa.c index f05c41d8..85816ee7 100644 --- a/pd/src/s_audio_pa.c +++ b/pd/src/s_audio_pa.c @@ -28,6 +28,8 @@ static t_audiocallback pa_callback; #define MAX_PA_CHANS 32 #define MAX_SAMPLES_PER_FRAME MAX_PA_CHANS * DEFDACBLKSIZE +int pa_foo; + static int pa_lowlevel_callback(const void *inputBuffer, void *outputBuffer, unsigned long framesPerBuffer, const PaStreamCallbackTimeInfo *outTime, PaStreamCallbackFlags myflags, @@ -36,10 +38,12 @@ static int pa_lowlevel_callback(const void *inputBuffer, int i; unsigned int j; float *fbuf, *fp2, *fp3, *soundiop; - if (framesPerBuffer != DEFDACBLKSIZE) - { - fprintf(stderr, "ignoring buffer size %d\n", framesPerBuffer); - return; + if (pa_foo) + fprintf(stderr, "pa_lowlevel_callback\n"); + if (framesPerBuffer != DEFDACBLKSIZE) + { + fprintf(stderr, "ignoring buffer size %d\n", (int)framesPerBuffer); + return 0; } if (inputBuffer != NULL) { @@ -51,6 +55,8 @@ static int pa_lowlevel_callback(const void *inputBuffer, } else memset((void *)pa_soundin, 0, framesPerBuffer * pa_inchans * sizeof(float)); + memset((void *)pa_soundout, 0, + framesPerBuffer * pa_outchans * sizeof(float)); (*pa_callback)(); if (outputBuffer != NULL) { @@ -60,7 +66,8 @@ static int pa_lowlevel_callback(const void *inputBuffer, for (j = 0, fp3 = fp2; j < framesPerBuffer; j++, fp3 += pa_outchans) *fp3 = *soundiop++; } - + if (pa_foo) + fprintf(stderr, "done pa_lowlevel_callback\n"); return 0; } @@ -153,8 +160,7 @@ int pa_open_audio(int inchans, int outchans, int rate, t_sample *soundin, int j, devno, pa_indev = 0, pa_outdev = 0; pa_callback = callbackfn; - if (callbackfn) - fprintf(stderr, "callback enabled\n"); + /* fprintf(stderr, "open callback %d\n", (callbackfn != 0)); */ if (!initialized) { /* Initialize PortAudio */ @@ -254,6 +260,7 @@ int pa_open_audio(int inchans, int outchans, int rate, t_sample *soundin, void pa_close_audio( void) { + /* fprintf(stderr, "close\n"); */ if (pa_inchans || pa_outchans) CloseAudioStream( pa_stream ); pa_inchans = pa_outchans = 0; diff --git a/pd/src/s_entry.c b/pd/src/s_entry.c index 5cef73cc..9a0984ed 100644 --- a/pd/src/s_entry.c +++ b/pd/src/s_entry.c @@ -23,6 +23,7 @@ int WINAPI WinMain(HINSTANCE hInstance, { printf("caught an exception; stopping\n"); } + return (0); } #else /* not _MSC_VER ... */ diff --git a/pd/src/s_inter.c b/pd/src/s_inter.c index 9945466f..816e6207 100644 --- a/pd/src/s_inter.c +++ b/pd/src/s_inter.c @@ -90,7 +90,6 @@ struct _socketreceiver extern char *pd_version; extern int sys_guisetportnumber; -extern char sys_font[]; /* tb: typeface */ static int sys_nfdpoll; static t_fdpoll *sys_fdpoll; @@ -849,7 +848,8 @@ void glob_watchdog(t_pd *dummy) #define FIRSTPORTNUM 5400 -static int defaultfontshit[] = { +#define MAXFONTS 21 +static int defaultfontshit[MAXFONTS] = { 8, 5, 9, 10, 6, 10, 12, 7, 13, 14, 9, 17, 16, 10, 19, 24, 15, 28, 24, 15, 28}; #define NDEFAULTFONT (sizeof(defaultfontshit)/sizeof(*defaultfontshit)) @@ -1237,7 +1237,7 @@ int sys_startgui(const char *guidir) sys_guisock = accept(xsock, (struct sockaddr *) &server, (socklen_t *)&len); #ifdef OOPS - close(xsock); + sys_closesocket(xsock); #endif if (sys_guisock < 0) sys_sockerror("accept"); if (sys_verbose) @@ -1257,8 +1257,8 @@ int sys_startgui(const char *guidir) #endif sys_get_audio_apis(buf); sys_get_midi_apis(buf2); - sys_vgui("pdtk_pd_startup {%s} %s %s {%s}\n", pd_version, buf, buf2, - sys_font); + sys_vgui("pdtk_pd_startup {%s} %s %s {%s} %s\n", pd_version, buf, buf2, + sys_font, sys_fontweight); } return (0); @@ -1292,7 +1292,7 @@ void glob_quit(void *dummy) sys_vgui("exit\n"); if (!sys_nogui) { - close(sys_guisock); + sys_closesocket(sys_guisock); sys_rmpollfn(sys_guisock); } sys_bail(0); diff --git a/pd/src/s_loader.c b/pd/src/s_loader.c index d2022146..4788c13c 100644 --- a/pd/src/s_loader.c +++ b/pd/src/s_loader.c @@ -124,7 +124,7 @@ static int sys_do_load_lib(t_canvas *canvas, char *objectname) symname[i] = 0; if (hexmunge) { - memmove(symname+6, symname, strlen(symname+1)); + memmove(symname+6, symname, strlen(symname)+1); strncpy(symname, "setup_", 6); } else strcat(symname, "_setup"); diff --git a/pd/src/s_main.c b/pd/src/s_main.c index ded67c88..3396e993 100644 --- a/pd/src/s_main.c +++ b/pd/src/s_main.c @@ -58,7 +58,13 @@ int sys_nmidiin = -1; int sys_midiindevlist[MAXMIDIINDEV] = {1}; int sys_midioutdevlist[MAXMIDIOUTDEV] = {1}; -char sys_font[100] = "courier"; /* tb: font name */ +char sys_font[100] = +#ifdef MSW + "Courier"; +#else + "Courier"; +#endif +char sys_fontweight[] = "bold "; /* currently only used for iemguis */ static int sys_main_srate; static int sys_main_advance; static int sys_main_callback; @@ -89,7 +95,7 @@ int* get_sys_main_advance() { return &sys_main_advance; } double* get_sys_time_per_dsp_tick() { return &sys_time_per_dsp_tick; } int* get_sys_schedblocksize() { return &sys_schedblocksize; } double* get_sys_time() { return &sys_time; } -float* get_sys_dacsr() { return &sys_dacsr; } +t_float* get_sys_dacsr() { return &sys_dacsr; } int* get_sys_sleepgrain() { return &sys_sleepgrain; } int* get_sys_schedadvance() { return &sys_schedadvance; } @@ -159,11 +165,7 @@ int sys_fontheight(int fontsize) } int sys_defaultfont; -#ifdef MSW -#define DEFAULTFONT 12 -#else #define DEFAULTFONT 10 -#endif static void openit(const char *dirname, const char *filename) { @@ -383,8 +385,9 @@ static char *(usagemessage[]) = { "-helppath -- add to help file search path\n", "-open -- open file(s) on startup\n", "-lib -- load object library(s)\n", -"-font -- specify default font size in points\n", -"-typeface -- specify default font (default: courier)\n", +"-font-size -- specify default font size in points\n", +"-font-face -- specify default font (default: Bitstream Vera Sans Mono)\n", +"-font-weight -- specify default font weight (normal or bold)\n", "-verbose -- extra printout on startup and when searching for files\n", "-version -- don't run Pd; just print out which version it is \n", "-d -- specify debug level\n", @@ -744,21 +747,26 @@ int sys_argparse(int argc, char **argv) sys_externlist = namelist_append_files(sys_externlist, argv[1]); argc -= 2; argv += 2; } - else if (!strcmp(*argv, "-font") && argc > 1) + else if ((!strcmp(*argv, "-font-size") || !strcmp(*argv, "-font")) && argc > 1) { sys_defaultfont = sys_nearestfontsize(atoi(argv[1])); argc -= 2; argv += 2; } - /* tb: font name { */ - else if (!strcmp(*argv, "-typeface") && argc > 1) + else if ((!strcmp(*argv, "-font-face") || !strcmp(*argv, "-typeface")) && argc > 1) { strncpy(sys_font,*(argv+1),sizeof(sys_font)-1); sys_font[sizeof(sys_font)-1] = 0; argc -= 2; argv += 2; } - /* } tb */ + else if (!strcmp(*argv, "-font-weight") && argc > 1) + { + strncpy(sys_fontweight,*(argv+1),sizeof(sys_fontweight)-1); + sys_fontweight[sizeof(sys_fontweight)-1] = 0; + argc -= 2; + argv += 2; + } else if (!strcmp(*argv, "-verbose")) { sys_verbose++; @@ -814,14 +822,16 @@ int sys_argparse(int argc, char **argv) else if (!strcmp(*argv, "-schedlib")) { sys_externalschedlib = 1; - strcpy(sys_externalschedlibname, argv[1]); + strncpy(sys_externalschedlibname, argv[1], + sizeof(sys_externalschedlibname) - 1); argv += 2; argc -= 2; } else if (!strcmp(*argv, "-extraflags")) { sys_extraflags = 1; - strcpy(sys_extraflagsstring, argv[1]); + strncpy(sys_extraflagsstring, argv[1], + sizeof(sys_extraflagsstring) - 1); argv += 2; argc -= 2; } diff --git a/pd/src/s_path.c b/pd/src/s_path.c index 97591d4c..6abe7d0c 100644 --- a/pd/src/s_path.c +++ b/pd/src/s_path.c @@ -522,11 +522,16 @@ void glob_start_path_dialog(t_pd *dummy) char buf[MAXPDSTRING]; int i; t_namelist *nl; - - for (nl = sys_searchpath, i = 0; nl && i < 10; nl = nl->nl_next, i++) - sys_vgui("pd_set pd_path%d \"%s\"\n", i, nl->nl_string); - for (; i < 10; i++) - sys_vgui("pd_set pd_path%d \"\"\n", i); + + sprintf(buf, "list"); + for (nl = sys_searchpath, i = 0; nl; nl = nl->nl_next, i++) { + if(nl->nl_string){ + strcat(buf, " \""); + strcat(buf, nl->nl_string); + strcat(buf, "\""); + } + } + sys_vgui("pd_set pd_path [%s]\n", buf); sprintf(buf, "pdtk_path_dialog %%s %d %d\n", sys_usestdpath, sys_verbose); gfxstub_new(&glob_pdobject, (void *)glob_start_path_dialog, buf); @@ -554,11 +559,16 @@ void glob_start_startup_dialog(t_pd *dummy) char buf[MAXPDSTRING]; int i; t_namelist *nl; - - for (nl = sys_externlist, i = 0; nl && i < 10; nl = nl->nl_next, i++) - sys_vgui("pd_set pd_startup%d \"%s\"\n", i, nl->nl_string); - for (; i < 10; i++) - sys_vgui("pd_set pd_startup%d \"\"\n", i); + + sprintf(buf, "list"); + for (nl = sys_externlist, i = 0; nl; nl = nl->nl_next, i++) { + if(nl->nl_string){ + strcat(buf, " \""); + strcat(buf, nl->nl_string); + strcat(buf, "\""); + } + } + sys_vgui("pd_set pd_startup [%s]\n", buf); sprintf(buf, "pdtk_startup_dialog %%s %d \"%s\"\n", sys_defeatrt, sys_flags->s_name); diff --git a/pd/src/s_print.c b/pd/src/s_print.c index 1d7695d1..3aacd188 100644 --- a/pd/src/s_print.c +++ b/pd/src/s_print.c @@ -77,13 +77,13 @@ void postatom(int argc, t_atom *argv) int i; for (i = 0; i < argc; i++) { - char buf[80]; - atom_string(argv+i, buf, 80); + char buf[MAXPDSTRING]; + atom_string(argv+i, buf, MAXPDSTRING); poststring(buf); } } -void postfloat(float f) +void postfloat(t_float f) { char buf[80]; t_atom a; @@ -118,7 +118,7 @@ void verbose(int level, const char *fmt, ...) int i; if(level>sys_verbose)return; dopost("verbose("); - postfloat((float)level); + postfloat((t_float)level); dopost("):"); va_start(ap, fmt); diff --git a/pd/src/s_stuff.h b/pd/src/s_stuff.h index 4cde9c42..a1f9026c 100644 --- a/pd/src/s_stuff.h +++ b/pd/src/s_stuff.h @@ -68,7 +68,7 @@ extern int sys_inchannels; extern int sys_outchannels; extern int sys_advance_samples; /* scheduler advance in samples */ extern int sys_blocksize; /* audio I/O block size in sample frames */ -extern float sys_dacsr; +extern t_float sys_dacsr; extern int sys_schedadvance; extern int sys_sleepgrain; void sys_set_audio_settings(int naudioindev, int *audioindev, @@ -83,7 +83,7 @@ int sys_send_dacs(void); void sys_reportidle(void); void sys_set_priority(int higher); void sys_audiobuf(int nbufs); -void sys_getmeters(float *inmax, float *outmax); +void sys_getmeters(t_sample *inmax, t_sample *outmax); void sys_listdevs(void); void sys_setblocksize(int n); @@ -286,9 +286,6 @@ void sys_save_audio_params( typedef void (*t_printhook)(const char *s); extern t_printhook sys_printhook; /* set this to override printing */ extern int sys_printtostderr; -#ifdef MSW -#define vsnprintf _vsnprintf /* jsarlo -- alias this name for msw */ -#endif /* jsarlo { */ @@ -302,7 +299,7 @@ EXTERN int* get_sys_main_advance(void ) ; EXTERN double* get_sys_time_per_dsp_tick(void ) ; EXTERN int* get_sys_schedblocksize(void ) ; EXTERN double* get_sys_time(void ) ; -EXTERN float* get_sys_dacsr(void ) ; +EXTERN t_float* get_sys_dacsr(void ) ; EXTERN int* get_sys_sleepgrain(void ) ; EXTERN int* get_sys_schedadvance(void ) ; diff --git a/pd/src/u_main.tk b/pd/src/u_main.tk index be87b8f5..08d429a1 100644 --- a/pd/src/u_main.tk +++ b/pd/src/u_main.tk @@ -1,14 +1,4 @@ #!/usr/bin/wish - -# set pd_nt (bad name) 0 for unix, 1 for microsoft, and 2 for Mac OSX. -if { $tcl_platform(platform) == "windows" } { - set pd_nt 1 -} elseif { $tcl_platform(os) == "Darwin" } { - set pd_nt 2 -} else { - set pd_nt 0 -} - # Copyright (c) 1997-1999 Miller Puckette. # For information on usage and redistribution, and for a DISCLAIMER OF ALL # WARRANTIES, see the file, "LICENSE.txt," in this distribution. @@ -21,6 +11,39 @@ if { $tcl_platform(platform) == "windows" } { # # all this changes are labeled with #######iemlib########## +# set pd_nt (bad name) 0 for unix, 1 for microsoft, and 2 for Mac OSX. +if { $tcl_platform(platform) == "windows" } { + set pd_nt 1 + set defaultFontFamily {Bitstream Vera Sans Mono} + set defaultFontWeight normal + font create menuFont -family Tahoma -size -11 +} elseif { $tcl_platform(os) == "Darwin" } { + set pd_nt 2 + set defaultFontFamily Monaco + set defaultFontWeight normal +} else { + set pd_nt 0 + set defaultFontFamily Courier + set defaultFontWeight bold +} + +# start Pd-extended font hacks ----------------------------- + +# Pd-0.39.2-extended hacks to make font/box sizes the same across platform +# puts stderr "tk scaling is [tk scaling]" +# tk scaling 1 + +# this font is for the Pd Window console text +font create console_font -family $defaultFontFamily -size -12 \ + -weight $defaultFontWeight +# this font is for text in Pd windows +font create text_font -family {Times} -size -14 -weight normal +# for text in Properties Panels and other panes +font create highlight_font -family $defaultFontFamily -size -14 -weight bold + +# end Pd-extended font hacks ----------------------------- + + # Tearoff is set to true by default: set pd_tearoff 1 @@ -44,11 +67,7 @@ if {$pd_nt == 1} { if {$pd_nt == 2} { # turn on James Tittle II's fast drawing set tk::mac::useCGDrawing 1 - # set minimum line size for anti-aliasing. If set to 1 or 0, then every - # line will be anti-aliased. While this makes connections and circles in - # [bng] and such look really good, it makes boxes and messages look out of - # focus. Setting this to 2 makes it so the thick audio rate connections - # are anti-aliased. 2005-06-09 +# anti-alias all lines that need it set tk::mac::CGAntialiasLimit 2 global pd_guidir global pd_tearoff @@ -132,6 +151,15 @@ if {$pd_nt != 2} { .mbar add cascade -label "Help" -menu .mbar.help } +# fix menu font size on Windows with tk scaling = 1 +if {$pd_nt == 1} { + .mbar.file configure -font menuFont + .mbar.find configure -font menuFont + .mbar.windows configure -font menuFont + .mbar.audio configure -font menuFont + .mbar.help configure -font menuFont +} + set ctrls_audio_on 0 set ctrls_meter_on 0 set ctrls_inlevel 0 @@ -140,15 +168,14 @@ set ctrls_outlevel 0 frame .controls.switches checkbutton .controls.switches.audiobutton -text {compute audio} \ -variable ctrls_audio_on \ - -anchor w \ -command {pd [concat pd dsp $ctrls_audio_on \;]} checkbutton .controls.switches.meterbutton -text {peak meters} \ -variable ctrls_meter_on \ - -anchor w \ -command {pd [concat pd meters $ctrls_meter_on \;]} -pack .controls.switches.audiobutton .controls.switches.meterbutton -side top +pack .controls.switches.audiobutton .controls.switches.meterbutton \ + -side top -anchor w frame .controls.inout frame .controls.inout.in @@ -175,7 +202,7 @@ pack .controls.dio -side right -padx 20 frame .printout -text .printout.text -relief raised -bd 2 -font -*-courier-bold--normal--12-* \ +text .printout.text -relief raised -bd 2 -font console_font \ -yscrollcommand ".printout.scroll set" -width 80 # .printout.text insert end "\n\n\n\n\n\n\n\n\n\n" scrollbar .printout.scroll -command ".printout.text yview" @@ -365,7 +392,7 @@ proc menu_opentext {filename} { global pd_myversion set name [format ".help%d" $doc_number] toplevel $name - text $name.text -relief raised -bd 2 -font -*-times-regular--normal--14-* \ + text $name.text -relief raised -bd 2 -font text_font \ -yscrollcommand "$name.scroll set" -background white scrollbar $name.scroll -command "$name.text yview" pack $name.scroll -side right -fill y @@ -387,9 +414,16 @@ proc menu_openhtml {filename} { global pd_nt if {$pd_nt == 0} { - exec sh -c \ - [format "firefox file:%s || mozilla file:%s " \ - $filename $filename] & + foreach candidate \ + { gnome-open xdg-open sensible-browser iceweasel firefox mozilla \ + galeon konqueror netscape lynx } { + set browser [lindex [auto_execok $candidate] 0] + if {[string length $browser]} { + puts stderr [format "%s %s" $browser $filename] + exec -- sh -c [format "%s %s" $browser $filename] & + break + } + } } elseif {$pd_nt == 2} { puts stderr [format "open %s" $filename] exec sh -c [format "open %s" $filename] @@ -1143,6 +1177,18 @@ proc pdtk_canvas_new {name width height geometry editable} { $name.popup add command -label {Help} \ -command [concat popup_action $name 2] +# fix menu font size on Windows with tk scaling = 1 +if {$pd_nt == 1} { + $name.m.file configure -font menuFont + $name.m.edit configure -font menuFont + $name.m.find configure -font menuFont + $name.m.put configure -font menuFont + $name.m.windows configure -font menuFont + $name.m.audio configure -font menuFont + $name.m.help configure -font menuFont + $name.popup configure -font menuFont +} + # WM protocol wm protocol $name WM_DELETE_WINDOW [concat menu_close $name] @@ -1162,6 +1208,7 @@ proc pdtk_canvas_new {name width height geometry editable} { bind $name.c {pdtk_canvas_click %W %x %y %b 4} bind $name.c {pdtk_canvas_click %W %x %y %b 5} bind $name.c {pdtk_canvas_click %W %x %y %b 6} + bind $name.c {pdtk_canvas_click %W %x %y %b 6} bind $name.c \ {pdtk_canvas_click %W %x %y %b 7} } else { @@ -1267,6 +1314,7 @@ proc pdtk_array_listview_new {id arrayName page} { global pd_nt global pd_array_listview_page global pd_array_listview_id + global fontname fontweight set pd_array_listview_page($arrayName) $page set pd_array_listview_id($arrayName) $id set windowName [format ".%sArrayWindow" $arrayName] @@ -1280,8 +1328,7 @@ proc pdtk_array_listview_new {id arrayName page} { set $windowName.lb [listbox $windowName.lb -height 20 -width 25\ -selectmode extended \ -relief solid -background white -borderwidth 1 \ - -font [format -*-courier-bold--normal--%d-* \ - $font] \ + -font [format {{%s} %d %s} $fontname $font $fontweight]\ -yscrollcommand "$windowName.lb.sb set"] set $windowName.lb.sb [scrollbar $windowName.lb.sb \ -command "$windowName.lb yview" -orient vertical] @@ -1385,9 +1432,7 @@ proc pdtk_array_listview_paste {arrayName} { proc pdtk_array_listview_edit {arrayName page font} { global pd_array_listview_entry global pd_nt - if {$pd_nt == 0} { - set font [expr $font - 2] - } + global fontname fontweight set lbName [format ".%sArrayWindow.lb" $arrayName] if {[winfo exists $lbName.entry]} { pdtk_array_listview_update_entry \ @@ -1399,7 +1444,7 @@ proc pdtk_array_listview_edit {arrayName page font} { set bbox [$lbName bbox $itemNum] set y [expr [lindex $bbox 1] - 4] set $lbName.entry [entry $lbName.entry \ - -font [format -*-courier-bold--normal--%d-* $font]] + -font [format {{%s} %d %s} $fontname $font $fontweight]] $lbName.entry insert 0 [] place configure $lbName.entry -relx 0 -y $y -relwidth 1 lower $lbName.entry @@ -1875,6 +1920,8 @@ proc pdtk_gatom_dialog {id initwidth initlo inithi \ set vid [string trimleft $id .] + global pd_nt + set var_gatomwidth [concat gatomwidth_$vid] global $var_gatomwidth set var_gatomlo [concat gatomlo_$vid] @@ -1899,87 +1946,96 @@ proc pdtk_gatom_dialog {id initwidth initlo inithi \ set $var_gatomsymto [gatom_unescape $symto] toplevel $id - wm title $id {Atom} + wm title $id "atom box properties" + wm resizable $id 0 0 wm protocol $id WM_DELETE_WINDOW [concat dogatom_cancel $id] - frame $id.buttonframe - pack $id.buttonframe -side bottom -fill x -pady 2m + frame $id.params -height 7 + pack $id.params -side top + label $id.params.entryname -text "width" + entry $id.params.entry -textvariable $var_gatomwidth -width 4 + pack $id.params.entryname $id.params.entry -side left + + labelframe $id.limits -text "limits" -padx 15 -pady 4 -borderwidth 1 \ + -font highlight_font + pack $id.limits -side top -fill x + frame $id.limits.lower + pack $id.limits.lower -side left + label $id.limits.lower.entryname -text "lower" + entry $id.limits.lower.entry -textvariable $var_gatomlo -width 8 + pack $id.limits.lower.entryname $id.limits.lower.entry -side left + frame $id.limits.upper + pack $id.limits.upper -side left + frame $id.limits.upper.spacer -width 20 + label $id.limits.upper.entryname -text "upper" + entry $id.limits.upper.entry -textvariable $var_gatomhi -width 8 + pack $id.limits.upper.spacer $id.limits.upper.entryname \ + $id.limits.upper.entry -side left + + frame $id.spacer1 -height 7 + pack $id.spacer1 -side top + + labelframe $id.label -text "label" -padx 5 -pady 4 -borderwidth 1 \ + -font highlight_font + pack $id.label -side top -fill x + frame $id.label.name + pack $id.label.name -side top + entry $id.label.name.entry -textvariable $var_gatomlabel -width 33 + pack $id.label.name.entry -side left + frame $id.label.radio + pack $id.label.radio -side top + radiobutton $id.label.radio.left -value 0 \ + -variable $var_gatomwherelabel \ + -text "left " -justify left + radiobutton $id.label.radio.right -value 1 \ + -variable $var_gatomwherelabel \ + -text "right" -justify left + radiobutton $id.label.radio.top -value 2 \ + -variable $var_gatomwherelabel \ + -text "top" -justify left + radiobutton $id.label.radio.bottom -value 3 \ + -variable $var_gatomwherelabel \ + -text "bottom" -justify left + pack $id.label.radio.left -side left -anchor w + pack $id.label.radio.right -side right -anchor w + pack $id.label.radio.top -side top -anchor w + pack $id.label.radio.bottom -side bottom -anchor w + + frame $id.spacer2 -height 7 + pack $id.spacer2 -side top + + labelframe $id.s_r -text "messages" -padx 5 -pady 4 -borderwidth 1 \ + -font highlight_font + pack $id.s_r -side top -fill x + frame $id.s_r.paramsymto + pack $id.s_r.paramsymto -side top -anchor e + label $id.s_r.paramsymto.entryname -text "send symbol" + entry $id.s_r.paramsymto.entry -textvariable $var_gatomsymto -width 21 + pack $id.s_r.paramsymto.entry $id.s_r.paramsymto.entryname -side right + + frame $id.s_r.paramsymfrom + pack $id.s_r.paramsymfrom -side top -anchor e + label $id.s_r.paramsymfrom.entryname -text "receive symbol" + entry $id.s_r.paramsymfrom.entry -textvariable $var_gatomsymfrom -width 21 + pack $id.s_r.paramsymfrom.entry $id.s_r.paramsymfrom.entryname -side right + + frame $id.buttonframe -pady 5 + pack $id.buttonframe -side top -fill x -pady 2m button $id.buttonframe.cancel -text {Cancel}\ -command "dogatom_cancel $id" + pack $id.buttonframe.cancel -side left -expand 1 button $id.buttonframe.apply -text {Apply}\ -command "dogatom_apply $id" + pack $id.buttonframe.apply -side left -expand 1 button $id.buttonframe.ok -text {OK}\ -command "dogatom_ok $id" - pack $id.buttonframe.cancel -side left -expand 1 - pack $id.buttonframe.apply -side left -expand 1 pack $id.buttonframe.ok -side left -expand 1 - frame $id.paramsymto - pack $id.paramsymto -side bottom - label $id.paramsymto.entryname -text {send symbol} - entry $id.paramsymto.entry -textvariable $var_gatomsymto -width 20 - pack $id.paramsymto.entryname $id.paramsymto.entry -side left - - frame $id.paramsymfrom - pack $id.paramsymfrom -side bottom - label $id.paramsymfrom.entryname -text {receive symbol} - entry $id.paramsymfrom.entry -textvariable $var_gatomsymfrom -width 20 - pack $id.paramsymfrom.entryname $id.paramsymfrom.entry -side left - - frame $id.radio - pack $id.radio -side bottom - label $id.radio.label -text {show label on:} - frame $id.radio.l - frame $id.radio.r - pack $id.radio.label -side top - pack $id.radio.l $id.radio.r -side left - radiobutton $id.radio.l.radio0 -value 0 \ - -variable $var_gatomwherelabel \ - -text "left" - radiobutton $id.radio.l.radio1 -value 1 \ - -variable $var_gatomwherelabel \ - -text "right" - radiobutton $id.radio.r.radio2 -value 2 \ - -variable $var_gatomwherelabel \ - -text "top" - radiobutton $id.radio.r.radio3 -value 3 \ - -variable $var_gatomwherelabel \ - -text "bottom" - pack $id.radio.l.radio0 $id.radio.l.radio1 -side top -anchor w - pack $id.radio.r.radio2 $id.radio.r.radio3 -side top -anchor w - - - frame $id.paramlabel - pack $id.paramlabel -side bottom - label $id.paramlabel.entryname -text label - entry $id.paramlabel.entry -textvariable $var_gatomlabel -width 20 - pack $id.paramlabel.entryname $id.paramlabel.entry -side left - - frame $id.paramhi - pack $id.paramhi -side bottom - label $id.paramhi.entryname -text "upper limit" - entry $id.paramhi.entry -textvariable $var_gatomhi -width 8 - pack $id.paramhi.entryname $id.paramhi.entry -side left - - frame $id.paramlo - pack $id.paramlo -side bottom - label $id.paramlo.entryname -text "lower limit" - entry $id.paramlo.entry -textvariable $var_gatomlo -width 8 - pack $id.paramlo.entryname $id.paramlo.entry -side left - - frame $id.params - pack $id.params -side bottom - label $id.params.entryname -text width - entry $id.params.entry -textvariable $var_gatomwidth -width 4 - pack $id.params.entryname $id.params.entry -side left - - - - bind $id.paramhi.entry [concat dogatom_ok $id] - bind $id.paramlo.entry [concat dogatom_ok $id] + bind $id.limits.upper.entry [concat dogatom_ok $id] + bind $id.limits.lower.entry [concat dogatom_ok $id] bind $id.params.entry [concat dogatom_ok $id] - pdtk_standardkeybindings $id.paramhi.entry - pdtk_standardkeybindings $id.paramlo.entry + pdtk_standardkeybindings $id.limits.upper.entry + pdtk_standardkeybindings $id.limits.lower.entry pdtk_standardkeybindings $id.params.entry $id.params.entry select from 0 $id.params.entry select adjust end @@ -2132,7 +2188,7 @@ proc iemgui_clip_fontsize {id} { if {[eval concat $$var_iemgui_gn_fs] < $iemgui_define_min_fontsize} { set $var_iemgui_gn_fs $iemgui_define_min_fontsize - $id.gnfs.fs_ent configure -textvariable $var_iemgui_gn_fs + $id.label.fs_ent configure -textvariable $var_iemgui_gn_fs } } @@ -2146,20 +2202,20 @@ proc iemgui_set_col_example {id} { set var_iemgui_lcol [concat iemgui_lcol_$vid] global $var_iemgui_lcol - $id.col_example_choose.lb_bk configure \ + $id.colors.sections.lb_bk configure \ -background [format "#%6.6x" [eval concat $$var_iemgui_bcol]] \ -activebackground [format "#%6.6x" [eval concat $$var_iemgui_bcol]] \ -foreground [format "#%6.6x" [eval concat $$var_iemgui_lcol]] \ -activeforeground [format "#%6.6x" [eval concat $$var_iemgui_lcol]] if { [eval concat $$var_iemgui_fcol] >= 0 } { - $id.col_example_choose.fr_bk configure \ + $id.colors.sections.fr_bk configure \ -background [format "#%6.6x" [eval concat $$var_iemgui_bcol]] \ -activebackground [format "#%6.6x" [eval concat $$var_iemgui_bcol]] \ -foreground [format "#%6.6x" [eval concat $$var_iemgui_fcol]] \ -activeforeground [format "#%6.6x" [eval concat $$var_iemgui_fcol]] } else { - $id.col_example_choose.fr_bk configure \ + $id.colors.sections.fr_bk configure \ -background [format "#%6.6x" [eval concat $$var_iemgui_bcol]] \ -activebackground [format "#%6.6x" [eval concat $$var_iemgui_bcol]] \ -foreground [format "#%6.6x" [eval concat $$var_iemgui_bcol]] \ @@ -2243,17 +2299,27 @@ proc iemgui_lilo {id} { } } -proc iemgui_toggle_font {id} { +proc iemgui_toggle_font {id gn_f} { set vid [string trimleft $id .] set var_iemgui_gn_f [concat iemgui_gn_f_$vid] global $var_iemgui_gn_f + global fontname fontweight - set $var_iemgui_gn_f [expr [eval concat $$var_iemgui_gn_f] + 1] - if {[eval concat $$var_iemgui_gn_f] > 2} {set $var_iemgui_gn_f 0} - if {[eval concat $$var_iemgui_gn_f] == 0} {$id.gnfs.fb configure -text "courier" -font {courier 10 bold}} - if {[eval concat $$var_iemgui_gn_f] == 1} {$id.gnfs.fb configure -text "helvetica" -font {helvetica 10 bold}} - if {[eval concat $$var_iemgui_gn_f] == 2} {$id.gnfs.fb configure -text "times" -font {times 10 bold}} + set $var_iemgui_gn_f $gn_f + + switch -- $gn_f { + 0 { set current_font $fontname} + 1 { set current_font "Helvetica" } + 2 { set current_font "Times" } + } + set current_font_spec "{$current_font} 12 $fontweight" + + $id.label.fontpopup_label configure -text $current_font \ + -font $current_font_spec + $id.label.name_entry configure -font $current_font_spec + $id.colors.sections.fr_bk configure -font $current_font_spec + $id.colors.sections.lb_bk configure -font $current_font_spec } proc iemgui_lb {id} { @@ -2399,6 +2465,9 @@ proc pdtk_iemgui_dialog {id mainheader \ set vid [string trimleft $id .] + global pd_nt + global fontname fontweight + set var_iemgui_wdt [concat iemgui_wdt_$vid] global $var_iemgui_wdt set var_iemgui_min_wdt [concat iemgui_min_wdt_$vid] @@ -2486,7 +2555,8 @@ proc pdtk_iemgui_dialog {id mainheader \ set $var_iemgui_l2_f1_b0 0 toplevel $id - wm title $id [format "%s-PROPERTIES" $mainheader] + wm title $id [format "%s Properties" $mainheader] + wm resizable $id 0 0 wm protocol $id WM_DELETE_WINDOW [concat iemgui_cancel $id] frame $id.dim @@ -2519,7 +2589,7 @@ proc pdtk_iemgui_dialog {id mainheader \ $id.rng.max_lab $id.rng.max_ent -side left} } if { [eval concat $$var_iemgui_lin0_log1] >= 0 || [eval concat $$var_iemgui_loadbang] >= 0 || [eval concat $$var_iemgui_num] > 0 || [eval concat $$var_iemgui_steady] >= 0 } { - label $id.space1 -text "---------------------------------" + label $id.space1 -text "" pack $id.space1 -side top } frame $id.para @@ -2548,157 +2618,189 @@ proc pdtk_iemgui_dialog {id mainheader \ pack $id.para.dummy3 $id.para.num_lab $id.para.num_ent -side left -expand 1} if {[eval concat $$var_iemgui_steady] >= 0} { pack $id.para.dummy3 $id.para.stdy_jmp -side left -expand 1} - if { $snd != "nosndno" || $rcv != "norcvno" } { - label $id.space2 -text "---------------------------------" - pack $id.space2 -side top } + + frame $id.spacer0 -height 4 + pack $id.spacer0 -side top - frame $id.snd - pack $id.snd -side top - label $id.snd.dummy1 -text "" -width 2 - label $id.snd.lab -text "send-symbol:" -width 12 - entry $id.snd.ent -textvariable $var_iemgui_snd -width 20 + labelframe $id.s_r -borderwidth 1 -pady 4 -text "messages" \ + -font highlight_font + pack $id.s_r -side top -fill x -ipadx 5 + frame $id.s_r.send + pack $id.s_r.send -side top + label $id.s_r.send.lab -text " send-symbol:" -width 12 -justify right + entry $id.s_r.send.ent -textvariable $var_iemgui_snd -width 22 if { $snd != "nosndno" } { - pack $id.snd.dummy1 $id.snd.lab $id.snd.ent -side left} + pack $id.s_r.send.lab $id.s_r.send.ent -side left} - frame $id.rcv - pack $id.rcv -side top - label $id.rcv.lab -text "receive-symbol:" -width 15 - entry $id.rcv.ent -textvariable $var_iemgui_rcv -width 20 + frame $id.s_r.receive + pack $id.s_r.receive -side top + label $id.s_r.receive.lab -text "receive-symbol:" -width 12 -justify right + entry $id.s_r.receive.ent -textvariable $var_iemgui_rcv -width 22 if { $rcv != "norcvno" } { - pack $id.rcv.lab $id.rcv.ent -side left} + pack $id.s_r.receive.lab $id.s_r.receive.ent -side left} - frame $id.gnam - pack $id.gnam -side top - label $id.gnam.head -text "--------------label:---------------" - label $id.gnam.dummy1 -text "" -width 1 - label $id.gnam.lab -text "name:" -width 6 - entry $id.gnam.ent -textvariable $var_iemgui_gui_nam -width 29 - label $id.gnam.dummy2 -text "" -width 1 - pack $id.gnam.head -side top - pack $id.gnam.dummy1 $id.gnam.lab $id.gnam.ent $id.gnam.dummy2 -side left +# get the current font name from the int given from C-space (gn_f) + set current_font $fontname + if {[eval concat $$var_iemgui_gn_f] == 1} \ + { set current_font "Helvetica" } + if {[eval concat $$var_iemgui_gn_f] == 2} \ + { set current_font "Times" } + + frame $id.spacer1 -height 7 + pack $id.spacer1 -side top - frame $id.gnxy - pack $id.gnxy -side top - label $id.gnxy.x_lab -text "x_off:" -width 6 - entry $id.gnxy.x_ent -textvariable $var_iemgui_gn_dx -width 5 - label $id.gnxy.dummy1 -text " " -width 10 - label $id.gnxy.y_lab -text "y_off:" -width 6 - entry $id.gnxy.y_ent -textvariable $var_iemgui_gn_dy -width 5 - pack $id.gnxy.x_lab $id.gnxy.x_ent $id.gnxy.dummy1 \ - $id.gnxy.y_lab $id.gnxy.y_ent -side left + labelframe $id.label -borderwidth 1 -text "label" -pady 4 \ + -font highlight_font + pack $id.label -side top -fill x + entry $id.label.name_entry -textvariable $var_iemgui_gui_nam -width 30 \ + -font [list $current_font 12 $fontweight] + pack $id.label.name_entry -side top -expand yes -fill both -padx 5 - frame $id.gnfs - pack $id.gnfs -side top - label $id.gnfs.f_lab -text "font:" -width 6 - if {[eval concat $$var_iemgui_gn_f] == 0} { - button $id.gnfs.fb -text "courier" -font {courier 10 bold} -width 7 -command "iemgui_toggle_font $id" } - if {[eval concat $$var_iemgui_gn_f] == 1} { - button $id.gnfs.fb -text "helvetica" -font {helvetica 10 bold} -width 7 -command "iemgui_toggle_font $id" } - if {[eval concat $$var_iemgui_gn_f] == 2} { - button $id.gnfs.fb -text "times" -font {times 10 bold} -width 7 -command "iemgui_toggle_font $id" } - label $id.gnfs.dummy1 -text "" -width 1 - label $id.gnfs.fs_lab -text "fontsize:" -width 8 - entry $id.gnfs.fs_ent -textvariable $var_iemgui_gn_fs -width 5 - pack $id.gnfs.f_lab $id.gnfs.fb $id.gnfs.dummy1 \ - $id.gnfs.fs_lab $id.gnfs.fs_ent -side left + frame $id.label.xy -padx 27 -pady 1 + pack $id.label.xy -side top + label $id.label.xy.x_lab -text "x offset" -width 6 + entry $id.label.xy.x_entry -textvariable $var_iemgui_gn_dx -width 5 + label $id.label.xy.dummy1 -text " " -width 2 + label $id.label.xy.y_lab -text "y offset" -width 6 + entry $id.label.xy.y_entry -textvariable $var_iemgui_gn_dy -width 5 + pack $id.label.xy.x_lab $id.label.xy.x_entry $id.label.xy.dummy1 \ + $id.label.xy.y_lab $id.label.xy.y_entry -side left -anchor e - label $id.col_head -text "--------------colors:--------------" - pack $id.col_head -side top + label $id.label.fontpopup_label -text $current_font \ + -relief groove -font [list $current_font 12 $fontweight] -padx 5 + pack $id.label.fontpopup_label -side left -anchor w -expand yes -fill x + label $id.label.fontsize_label -text "size" -width 4 + entry $id.label.fontsize_entry -textvariable $var_iemgui_gn_fs -width 5 + pack $id.label.fontsize_entry $id.label.fontsize_label \ + -side right -anchor e -padx 5 -pady 5 + menu $id.popup + $id.popup add command \ + -label $fontname \ + -font [format {{%s} 12 %s} $fontname $fontweight] \ + -command "iemgui_toggle_font $id 0" + $id.popup add command \ + -label "Helvetica" \ + -font [format {Helvetica 12 %s} $fontweight] \ + -command "iemgui_toggle_font $id 1" + $id.popup add command \ + -label "Times" \ + -font [format {Times 12 %s} $fontweight] \ + -command "iemgui_toggle_font $id 2" + bind $id.label.fontpopup_label