1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159
|
#N canvas 466 101 769 707 12;
#N canvas 739 204 401 622 output 0;
#X obj 150 341 nbx 5 17 -100 0 0 0 \$0-vol \$0-vol Volume 0 -8 0 12 #fcfcfc #000000 #000000 0 256;
#X obj 221 339 tgl 19 0 \$0-dsp \$0-dsp DSP 23 11 0 12 #fcfcfc #000000 #000000 0 1;
#X obj 22 -4 inlet~;
#X obj 109 -4 inlet~;
#X obj 21 556 dac~;
#X obj 22 522 *~;
#X obj 109 519 *~;
#X obj 126 486 line~;
#X msg 126 460 \$1 50;
#X obj 167 57 loadbang;
#X msg 215 408 \; pd dsp \$1;
#X obj 30 76 env~;
#X obj 116 75 env~;
#X obj 30 101 - 100;
#X obj 117 104 - 100;
#X obj 215 381 r \$0-dsp;
#X msg 167 82 0;
#X obj 167 108 s \$0-fader;
#X obj 126 380 r \$0-fader;
#X obj 126 408 pow 2;
#X obj 186 462 rmstodb;
#X obj 186 487 - 100;
#X obj 186 512 s \$0-vol;
#X obj 126 433 t f f;
#X obj 21 22 clip~ -1 1;
#X obj 108 22 clip~ -1 1;
#X obj 21 47 hip~ 5;
#X obj 108 47 hip~ 5;
#X obj 153 155 vsl 19 160 0 1 0 0 \$0-fader \$0-fader empty 0 -9 0 12 #fcfcfc #000000 #000000 0 1;
#X obj 190 155 vu 19 160 empty empty -1 -10 0 12 #404040 #000000 1 0;
#X obj 254 155 vu 19 160 empty empty -1 -10 0 12 #404040 #000000 1 0;
#X connect 2 0 24 0;
#X connect 3 0 25 0;
#X connect 5 0 4 0;
#X connect 6 0 4 1;
#X connect 7 0 5 1;
#X connect 7 0 6 1;
#X connect 8 0 7 0;
#X connect 9 0 16 0;
#X connect 11 0 13 0;
#X connect 12 0 14 0;
#X connect 13 0 29 0;
#X connect 14 0 30 0;
#X connect 15 0 10 0;
#X connect 16 0 17 0;
#X connect 18 0 19 0;
#X connect 19 0 23 0;
#X connect 20 0 21 0;
#X connect 21 0 22 0;
#X connect 23 0 8 0;
#X connect 23 1 20 0;
#X connect 24 0 26 0;
#X connect 25 0 27 0;
#X connect 26 0 11 0;
#X connect 26 0 5 0;
#X connect 27 0 12 0;
#X connect 27 0 6 0;
#X coords 0 -1 1 1 180 230 2 140 140;
#X restore 20 458 pd output;
#N canvas 349 289 320 331 open 0;
#X obj 37 301 outlet~;
#X obj 99 301 outlet~;
#X obj 108 124 bng 19 250 50 0 empty empty file 23 11 0 12 #fcfcfc #000000 #000000;
#X msg 25 121 symbol;
#X obj 25 97 loadbang;
#X obj 28 165 openpanel;
#X obj 108 147 bng 19 250 50 0 empty empty play 23 11 0 12 #00fc04 #000000 #000000;
#X obj 108 170 bng 19 250 50 0 empty empty stop 23 11 0 12 #fc0400 #000000 #000000;
#X obj 36 204 symbol;
#X obj 36 262 readsf~ 2;
#X obj 108 194 tgl 19 0 \$0-loop \$0-loop loop 23 11 0 12 #fcfcfc #000000 #000000 0 1;
#X msg 121 232 0;
#X obj 113 263 spigot;
#X msg 36 232 open \$1 \, 1;
#X text 107 104 Player;
#X obj 152 235 r \$0-loop;
#X connect 2 0 5 0;
#X connect 4 0 3 0;
#X connect 5 0 8 1;
#X connect 6 0 8 0;
#X connect 7 0 11 0;
#X connect 8 0 13 0;
#X connect 9 0 0 0;
#X connect 9 1 1 0;
#X connect 9 2 12 0;
#X connect 11 0 9 0;
#X connect 12 0 8 0;
#X connect 13 0 9 0;
#X connect 15 0 12 1;
#X coords 0 -1 1 1 76 120 2 100 100;
#X restore 20 241 pd open;
#X msg 248 336 close;
#X msg 264 419 vis \$1;
#X obj 264 393 tgl 19 0 empty empty empty 17 7 0 10 #fcfcfc #000000 #000000 0 1;
#X msg 270 475 bypass \$1;
#X obj 227 560 s \$0-msg;
#X obj 31 372 r \$0-msg;
#X text 299 337 close the plugin;
#X text 314 419 show/hide editor;
#X text 224 591 parameters;
#X text 333 590 FX programs/banks;
#N canvas 760 189 733 683 parameter 0;
#X obj 124 100 nbx 5 17 -1e+37 1e+37 0 0 empty empty empty 0 -8 0 12 #fcfcfc #000000 #000000 0 256;
#X obj 29 28 nbx 5 17 -1e+37 1e+37 0 0 empty empty empty 0 -8 0 12 #fcfcfc #000000 #000000 0 256;
#X msg 29 164 param_set \$1 \$2;
#X obj 49 329 nbx 5 17 -1e+37 1e+37 0 0 empty empty empty 0 -8 0 12 #fcfcfc #000000 #000000 0 256;
#X msg 60 477 param_count;
#X msg 64 532 param_list;
#X msg 40 250 param_get \$1;
#X obj 40 216 nbx 5 17 -1e+37 1e+37 0 0 empty empty empty 0 -8 0 12 #fcfcfc #000000 #000000 0 256;
#X msg 66 584 param_dump;
#X obj 29 638 s \$0-msg;
#X text 192 99 index;
#X text 154 163 set parameter;
#X text 116 329 index;
#X text 151 477 get number of parameters;
#X symbolatom 37 60 10 0 0 0 - - - 0;
#X text 98 28 float value (0.0 - 1.0);
#X text 115 55 string value (not supported by all plugins), f 28;
#X text 329 109 2) a string representation which is mainly used for display \, but many plugins also allow you to set the parameter in this way. it corresponds to the symbol box in the generic editor., f 49;
#X text 328 57 1) a 'normalized' float value which is always in the range 0 to 1 and corresponds to the slider position in the generic editor., f 49;
#X obj 29 128 list prepend 0;
#X msg 49 357 param_info \$1;
#X text 154 357 get parameter info;
#X text 147 532 get all parameter info;
#X text 151 584 get all parameter state;
#X symbolatom 139 128 10 0 0 0 - - - 0;
#X symbolatom 112 216 10 0 0 0 - - - 0;
#X text 38 197 index;
#X text 111 197 name;
#X text 138 249 get parameter;
#X text 217 127 name;
#X text 48 279 responds with;
#X text 55 384 responds with;
#X text 63 501 responds with;
#X text 69 553 responds with a series of;
#X msg 253 552 param_info;
#X text 336 553 messages;
#X text 71 606 responds with a series of;
#X text 343 605 messages;
#X msg 255 605 param_state;
#X text 423 540 is sent through the rightmost outlet.;
#X msg 151 282 param_state <index> <value> >display>, f 20;
#X msg 160 500 param_count <count>;
#X text 423 478 When you edit parameters in the GUI or automate linked parameters \,, f 34;
#X msg 426 515 param_automated <index> <value>;
#X text 331 172 Each parameter can be accessed by either its index or name. (Whitespace may need to be escaped with backslashes \, e.g. in message boxes.), f 50;
#X text 328 27 VST parameters can take two forms:;
#X obj 330 231 cnv 15 45 20 empty empty empty 20 12 0 14 #f8fc00 #404040 0;
#X text 336 232 NOTE: The [param_set( message is scheduled at the current logical time. This allows for *sample accurate* automation of VST3 plugins - but the plugin has to actually support it!, f 45;
#X msg 156 383 param_info <index> <name> <label> <automatable>;
#X text 56 407 "label" is the unit of measurement \, e.g. dB \, ms \, Hz.;
#X text 60 442 More info might be addeed in the future!;
#X text 56 424 "automatable" (0|1) tells if the parameter is suitable for automation., f 71;
#X connect 0 0 19 1;
#X connect 1 0 19 0;
#X connect 2 0 9 0;
#X connect 3 0 20 0;
#X connect 4 0 9 0;
#X connect 5 0 9 0;
#X connect 6 0 9 0;
#X connect 7 0 6 0;
#X connect 8 0 9 0;
#X connect 14 0 19 0;
#X connect 19 0 2 0;
#X connect 20 0 9 0;
#X connect 24 0 19 1;
#X connect 25 0 6 0;
#X restore 225 615 pd parameter;
#N canvas 641 104 685 659 midi 0;
#X obj 33 530 s \$0-msg;
#X msg 33 34 midi_raw <list>;
#X msg 55 131 midi_note 1 60 127;
#X msg 68 211 midi_noteoff 1 60;
#X msg 76 273 midi_cc 1 64 \$1;
#X msg 76 246 127;
#X msg 112 246 0;
#X msg 44 69 midi_sysex <list>;
#X msg 82 336 midi_bend 1 \$1;
#X obj 85 308 hsl 162 19 -1 1 0 0 empty empty empty -2 -8 0 10 #fcfcfc #000000 #000000 0 1;
#X obj 88 364 nbx 5 17 -1e+37 1e+37 0 0 empty empty empty 0 -8 0 12 #fcfcfc #000000 #000000 0 256;
#X text 156 35 send raw MIDI message (list of bytes);
#X text 179 69 send MIDI system exclusive message (list of bytes);
#X text 53 103 convenience methods:;
#X text 193 131 note on: channel (1-16) \, pitch \, velocity;
#X text 202 211 note off: channel \, pitch \, [velocity];
#X text 198 273 CC: channel \, number \, value;
#X text 139 247 (sustain pedal on/off);
#X text 191 337 pitchbend: channel \, bend (-1 to 1);
#X text 223 388 program change: channel \, program;
#X text 268 425 polyphonic aftertouch: channel \, pitch \, pressure;
#X text 227 467 channel aftertouch: channel \, pressure;
#X msg 88 388 midi_program 1 \$1;
#X msg 93 427 midi_polytouch 1 60 127;
#X msg 101 466 midi_touch 1 127;
#X obj 42 569 cnv 20 45 20 empty empty empty 20 12 0 14 #f8fc00 #404040 0;
#X msg 122 530 midi <bytes>;
#X msg 264 530 sysex <bytes>;
#X text 219 531 resp.;
#X text 123 506 MIDI and SysEx messages sent *from* the plugin are output as;
#X msg 62 168 midi_note 1 60.5 127;
#X text 218 167 the MIDI pitch can be a float. This is not part of the MIDI standard and only supported by certain VST instruments.;
#X text 48 571 NOTE: MIDI messages are scheduled at the current logical time. This allows for *sample accurate* event proccessing - if the plugin actually supports it!, f 63;
#X connect 1 0 0 0;
#X connect 2 0 0 0;
#X connect 3 0 0 0;
#X connect 4 0 0 0;
#X connect 5 0 4 0;
#X connect 6 0 4 0;
#X connect 7 0 0 0;
#X connect 8 0 0 0;
#X connect 9 0 8 0;
#X connect 10 0 22 0;
#X connect 22 0 0 0;
#X connect 23 0 0 0;
#X connect 24 0 0 0;
#X connect 30 0 0 0;
#X restore 225 668 pd midi;
#X f 13;
#X text 225 646 MIDI messages;
#N canvas 814 225 568 426 transport 0;
#X obj 26 373 s \$0-msg;
#X msg 26 96 tempo \$1;
#X obj 26 70 nbx 5 17 -1e+37 1e+37 0 0 empty empty empty 0 -8 0 12 #fcfcfc #000000 #000000 0 256;
#X msg 38 161 time_signature \$1 \$2;
#X msg 38 131 4 4;
#X msg 112 132 3 4;
#X text 71 131 4/4;
#X text 147 132 3/4;
#X msg 47 222 play \$1;
#X obj 47 197 tgl 19 0 empty empty empty 17 7 0 10 #fcfcfc #000000 #000000 0 1;
#X obj 55 255 nbx 5 17 -1e+37 1e+37 0 0 empty empty empty 0 -8 0 12 #fcfcfc #000000 #000000 0 256;
#X msg 63 316 transport_get;
#X msg 55 279 transport_set \$1;
#X text 196 161 set time signature (default is 4/4);
#X msg 266 341 transport <pos>;
#X text 110 222 start/stop transport. NOTE: transport is *off* by default., f 59;
#X text 182 278 set transport position (1.0 = one quarter note);
#X text 100 71 Set the tempo in BPM. This is also relevant for certain plugin parameters \, e.g. a delay time measured in quarter notes., f 51;
#X text 166 315 get current transport position.;
#X text 165 341 Responds with;
#X text 23 21 These methods provide timing information to the VST plugin \, so you can use arpeggiators \, step sequencers \, etc., f 60;
#X connect 1 0 0 0;
#X connect 2 0 1 0;
#X connect 3 0 0 0;
#X connect 4 0 3 0;
#X connect 5 0 3 0;
#X connect 8 0 0 0;
#X connect 9 0 8 0;
#X connect 10 0 12 0;
#X connect 11 0 0 0;
#X connect 12 0 0 0;
#X restore 341 668 pd transport;
#X f 16;
#X text 339 645 transport/timing;
#X text 342 531 reset the plugin (e.g. clear delay lines);
#X obj 21 402 vstplugin~;
#X obj 19 20 cnv 15 400 25 empty empty empty 20 12 0 14 #e0e0e0 #404040 0;
#N canvas 254 63 1004 684 creation 0;
#X text 30 342 -sp: prefer single precision (default on single precision Pd), f 62;
#X text 30 370 -dp: prefer double precision (default on double precision Pd), f 62;
#X obj 23 436 cnv 2 450 2 empty empty empty 20 12 0 14 #e0e0e0 #404040 0;
#X text 19 58 vstplugin~ takes the following optional creation arguments (in the given order):, f 59;
#X text 20 450 file:;
#X text 20 490 nin \, nout:;
#X obj 501 479 cnv 15 120 25 empty empty empty 20 12 0 14 #e0e0e0 #404040 0;
#X text 527 148 [vstplugin~];
#X text 67 450 open a plugin on creation (see the 'open' message), f 51;
#X obj 21 479 cnv 2 450 2 empty empty empty 20 12 0 14 #e0e0e0 #404040 0;
#X text 32 170 -k: keep current plugin state (similar to [text define -k]);
#X text 31 399 -s: search in the standard VST directories (see [pd search]);
#X text 32 147 -e \, -t \, -p \, -b: see [open( method.;
#X text 31 314 -n: don't use any editor GUI (reduce memory usage), f 62;
#X text 55 243 buscount \, channel numbers...;
#X text 55 287 buscount \, channel numbers...;
#X text 20 127 flags:;
#X text 31 226 -i: input bus arrangement (advanced);
#X text 31 271 -o: output bus arrangement (advanced);
#X text 506 512 [vstplugin~ -e GChorus];
#X text 505 586 [vstplugin~ GChorus.vst3 1 1];
#X obj 500 19 cnv 15 190 25 empty empty empty 20 12 0 14 #e0e0e0 #404040 0;
#X text 504 90 VST2 plugins only support a single input and output bus \, but VST3 plugins can have any number of busses., f 57;
#X text 506 172 You can change the number of channels with creation arguments:, f 62;
#X text 505 23 About inputs and outputs;
#X text 526 197 [vstplugin~ 1 2];
#X text 508 483 More examples:;
#X obj 19 19 cnv 15 160 25 empty empty empty 20 12 0 14 #e0e0e0 #404040 0;
#X text 26 23 Creation arguments:;
#X text 56 186 NOTE: for large \, complex plugins this can lead to a significant increase in patch file size., f 47;
#X text 41 99 [flags...] \, [file] \, [nin \, nout];
#X text 504 55 Generally \, VST plugins use input and output busses where each bus itself can have several channels.;
#X text 664 196 = input: 1ch | output: 2ch;
#X text 528 309 [vstplugin~ 2 6];
#X text 507 346 With the -i and -o flags \, you have more control over the bus arrangement. You can pick a subset of channels for each bus or skip busses (with 0).;
#X text 507 398 For example \, with the same plugin as above:;
#X text 537 442 = input1: 2ch \, output1: 2ch \, output2: -- \, output3: 1ch, f 56;
#X obj 503 224 cnv 2 450 2 empty empty empty 20 12 0 14 #e0e0e0 #404040 0;
#X obj 503 334 cnv 2 450 2 empty empty empty 20 12 0 14 #e0e0e0 #404040 0;
#X text 506 239 In the case of several input or output busses \, the inlets resp. outlets are automatically distributed over several busses., f 65;
#X text 507 271 For example \, if a plugin has one stereo input bus and 3 stereo output busses \, you can simply do the following:, f 63;
#X text 532 420 [vstplugin~ -i 1 2 -o 3 2 0 1];
#X text 504 129 The default is one input and output bus with 2 channels each:, f 61;
#X text 101 491 the number of input and output channels (default: 2), f 53;
#X text 525 531 open the VST2 plugin "GChorus" with the VST editor GUI and 2 input and 2 output channels. "GChorus" might be a plugin name or a file in your search paths (see 'search'), f 59;
#X obj 19 529 cnv 15 165 25 empty empty empty 20 12 0 14 #e0e0e0 #404040 0;
#X text 528 608 open the VST3 version of "GChorus" with the Pd editor and 1 input and 1 output channel., f 57;
#X text 26 533 Multichannel support:;
#X obj 192 532 bng 19 250 50 0 \$0-show-mc \$0-show-mc empty 0 -10 0 12 #fcfcfc #000000 #000000;
#X obj 19 563 cnv 15 45 20 empty empty empty 20 12 0 14 #f8fc00 #404040 0;
#X text 24 564 NOTE: Multichannel support requires Pd 0.54+;
#N canvas 460 254 450 414 guts 0;
#X obj 47 48 r \$0-show-mc;
#X obj 47 104 vstplugin~ 0 0;
#X obj 135 247 b;
#X obj 135 303 print vstplugin~;
#X msg 135 275 multichannel support requires Pd 0.54+;
#X msg 47 334 open vstplugin~-mc.pd \$1 1;
#X obj 47 362 s pd;
#X obj 47 132 route multichannel;
#X msg 47 76 multichannel;
#X msg 47 278 dir;
#X obj 47 306 pdcontrol;
#X obj 47 160 sel 1 -1, f 13;
#X obj 91 216 print vstplugin~;
#X msg 91 188 compiled without multichannel support!;
#X connect 0 0 8 0;
#X connect 1 0 7 0;
#X connect 2 0 4 0;
#X connect 4 0 3 0;
#X connect 5 0 6 0;
#X connect 7 0 11 0;
#X connect 8 0 1 0;
#X connect 9 0 10 0;
#X connect 10 0 5 0;
#X connect 11 0 9 0;
#X connect 11 1 13 0;
#X connect 11 2 2 0;
#X connect 13 0 12 0;
#X restore 26 642 pd guts;
#X text 217 533 <- click me;
#X restore 23 84 pd creation arguments;
#N canvas 361 4 1274 914 preset 0;
#X obj 837 508 s \$0-msg;
#X obj 837 111 nbx 5 17 -1e+37 1e+37 0 0 empty empty empty 0 -8 0 12 #fcfcfc #000000 #000000 0 256;
#X text 951 137 set program;
#X msg 848 172 program_get;
#X text 938 171 get the current program index;
#X symbolatom 859 228 10 0 0 2 - - - 0;
#X text 1015 313 get the name of a program;
#X obj 870 288 nbx 5 17 -1e+37 1e+37 0 0 empty empty empty 0 -8 0 12 #fcfcfc #000000 #000000 0 256;
#X msg 891 402 program_count;
#X text 995 401 get number of programs;
#X msg 900 459 program_list;
#X obj 501 150 bng 19 250 50 0 empty empty empty 17 7 0 10 #fcfcfc #000000 #000000;
#X obj 501 176 openpanel;
#X obj 514 307 bng 19 250 50 0 empty empty empty 17 7 0 10 #fcfcfc #000000 #000000;
#X obj 514 653 bng 19 250 50 0 empty empty empty 17 7 0 10 #fcfcfc #000000 #000000;
#X obj 502 799 s \$0-msg;
#X text 939 227 name;
#X text 903 110 index;
#X text 935 288 index;
#X text 1005 342 get name of current program;
#X obj 501 448 s \$0-msg;
#X text 980 676 get program data as list of bytes;
#X text 1016 646 set program data as list of bytes;
#X obj 841 726 s \$0-msg;
#X obj 840 865 s \$0-msg;
#X msg 859 255 program_name_set \$1;
#X msg 870 313 program_name_get \$1;
#X msg 880 342 program_name_get;
#X msg 841 646 program_data_set <list>;
#X msg 854 677 program_data_get;
#X msg 840 787 bank_data_set <list>;
#X msg 848 817 bank_data_get;
#X msg 837 137 program_set \$1;
#X obj 822 18 cnv 15 200 25 empty empty empty 20 12 0 14 #e0e0e0 #404040 0;
#X obj 486 19 cnv 15 200 25 empty empty empty 20 12 0 14 #e0e0e0 #404040 0;
#X text 525 151 read program file (.fxp/.vstpreset);
#X text 539 307 write program file (.fxp/.vstpreset);
#X text 539 653 write bank file (.fxb) - VST2 only;
#X text 526 492 read bank file (.fxb) - VST2 only;
#X obj 824 542 cnv 15 200 25 empty empty empty 20 12 0 14 #e0e0e0 #404040 0;
#X text 495 23 read/write VST preset files;
#X text 834 546 raw VST plugin data;
#X msg 32 343 preset_count;
#X obj 32 844 s \$0-msg;
#X obj 18 16 cnv 15 200 25 empty empty empty 20 12 0 14 #e0e0e0 #404040 0;
#X text 26 21 VST preset management;
#X msg 41 398 preset_list;
#X text 128 343 get number of presets;
#X msg 50 452 preset_info \$1;
#X obj 50 427 nbx 5 17 -1e+37 1e+37 0 0 empty empty empty 0 -8 0 12 #fcfcfc #000000 #000000 0 256;
#X text 119 426 index;
#X text 273 585 load a preset;
#X text 831 22 built-in VST programs;
#X text 130 399 list all presets (see preset_info);
#X text 241 731 delete a preset;
#X text 304 788 rename a preset;
#X text 49 368 responds with;
#X msg 150 368 preset_count <count>;
#X text 61 478 responds with;
#X msg 162 477 preset_info <index> <name> <path> <type>;
#X text 159 452 get preset info;
#X text 872 195 responds with;
#X msg 972 195 program <index>;
#X text 907 366 responds with;
#X msg 1007 366 program_name <index> <name>;
#X text 910 425 responds with;
#X msg 1010 425 program_count <count>;
#X text 995 460 list all programs;
#X text 898 483 responds with a series of;
#X text 877 702 responds with;
#X msg 979 702 program_data <bytes>;
#X text 881 841 responds with;
#X msg 981 841 bank_data <bytes>;
#X msg 100 868 preset_change <key>;
#X symbolatom 578 176 24 0 0 0 - - - 0;
#X msg 172 610 preset_load <result>;
#X text 284 640 save a preset., f 15;
#X msg 178 698 preset_save <result>;
#X msg 501 235 program_read \$1 \$2;
#X obj 501 206 pack s f;
#X obj 502 522 openpanel;
#X symbolatom 579 522 24 0 0 0 - - - 0;
#X obj 502 552 pack s f;
#X msg 502 581 bank_read \$1 \$2;
#X symbolatom 591 334 24 0 0 0 - - - 0;
#X obj 514 364 pack s f;
#X msg 514 394 program_write \$1 \$2;
#X symbolatom 591 681 24 0 0 0 - - - 0;
#X obj 514 711 pack s f;
#X msg 514 740 bank_write \$1 \$2;
#X msg 182 756 preset_delete <result>;
#X msg 176 814 preset_rename <result>;
#X msg 611 262 program_read <result>;
#X msg 619 420 program_write <result>;
#X msg 608 607 bank_read <result>;
#X msg 616 765 bank_write <result>;
#X text 324 611 (1: success \, 0: fail);
#X text 510 262 responds with;
#X text 519 420 responds with;
#X text 508 607 responds with;
#X text 517 765 responds with;
#X symbolatom 50 187 16 0 0 2 name - - 0;
#X obj 105 213 tgl 19 0 empty empty async 21 10 0 12 #fcfcfc #000000 #000000 0 1;
#X msg 50 241 preset_save \$1 \$2;
#X symbolatom 202 188 16 0 0 2 name - - 0;
#X obj 50 270 s \$0-msg;
#X msg 202 241 preset_load \$1 \$2;
#X obj 202 270 s \$0-msg;
#X msg 356 191 preset_list;
#X obj 356 218 s \$0-msg;
#X obj 356 154 bng 19 250 50 0 empty empty empty 17 7 0 10 #fcfcfc #000000 #000000;
#X msg 62 584 preset_load <preset> [async];
#X msg 71 641 preset_save <preset> [async];
#X msg 68 731 preset_delete <preset>;
#X msg 66 788 preset_rename <preset> <newname>;
#X text 78 664 if "preset" is a non-existing name \, a new preset is generated \, otherwise an existing preset is overwritten.;
#X obj 50 213 list 0;
#X msg 31 148 -1;
#X text 61 149 current;
#X obj 202 214 list 0;
#X msg 183 148 -1;
#X text 213 147 current;
#X obj 486 45 cnv 1 2 850 empty empty empty 20 12 0 14 #e0e0e0 #404040 0;
#X obj 822 41 cnv 1 2 850 empty empty empty 20 12 0 14 #e0e0e0 #404040 0;
#X obj 18 40 cnv 1 2 850 empty empty empty 20 12 0 14 #e0e0e0 #fcfcfc 0;
#X obj 502 493 bng 19 250 50 0 empty empty empty 17 7 0 10 #fcfcfc #000000 #000000;
#X msg 1081 483 program_name;
#X obj 258 214 tgl 19 0 empty empty async 21 10 0 12 #fcfcfc #000000 #000000 0 1;
#X text 30 123 1) save a preset;
#X text 181 124 2) load a preset;
#X text 335 126 3) show all presets;
#X text 28 49 You can easily load/save presets. They are kept in standardized locations on the filesystem., f 63;
#X obj 20 91 cnv 15 100 25 empty empty empty 20 12 0 14 #e0e0e0 #404040 0;
#X text 26 94 Quick guide:;
#X obj 20 303 cnv 15 120 25 empty empty empty 20 12 0 14 #e0e0e0 #404040 0;
#X text 29 307 Documentation:;
#X text 61 512 In the following methods \, "preset" might refer to a preset index or a preset name. -1 refers to the current preset (if available). Set "async" to 1 if you want to load/save presets asynchronously \, the default is 0 (synchronous)., f 58;
#X obj 99 844 cnv 15 45 20 empty empty empty 20 12 0 14 #f8fc00 #404040 0;
#X text 104 846 NOTE: Whenever the preset list of a plugin changes \,;
#X text 245 864 is sent to each corresponding vstplugin~ instance., f 30;
#X obj 571 206 tgl 19 0 empty empty async 21 10 0 12 #fcfcfc #000000 #000000 0 1;
#X obj 584 364 tgl 19 0 empty empty async 21 10 0 12 #fcfcfc #000000 #000000 0 1;
#X obj 572 552 tgl 19 0 empty empty async 21 10 0 12 #fcfcfc #000000 #000000 0 1;
#X obj 584 711 tgl 19 0 empty empty async 21 10 0 12 #fcfcfc #000000 #000000 0 1;
#X text 500 57 .fxp/.fxb (VST2) and .vstpreset (VST3) files are standard formats recognized by all conforming VST hosts. This means you can easily exchange your presets between Pd and other hosts (e.g. your favourite DAW)!, f 43;
#X text 836 53 Many plugins contain built-in programs. Some plugins even allow to save several programs in a single preset. Changing programs is always synchronous., f 55;
#X text 1005 255 set name of current program;
#X text 1178 483 messages.;
#X text 839 759 Bank data (VST2 only):;
#X text 995 788 set bank data as list of bytes.;
#X text 951 816 get bank data as list of bytes.;
#X text 836 576 You can also work with the raw plugin data \, e.g. to build your own preset management in Pd., f 47;
#N canvas 738 177 574 454 preset-management-example 0;
#X obj 31 87 hradio 19 1 0 16 empty empty empty 0 -8 0 10 #fcfcfc #000000 #000000 0;
#X obj 33 297 hradio 19 1 0 16 empty empty empty 0 -8 0 10 #fcfcfc #000000 #000000 0;
#X obj 31 217 r \$0-program-data;
#X obj 31 114 t b f;
#X obj 31 170 s \$0-msg;
#X obj 33 326 text get \$0-data;
#X obj 33 384 list trim;
#X obj 33 413 s \$0-msg;
#X obj 31 245 text set \$0-data;
#X obj 401 217 text define \$0-data;
#X obj 355 88 loadbang;
#X msg 401 192 clear;
#X obj 355 141 t b b, f 7;
#X obj 355 192 until;
#X msg 355 167 16;
#X obj 355 244 text set \$0-data 1e+07;
#X msg 355 217 list;
#X obj 355 114 bng 19 250 50 0 empty empty empty 17 7 0 10 #fcfcfc #000000 #000000;
#X text 376 114 initialize;
#X text 447 192 the data:;
#X msg 31 142 program_data_get;
#X obj 33 355 list prepend program_data_set;
#X text 32 61 Save program in slot:;
#X text 29 27 Plugin data can be stored in [text] or [array] to build your own preset banks in Pd., f 48;
#X text 31 198 Receive data (from message outlet);
#X text 31 275 Recall program from slot:;
#X text 158 141 Request data;
#X connect 0 0 3 0;
#X connect 1 0 5 0;
#X connect 2 0 8 0;
#X connect 3 0 20 0;
#X connect 3 1 8 1;
#X connect 5 0 21 0;
#X connect 6 0 7 0;
#X connect 10 0 17 0;
#X connect 11 0 9 0;
#X connect 12 0 14 0;
#X connect 12 1 11 0;
#X connect 13 0 16 0;
#X connect 14 0 13 0;
#X connect 16 0 15 0;
#X connect 17 0 12 0;
#X connect 20 0 4 0;
#X connect 21 0 6 0;
#X restore 899 613 pd preset-management-example;
#X text 836 612 Example:;
#N canvas 922 209 569 597 details 0;
#X text 44 479 0 - user (writeable);
#X text 44 496 1 - userFactory;
#X text 44 513 2 - sharedFactory;
#X text 44 531 3 - global;
#X text 53 85 VST2:;
#X text 54 150 VST3:;
#X text 55 321 VST2:;
#X text 52 383 VST3:;
#X obj 22 22 cnv 15 132 25 empty empty empty 20 12 0 14 #e0e0e0 #404040 0;
#X text 28 26 preset locations:;
#X text 488 84 0;
#X text 488 104 1;
#X text 488 126 2;
#X obj 471 51 cnv 15 50 25 empty empty empty 20 12 0 14 #e0e0e0 #404040 0;
#X text 479 56 type;
#X text 488 152 0;
#X text 488 173 1;
#X text 488 195 2;
#X text 488 244 0;
#X text 488 268 2;
#X obj 29 450 cnv 15 50 25 empty empty empty 20 12 0 14 #e0e0e0 #404040 0;
#X text 33 454 types:;
#X text 97 246 ~/Library/Audio/Presets/[VENDOR]/[PLUGIN];
#X text 96 268 /Library/Audio/Presets/[VENDOR]/[PLUGIN];
#X text 98 318 ~/.vst/presets/[VENDOR]/[PLUGIN];
#X text 97 337 /usr/local/shared/vst/presets/[VENDOR]/[PLUGIN];
#X text 97 357 /usr/shared/vst/presets/[VENDOR]/[PLUGIN];
#X text 95 382 ~/.vst3/presets/[VENDOR]/[PLUGIN];
#X text 486 314 0;
#X text 485 335 2;
#X text 485 356 3;
#X text 486 381 0;
#X text 485 403 2;
#X text 485 424 3;
#X obj 28 54 cnv 15 72 25 empty empty empty 20 12 0 14 #f8fc00 #404040 0;
#X text 33 58 Windows:;
#X obj 29 218 cnv 15 60 25 empty empty empty 20 12 0 14 #f8fc00 #404040 0;
#X obj 28 290 cnv 15 60 25 empty empty empty 20 12 0 14 #f8fc00 #404040 0;
#X text 34 222 macOS:;
#X text 33 294 Linux:;
#X text 94 402 /usr/local/shared/vst3/presets/[VENDOR]/[PLUGIN];
#X text 94 423 /usr/shared/vst3/presets/[VENDOR]/[PLUGIN];
#X text 97 85 %USERPROFILE%/Documents/VST2 Presets/[VENDOR]/[PLUGIN];
#X text 98 106 %APPDATA%/VST2 Presets/[VENDOR]/[PLUGIN];
#X text 97 127 %PROGRAMDATA%/VST2 Presets/[VENDOR]/[PLUGIN];
#X text 98 151 %USERPROFILE%/Documents/VST3 Presets/[VENDOR]/[PLUGIN];
#X text 99 172 %APPDATA%/VST3 Presets/[VENDOR]/[PLUGIN];
#X text 98 196 %PROGRAMDATA%/VST3 Presets/[VENDOR]/[PLUGIN];
#X restore 400 74 pd details;
#X text 301 73 More details:;
#X text 78 698 Responds with;
#X text 80 757 Responds with;
#X text 76 815 Responds with;
#X text 70 610 Responds with;
#X obj 514 334 savepanel;
#X obj 514 681 savepanel;
#X connect 1 0 32 0;
#X connect 3 0 0 0;
#X connect 5 0 25 0;
#X connect 7 0 26 0;
#X connect 8 0 0 0;
#X connect 10 0 0 0;
#X connect 11 0 12 0;
#X connect 12 0 79 0;
#X connect 13 0 160 0;
#X connect 14 0 161 0;
#X connect 25 0 0 0;
#X connect 26 0 0 0;
#X connect 27 0 0 0;
#X connect 28 0 23 0;
#X connect 29 0 23 0;
#X connect 30 0 24 0;
#X connect 31 0 24 0;
#X connect 32 0 0 0;
#X connect 42 0 43 0;
#X connect 46 0 43 0;
#X connect 48 0 43 0;
#X connect 49 0 48 0;
#X connect 74 0 79 0;
#X connect 78 0 20 0;
#X connect 79 0 78 0;
#X connect 80 0 82 0;
#X connect 81 0 82 0;
#X connect 82 0 83 0;
#X connect 83 0 15 0;
#X connect 84 0 85 0;
#X connect 85 0 86 0;
#X connect 86 0 20 0;
#X connect 87 0 88 0;
#X connect 88 0 89 0;
#X connect 89 0 15 0;
#X connect 101 0 116 0;
#X connect 102 0 116 1;
#X connect 103 0 105 0;
#X connect 104 0 119 0;
#X connect 106 0 107 0;
#X connect 108 0 109 0;
#X connect 110 0 108 0;
#X connect 111 0 43 0;
#X connect 112 0 43 0;
#X connect 113 0 43 0;
#X connect 114 0 43 0;
#X connect 116 0 103 0;
#X connect 117 0 116 0;
#X connect 119 0 106 0;
#X connect 120 0 119 0;
#X connect 125 0 80 0;
#X connect 127 0 119 1;
#X connect 140 0 79 1;
#X connect 141 0 85 1;
#X connect 142 0 82 1;
#X connect 143 0 88 1;
#X connect 160 0 85 0;
#X connect 161 0 88 0;
#X restore 334 615 pd preset;
#X f 17;
#X msg 256 367 print;
#N canvas 518 40 1034 833 search 0;
#X obj 28 765 s \$0-msg;
#X text 525 264 ~/Library/Audio/Plug-Ins/VST /Library/Audio/Plug-Ins/VST, f 33;
#X text 526 94 %ProgramFiles%/VSTPlugins %ProgramFiles%/Steinberg/VSTPlugins %ProgramFiles%/Common Files/VST2 %ProgramFiles%/Common Files/Steinberg/VST2, f 43;
#X obj 461 28 cnv 15 200 25 empty empty empty 20 12 0 14 #e0e0e0 #404040 0;
#X obj 460 65 cnv 15 60 20 empty empty empty 20 12 0 14 #f8fc00 #404040 0;
#X obj 458 234 cnv 15 60 20 empty empty empty 20 12 0 14 #f8fc00 #404040 0;
#X obj 457 354 cnv 15 60 20 empty empty empty 20 12 0 14 #f8fc00 #404040 0;
#X text 464 68 Windows:;
#X text 462 237 macOS:;
#X text 461 357 Linux:;
#X msg 28 161 search;
#X msg 35 246 search <l>;
#X msg 41 303 search -a;
#X msg 53 441 search -n;
#X text 131 442 search but don't update the cache file;
#X msg 75 586 search_stop;
#X text 167 585 stop the current (asynchronous) search;
#X text 88 185 responds with a series of;
#X msg 273 185 plugin <key>;
#X text 370 185 messages;
#X text 88 210 and a final;
#X msg 176 210 search_done;
#X text 266 210 message;
#X text 119 245 Alternatively \, you can provide a list of user search paths. Relative paths are resolved to the current patch directory., f 41;
#X text 117 322 This prevents Pd from freezing until the search has finished and you can see the progress in the console., f 41;
#X text 118 303 search asynchronously.;
#X text 89 160 search in the standard VST directories;
#X text 475 187 NOTE: "%ProgramFiles%" refers to either "Program Files" (64-bit) or "Program Files (x86)" (32-bit), f 56;
#X obj 478 93 cnv 15 40 20 empty empty empty 20 12 0 14 #e0e0e0 #404040 0;
#X text 481 96 VST2:;
#X obj 477 157 cnv 15 40 20 empty empty empty 20 12 0 14 #e0e0e0 #404040 0;
#X text 480 160 VST3:;
#X text 528 160 %ProgramFiles%Common FilesVST3;
#X obj 477 265 cnv 15 40 20 empty empty empty 20 12 0 14 #e0e0e0 #404040 0;
#X text 480 268 VST2:;
#X obj 476 310 cnv 15 40 20 empty empty empty 20 12 0 14 #e0e0e0 #404040 0;
#X text 479 313 VST3:;
#X text 526 309 ~/Library/Audio/Plug-Ins/VST3 /Library/Audio/Plug-Ins/VST3, f 33;
#X obj 476 384 cnv 15 40 20 empty empty empty 20 12 0 14 #e0e0e0 #404040 0;
#X text 479 387 VST2:;
#X obj 475 429 cnv 15 40 20 empty empty empty 20 12 0 14 #e0e0e0 #404040 0;
#X text 478 432 VST3:;
#X text 529 382 /usr/lib/vst /usr/local/lib/vst, f 20;
#X text 527 427 /usr/lib/vst3 /usr/local/lib/vst3 ~/.vst3, f 20;
#X msg 46 384 search -t 10;
#X text 144 381 Set a timeout (in seconds) for each plugin \, after which it is regarded as stuck and ignored. Use with care!, f 38;
#X msg 59 482 search -x <path>, f 17;
#X msg 65 510 search -x <path1> -x <path2>;
#X text 190 481 exclude a subfolder or file;
#X text 467 621 For more information \, see the section 'Bridging/sandboxing' in the README., f 60;
#X text 26 98 Search results are stored in a cache file \, so you only have to search once in the beginning and everytime you install new plugins., f 56;
#X msg 90 728 plugin_list;
#X text 355 747 messages;
#X msg 256 747 plugin <key>;
#X text 182 726 output all cached plugins as a, f 31;
#X text 182 747 series of;
#X msg 77 623 cache_clear;
#X text 171 623 clear the plugin cache;
#X msg 82 652 cache_clear 1;
#X text 189 652 clear cache and delete cache file;
#X msg 71 548 search -c <path>;
#X msg 85 691 cache_read <dir>;
#X text 211 684 read cache file from a custom directory, f 31;
#X text 201 547 specify a custom cache directory;
#X text 469 32 Default VST search paths:;
#X text 466 563 Since v0.5 you can also run Windows plugins in Linux (via Wine)., f 65;
#X text 464 690 Every new plugin is probed in a seperate process. This allows to catch bad plugins early on \, without crashing Pd., f 66;
#X text 462 730 The first search in a directory might take from a couple of seconds to several minutes \, depending on the number and type of plugins (shell plugins \, like 'Waves' \, can contain hundreds of sub-plugins!), f 68;
#X text 467 584 Non-native plugins automatically run in a shared subprocess \, which naturally incurs some CPU and scheduling overhead., f 61;
#X text 464 782 Subsequent searches in the same directory \, however \, should be almost instantaneous because the plugin info is read from the cache file., f 70;
#X obj 22 62 cnv 15 45 20 empty empty empty 20 12 0 14 #f8fc00 #404040 0;
#X obj 457 661 cnv 15 200 25 empty empty empty 20 12 0 14 #e0e0e0 #404040 0;
#X text 465 665 Plugin probing:;
#X obj 457 481 cnv 15 200 25 empty empty empty 20 12 0 14 #e0e0e0 #404040 0;
#X text 465 485 Bit-bridging:;
#X text 466 512 Since v0.4 you can run plugins of different CPUs architectures ("bit-bridging") \, e.g. 32-bit plugins in 64-bit Windows or 64-bit Intel plugins on Apple M1., f 63;
#X text 26 27 After a plugin search \, you can simply refer to plugins by their name/key \, e.g. in the [open( message., f 55;
#X text 27 63 NOTE: if a plugin name contains whitespace \, you may need to escaped it with backslashes \, e.g. in message boxes., f 57;
#X connect 10 0 0 0;
#X connect 11 0 0 0;
#X connect 12 0 0 0;
#X connect 13 0 0 0;
#X connect 15 0 0 0;
#X connect 44 0 0 0;
#X connect 46 0 0 0;
#X connect 47 0 0 0;
#X connect 51 0 0 0;
#X connect 56 0 0 0;
#X connect 58 0 0 0;
#X connect 60 0 0 0;
#X connect 61 0 0 0;
#X restore 474 615 pd search;
#X f 14;
#X text 472 589 search + info;
#N canvas 277 61 1195 627 open 0;
#X obj 533 431 bng 19 250 50 0 empty empty empty 17 7 0 10 #fcfcfc #000000 #000000;
#X obj 533 458 openpanel;
#X obj 528 28 bng 19 250 50 0 empty empty empty 17 7 0 10 #fcfcfc #000000 #000000;
#X obj 528 53 openpanel;
#X msg 528 108 open -e \$1;
#X obj 617 63 cnv 20 330 60 empty empty empty 20 12 0 14 #f8fc00 #404040 0;
#X symbolatom 528 268 16 0 0 0 - - - 0;
#X obj 527 219 s \$0-msg;
#X msg 527 192 search -a;
#X text 182 511 on success and;
#X text 32 510 outputs;
#X msg 289 511 open 0;
#X msg 89 510 open 1 <key>;
#X obj 528 320 pack s f;
#X obj 581 295 tgl 19 0 empty empty async 24 10 0 12 #fcfcfc #000000 #000000 0 1;
#X msg 528 348 open \$1 \$2;
#X obj 533 511 pack s f;
#X msg 533 541 open \$1 \$2;
#X symbolatom 538 81 10 0 0 0 - - - 0;
#X text 32 447 async:;
#X text 60 464 0: load synchronously (default);
#X text 525 168 1) search;
#X text 29 59 -e: use the VST editor;
#X text 33 410 key/path: plugin key or file path (see below);
#X text 60 480 1: load asynchronously;
#X obj 28 29 cnv 20 300 20 empty empty empty 20 12 0 14 #dcdcdc #404040 0;
#X text 30 140 -t: process plugin in a seperate thread to utilize more CPU cores., f 67;
#X text 55 234 This makes sure that the plugin can safely crash without taking down the whole Pd process. Use this for buggy plugins or safe experimentation., f 57;
#X text 56 284 NOTE: switching between processes incurs some fixed CPU overhead \, which is less significant for higher blocksizes.;
#X text 30 213 -p: run plugin in a dedicated subprocess (= sandbox).;
#X text 29 331 -b: run plugin in a shared subprocess.;
#X text 54 349 This uses less memory and possibly less CPU \, but if one plugin crashes \, it will inevitably take down all other plugins in the same process., f 57;
#X text 34 31 arguments: [flags...] key/path [async];
#X text 658 175 a) by key:;
#X text 677 361 Both absolute and relative paths are allowed. Relative paths are searched like abstractions. If that fails \, the standard VST search paths are searched *recursively* (see [pd search]), f 67;
#X text 677 414 For VST2 plug-ins the extension (.dll \, .so \, .vst) can be omitted \, but for VST3 plug-ins the '.vst3' extension is mandatory., f 66;
#X text 676 456 NOTE: Opening by file path doesn't work if the module contains several plug-ins (VST2 shell plug-ins or certain VST3 plug-ins)!, f 65;
#X text 675 490 Also \, file names may differ between platforms \, while keys are always platform independent., f 63;
#X text 619 26 By default \, a generic Pd editor is created \, use the -e flag to enable the VST editor., f 45;
#X text 673 271 Generally \, keys can only be used after a search (see the 'search' method). Search results are cached in a file \, so you only need to search once in the beginning and everytime you install a new plug-in., f 70;
#X text 55 78 If omitted \, a generic Pd editor is created.;
#X text 55 97 NOTE: some (buggy) plugins don't work correctly without the VST editor., f 56;
#X text 343 511 on failure.;
#X text 525 247 2a) open by key;
#X obj 586 484 tgl 19 0 empty empty async 24 10 0 12 #fcfcfc #000000 #000000 0 1;
#X text 528 404 2b) open by path;
#X text 673 197 The key is simply the plugin name. VST3 plug-in keys get a '.vst3' extension to distinguish them from VST2 plugins of the same name., f 67;
#X obj 528 135 s \$0-msg;
#X obj 528 376 s \$0-msg;
#X text 656 151 Plug-ins can be opened in two ways:;
#X text 658 335 b) by file path:;
#X obj 533 569 s \$0-msg;
#X obj 43 570 outlet;
#X obj 669 233 cnv 15 45 20 empty empty empty 20 12 0 14 #f8fc00 #404040 0;
#X text 673 234 NOTE: if a plugin name contains whitespace \, you may need to escape it with backslashes \, e.g. when typed in a message box., f 66;
#X text 628 69 WARNING: on macOS \, the VST editor might run on the audio thread! See the README for more information., f 41;
#X obj 53 158 cnv 15 45 20 empty empty empty 20 12 0 14 #f8fc00 #404040 0;
#X text 57 159 NOTE: this introduces a delay of 1 block.;
#X text 55 181 See als the "num_threads" method in [pd more].;
#X connect 0 0 1 0;
#X connect 1 0 16 0;
#X connect 2 0 3 0;
#X connect 3 0 4 0;
#X connect 4 0 47 0;
#X connect 6 0 13 0;
#X connect 8 0 7 0;
#X connect 13 0 15 0;
#X connect 14 0 13 1;
#X connect 15 0 48 0;
#X connect 16 0 17 0;
#X connect 17 0 51 0;
#X connect 18 0 4 0;
#X connect 44 0 16 1;
#X restore 239 306 pd open;
#X text 302 307 open a plugin;
#X obj 20 119 cnv 15 70 20 empty empty empty 20 12 0 14 #dcdcdc #404040 0;
#X text 22 121 inlets:;
#X obj 20 177 cnv 15 70 20 empty empty empty 20 12 0 14 #dcdcdc #404040 0;
#X text 24 179 outlets:;
#X obj 19 56 cnv 15 150 20 empty empty empty 20 12 0 14 #dcdcdc #404040 0;
#X text 20 58 creation arguments:;
#N canvas 101 355 608 488 message-out 0;
#X obj 20 17 inlet;
#X obj 20 83 s \$0-program-data;
#X obj 20 50 route program_data bank_data, f 39;
#X obj 155 83 s \$0-bank-data;
#X obj 342 132 print;
#X obj 342 105 spigot 1;
#X obj 411 105 tgl 19 0 empty empty empty 17 7 0 10 #fcfcfc #000000 #000000 0 1;
#X text 437 104 print messages;
#X obj 310 77 s \$0-out;
#X obj 310 50 t a a;
#X msg 28 188 param_automated <index> <value>;
#X msg 28 224 latency <numsamples>;
#X msg 30 287 midi <bytes...>;
#X msg 29 324 sysex <bytes...>;
#X text 263 182 a parameter has been changed in the GUI (or by changing a linked parameter)., f 40;
#X text 182 224 the plugin's internal processing latency has changed;
#X text 159 287 a MIDI message sent by the plugin;
#X text 159 324 a SysEx message sent by the plugin;
#X text 183 242 NOTE: the value includes the additional latency caused by multithreading (see the "-t" flag for "open"), f 55;
#X msg 29 397 crash;
#X text 381 76 goes to vstpresetbrowser;
#X text 21 111 see [pd preset];
#X text 93 398 the plugin subprocess has crashed.;
#X text 94 416 This is only sent for bridged or sandboxed plugins \, because normal plugins would simply crash Pd., f 52;
#X msg 29 361 update;
#X text 97 362 multiple parameters have changed internally;
#X obj 25 153 cnv 15 70 20 empty empty empty 20 12 0 14 #dcdcdc #404040 0;
#X text 31 154 events:;
#X connect 0 0 2 0;
#X connect 2 0 1 0;
#X connect 2 1 3 0;
#X connect 2 2 9 0;
#X connect 5 0 4 0;
#X connect 6 0 5 1;
#X connect 9 0 8 0;
#X connect 9 1 5 0;
#X restore 88 429 pd message-out;
#X text 22 144 input signals;
#X text 24 199 output signals + 1 message outlet, f 16;
#X obj 227 56 vstpluginbrowser;
#X text 102 402 <- click me, f 13;
#X text 97 373 <- message in;
#X obj 270 449 hradio 19 1 0 3 empty empty empty 0 -8 0 10 #fcfcfc #000000 #000000 0;
#X text 333 449 bypass;
#X text 348 477 0: off \, 1: hard \, 2: soft;
#X obj 459 56 vstpresetbrowser;
#X obj 459 29 r \$0-out;
#X obj 459 369 s \$0-msg;
#X obj 272 504 hradio 19 1 0 2 empty empty empty 0 -8 0 10 #fcfcfc #000000 #000000 0;
#X msg 272 531 reset \$1;
#X text 321 504 0: synchronous \, 1: asynchronous;
#X msg 400 555 reset;
#X text 447 555 when done;
#X text 343 555 outputs;
#X text 471 646 more methods;
#N canvas 576 134 982 742 more 0;
#N canvas 612 176 595 511 vst2 0;
#X obj 23 464 s \$0-msg;
#X msg 24 73 can_do \$1;
#X symbolatom 24 48 24 0 0 0 - - - 0;
#X text 44 190 access special functionality of a plugin which is not available via the standard parameter interface., f 54;
#X text 204 130 1: yes \, -1: no \, 0: don't know;
#X msg 36 165 vendor_method <index> <value> <opt> <ptr>;
#X text 46 250 arguments:;
#X text 44 292 <value>: pointer sized integer;
#X text 44 271 <index>: 32bit integer;
#X text 44 312 <opt>: float;
#X text 46 335 <ptr>: raw data as list of bytes;
#X text 44 219 generally \, you have to know what you're doing \, check the documentation of the plugin to see what data it expects.;
#X text 21 24 VST2 only:;
#X msg 260 363 vendor_method <f> <s>;
#X text 47 384 message in both float and symbol (hex) representation.;
#X text 268 266 <index> and <value> can be provided as floats or symbols (in hex representation \, e.g. "0x10FD7F04"), f 42;
#X text 46 363 the return value is sent as a;
#X text 205 94 You will get a message "can_do" with the query string + the result as an integer:, f 42;
#X text 46 411 NOTE: The purpose of sending/receiving hex symbols is to work around the limited precision of decimal numbers in (single precision) Pd., f 70;
#X text 205 47 Query the plugin for special capabilites. You have to know the query string. Some are documented in the VST SDK \, others are not..., f 44;
#X connect 1 0 0 0;
#X connect 2 0 1 0;
#X connect 5 0 0 0;
#X restore 535 557 pd vst2;
#X obj 49 167 nbx 5 17 -1e+37 1e+37 0 0 empty empty empty 0 -8 0 12 #fcfcfc #000000 #000000 0 256;
#X text 116 167 index;
#X text 59 215 responds with;
#X text 43 82 responds with;
#X text 63 420 responds with a series of;
#X text 330 420 messages;
#X msg 49 192 input_info \$1;
#X obj 59 241 nbx 5 17 -1e+37 1e+37 0 0 empty empty empty 0 -8 0 12 #fcfcfc #000000 #000000 0 256;
#X text 125 241 index;
#X msg 59 265 output_info \$1;
#X text 155 191 get input bus info;
#X text 172 264 get output bus info;
#X text 66 290 responds with;
#X msg 167 290 output_info <index> <nchannels> [<name> <type>];
#X msg 27 60 input_count;
#X text 120 58 get number of input busses;
#X msg 143 83 input_count <count>;
#X text 54 141 responds with;
#X msg 38 119 output_count;
#X text 134 118 get number of output busses;
#X msg 154 142 output_count <count>;
#X msg 56 395 input_list;
#X text 139 395 get all input bus info;
#X msg 247 419 input_info;
#X text 68 474 responds with a series of;
#X text 340 473 messages;
#X msg 64 447 output_list;
#X text 151 446 get all output bus info;
#X msg 252 473 output_info;
#X obj 27 505 s \$0-msg;
#X obj 20 18 cnv 15 200 25 empty empty empty 20 12 0 14 #e0e0e0 #404040 0;
#X text 26 22 Input/output bus info:;
#X obj 525 519 cnv 15 200 25 empty empty empty 20 12 0 14 #e0e0e0 #404040 0;
#X text 531 523 VST2 only methods;
#X msg 528 102 pos \$1 \$2;
#N canvas 0 23 450 300 pos 0;
#X floatatom 115 107 5 0 0 0 x \$0-bar \$0-posx 0;
#X floatatom 163 107 5 0 0 0 y \$0-bar \$0-posy 0;
#X obj 106 243 outlet;
#X obj 106 218 pack f f;
#X obj 124 192 t b f;
#X obj 106 140 r \$0-posx;
#X obj 125 166 r \$0-posy;
#X connect 3 0 2 0;
#X connect 4 0 3 0;
#X connect 4 1 3 1;
#X connect 5 0 3 0;
#X connect 6 0 4 0;
#X coords 0 -1 1 1 112 32 2 100 100;
#X restore 528 63 pd pos;
#X text 605 101 move editor;
#X obj 528 236 s \$0-msg;
#X obj 520 23 cnv 15 200 25 empty empty empty 20 12 0 14 #e0e0e0 #404040 0;
#X text 528 27 Move/size editor window;
#N canvas 0 23 450 300 pos 0;
#X floatatom 114 107 5 0 0 0 w \$0-bar \$0-w 0;
#X floatatom 166 107 5 0 0 0 h \$0-bar \$0-h 0;
#X obj 106 241 outlet;
#X obj 106 216 pack f f;
#X obj 124 188 t b f;
#X obj 106 140 r \$0-w;
#X obj 124 164 r \$0-h;
#X connect 3 0 2 0;
#X connect 4 0 3 0;
#X connect 4 1 3 1;
#X connect 5 0 3 0;
#X connect 6 0 4 0;
#X coords 0 -1 1 1 112 32 2 100 100;
#X restore 540 130 pd pos;
#X msg 540 169 size \$1 \$2;
#X text 623 169 resize editor;
#X text 551 194 This only works on VST3 plugins with a resizable plugin GUI!, f 32;
#X obj 525 274 cnv 15 200 25 empty empty empty 20 12 0 14 #e0e0e0 #404040 0;
#X obj 530 365 s \$0-msg;
#X text 532 278 Offline processing;
#X msg 530 340 offline \$1;
#X obj 530 313 tgl 19 0 empty empty empty 17 7 0 10 #fcfcfc #000000 #000000 0 1;
#X text 558 313 enable/disable offline processing;
#X text 616 337 In a non-realtime context (i.e. using the 'fast-forward' message or running Pd in batch mode) \, some plugins don't render correctly unless you explicitly put them into offline processing mode., f 46;
#X text 527 416 Some plugins also render at a higher quality in offline mode than in realtime mode., f 57;
#X text 528 451 WARNING: With a few buggy plugins \, certain plugin methods only work correctly in realtime mode \, so you have to switch modes accordingly., f 60;
#X text 69 327 NOTE: <name> and <type> are only output for VST3 plugins. <type> can be "main" or "aux". In the future \, more info might be added.;
#X msg 160 216 input_info <index> <nchannels> [<name> <type>];
#X obj 525 598 cnv 15 200 25 empty empty empty 20 12 0 14 #e0e0e0 #404040 0;
#X text 531 602 Other methods;
#X obj 531 694 s \$0-msg;
#X msg 531 637 version;
#X text 596 636 get the vstplugin~ version;
#X text 546 661 responds with;
#X msg 647 662 version <major> <minor> <bugfix>;
#X msg 29 606 dsp_threads \$1;
#X obj 21 538 cnv 15 200 25 empty empty empty 20 12 0 14 #e0e0e0 #404040 0;
#X floatatom 29 580 5 0 0 0 - - - 0;
#X text 27 542 Multi-threading;
#X obj 29 634 s \$0-msg;
#X text 145 626 By default \, this is the number of logical CPUs.;
#X obj 121 648 cnv 15 45 20 empty empty empty 20 12 0 14 #f8fc00 #404040 0;
#X text 125 650 NOTE: If you want to change the number of DSP threads \, you must call this method before you open any plugins \, otherwise it will have no effect!, f 54;
#X text 144 593 Set the number of DSP threads for multi-threaded plugin processing. (See -t flag for "open" message.), f 52;
#X connect 1 0 7 0;
#X connect 7 0 30 0;
#X connect 8 0 10 0;
#X connect 10 0 30 0;
#X connect 15 0 30 0;
#X connect 19 0 30 0;
#X connect 22 0 30 0;
#X connect 27 0 30 0;
#X connect 35 0 38 0;
#X connect 36 0 35 0;
#X connect 41 0 42 0;
#X connect 42 0 38 0;
#X connect 48 0 46 0;
#X connect 49 0 48 0;
#X connect 59 0 58 0;
#X connect 63 0 67 0;
#X connect 65 0 63 0;
#X restore 474 668 pd more;
#X f 14;
#N canvas 248 79 1039 650 info 0;
#X obj 40 69 s \$0-msg;
#X msg 40 42 info;
#X msg 413 129 info \$1;
#X symbolatom 413 103 16 0 0 0 - - - 0;
#X text 158 125 plugin name;
#X msg 49 125 info name <s>;
#X text 163 153 full plugin path;
#X msg 50 152 info path <s>;
#X text 172 178 plugin vendor;
#X msg 50 178 info vendor <s>;
#X text 181 205 plugin category;
#X msg 50 205 info category <s>;
#X text 178 231 plugin version;
#X msg 50 231 info version <s>;
#X msg 50 257 info sdkversion <s>;
#X text 194 254 plugin SDK version;
#X text 171 308 number of inputs;
#X msg 50 308 info inputs <f>;
#X text 174 334 number of outputs;
#X msg 50 334 info outputs <f>;
#X text 150 283 plugin unique ID;
#X msg 50 283 info id <s>;
#X text 171 361 has editor (0|1);
#X msg 50 361 info editor <f>;
#X text 166 412 is synth (0|1);
#X msg 50 413 info synth <f>;
#X msg 50 439 info single <f>;
#X msg 50 465 info double <f>;
#X text 171 491 has midi input (0|1);
#X msg 50 491 info midiin <f>;
#X text 178 517 has midi output (0|1);
#X msg 50 517 info midiout <f>;
#X text 177 542 has sysex input (0|1);
#X msg 50 543 info sysexin <f>;
#X msg 50 569 info sysexout <f>;
#X msg 50 597 info bridged <f>;
#X text 183 570 has sysex output (0|1);
#X text 182 597 is bridged (0|1);
#X obj 413 463 s \$0-msg;
#X msg 435 247 program_list \$1;
#X symbolatom 435 220 16 0 0 0 - - - 0;
#X msg 424 186 param_list \$1;
#X symbolatom 424 162 16 0 0 0 - - - 0;
#X msg 551 186 param_info;
#X text 633 185 messages \, see [pd parameter].;
#X text 660 246 messages \, see [pd preset].;
#X symbolatom 444 281 16 0 0 0 - - - 0;
#X text 657 308 messages \, see [pd preset].;
#X msg 444 308 preset_list \$1;
#X symbolatom 453 340 16 0 0 0 - - - 0;
#X msg 453 367 input_list \$1;
#X symbolatom 462 402 16 0 0 0 - - - 0;
#X text 549 163 get parameter info as a series of;
#X text 560 223 get programs as a series of;
#X text 566 285 get presets as a series of;
#X text 575 343 get input bus info as a series of;
#X text 584 406 get output bus info as a series of;
#X text 661 366 messages \, see [pd more].;
#X text 675 428 messages \, see [pd more].;
#X text 83 41 get info about the currently loaded plugin;
#X msg 562 246 program_name;
#X msg 568 308 preset_info;
#X msg 577 366 input_info;
#X msg 586 429 output_info;
#X msg 462 429 output_list \$1;
#X text 473 129 get general info;
#X text 409 40 You can obtain plugin info without actually loading a plugin!, f 63;
#X text 410 62 For this purpose \, the following methods also accept a plugin key/path as an optional argument:, f 61;
#X text 171 440 supports single precision (0|1);
#X text 170 465 supports double precision (0|1);
#X text 36 98 This will output the following messages:;
#X msg 50 387 info resizable <f>;
#X text 191 387 resizable editor (0|1);
#X connect 1 0 0 0;
#X connect 2 0 38 0;
#X connect 3 0 2 0;
#X connect 39 0 38 0;
#X connect 40 0 39 0;
#X connect 41 0 38 0;
#X connect 42 0 41 0;
#X connect 46 0 48 0;
#X connect 48 0 38 0;
#X connect 49 0 50 0;
#X connect 50 0 38 0;
#X connect 51 0 64 0;
#X connect 64 0 38 0;
#X restore 596 615 pd info;
#X f 11;
#X text 594 589 plugin info;
#X text 23 24 [vstplugin~] - use VST plugins in Pd on all platforms;
#X text 304 366 print plugin info to the console, f 18;
#N canvas 1027 342 494 344 META 0;
#X text 12 5 KEYWORDS plugin VST VST3;
#X text 12 165 AUTHOR Christof Ressi;
#X text 12 25 LICENSE BSD-3-clause;
#X text 12 75 INLET_0 signal \, ...;
#X text 12 95 INLET_N signal;
#X text 12 115 OUTLET_N signal;
#X text 12 135 OUTLET_R info messages;
#X text 12 185 HELP_PATCH_AUTHORS Christof Ressi \, "pd meta" information added by IOhannes m zmölnig;
#X text 12 45 DESCRIPTION use VST2 and VST3 audio plugins in your patch;
#X restore 668 22 pd META;
#X connect 1 0 18 0;
#X connect 1 1 18 1;
#X connect 2 0 6 0;
#X connect 3 0 6 0;
#X connect 4 0 3 0;
#X connect 5 0 6 0;
#X connect 7 0 18 0;
#X connect 18 0 0 0;
#X connect 18 1 0 1;
#X connect 18 2 33 0;
#X connect 22 0 6 0;
#X connect 25 0 6 0;
#X connect 36 0 6 0;
#X connect 39 0 5 0;
#X connect 42 0 44 0;
#X connect 43 0 42 0;
#X connect 45 0 46 0;
#X connect 46 0 6 0;
|