From 0ed7a8b68dd73e2b0473b8127aeca99f3bac9061 Mon Sep 17 00:00:00 2001 From: Thomas Grill Date: Wed, 1 Apr 2009 21:13:09 +0000 Subject: cleaned up grill externals - replaced with svn:externals to svn.grrrr.org/ext/trunk/ svn path=/trunk/; revision=10951 --- externals/grill/xsample/.DS_Store | Bin 6148 -> 0 bytes externals/grill/xsample/gpl.txt | 346 --------- externals/grill/xsample/license.txt | 51 -- .../xsample/maxmsp/xsample-objectmappings.txt | 7 - externals/grill/xsample/maxmsp/xsample.help | Bin 19194 -> 0 bytes externals/grill/xsample/package.txt | 23 - externals/grill/xsample/pd-ex/xplaydemo.pd | 79 -- externals/grill/xsample/pd-ex/xsampledemo.pd | 68 -- externals/grill/xsample/pd/xgroove~-help.pd | 250 ------- externals/grill/xsample/pd/xplay~-help.pd | 123 ---- externals/grill/xsample/pd/xrecord~-help.pd | 168 ----- externals/grill/xsample/readme.txt | 172 ----- externals/grill/xsample/source/groove.cpp | 810 --------------------- externals/grill/xsample/source/inter.cpp | 82 --- externals/grill/xsample/source/inter.h | 420 ----------- externals/grill/xsample/source/main.cpp | 220 ------ externals/grill/xsample/source/main.h | 464 ------------ externals/grill/xsample/source/play.cpp | 151 ---- externals/grill/xsample/source/prefix.h | 15 - externals/grill/xsample/source/record.cpp | 497 ------------- externals/grill/xsample/source/xsample-Info.plist | 22 - externals/grill/xsample/source/xsample.rsrc | 29 - externals/grill/xsample/xsample.mcp | Bin 456081 -> 0 bytes externals/grill/xsample/xsample.vcproj | 683 ----------------- .../grill/xsample/xsample.xcode/project.pbxproj | 625 ---------------- .../xsample/xsample.xcodeproj/project.pbxproj | 529 -------------- 26 files changed, 5834 deletions(-) delete mode 100644 externals/grill/xsample/.DS_Store delete mode 100644 externals/grill/xsample/gpl.txt delete mode 100644 externals/grill/xsample/license.txt delete mode 100644 externals/grill/xsample/maxmsp/xsample-objectmappings.txt delete mode 100755 externals/grill/xsample/maxmsp/xsample.help delete mode 100644 externals/grill/xsample/package.txt delete mode 100644 externals/grill/xsample/pd-ex/xplaydemo.pd delete mode 100644 externals/grill/xsample/pd-ex/xsampledemo.pd delete mode 100644 externals/grill/xsample/pd/xgroove~-help.pd delete mode 100644 externals/grill/xsample/pd/xplay~-help.pd delete mode 100644 externals/grill/xsample/pd/xrecord~-help.pd delete mode 100644 externals/grill/xsample/readme.txt delete mode 100644 externals/grill/xsample/source/groove.cpp delete mode 100644 externals/grill/xsample/source/inter.cpp delete mode 100644 externals/grill/xsample/source/inter.h delete mode 100644 externals/grill/xsample/source/main.cpp delete mode 100644 externals/grill/xsample/source/main.h delete mode 100644 externals/grill/xsample/source/play.cpp delete mode 100644 externals/grill/xsample/source/prefix.h delete mode 100644 externals/grill/xsample/source/record.cpp delete mode 100644 externals/grill/xsample/source/xsample-Info.plist delete mode 100755 externals/grill/xsample/source/xsample.rsrc delete mode 100755 externals/grill/xsample/xsample.mcp delete mode 100644 externals/grill/xsample/xsample.vcproj delete mode 100644 externals/grill/xsample/xsample.xcode/project.pbxproj delete mode 100644 externals/grill/xsample/xsample.xcodeproj/project.pbxproj (limited to 'externals/grill/xsample') diff --git a/externals/grill/xsample/.DS_Store b/externals/grill/xsample/.DS_Store deleted file mode 100644 index 55eaa8bc..00000000 Binary files a/externals/grill/xsample/.DS_Store and /dev/null differ diff --git a/externals/grill/xsample/gpl.txt b/externals/grill/xsample/gpl.txt deleted file mode 100644 index 5ea29a7d..00000000 --- a/externals/grill/xsample/gpl.txt +++ /dev/null @@ -1,346 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Library General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) 19yy - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) 19yy name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - , 1 April 1989 - Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Library General -Public License instead of this License. - diff --git a/externals/grill/xsample/license.txt b/externals/grill/xsample/license.txt deleted file mode 100644 index 3f8ead45..00000000 --- a/externals/grill/xsample/license.txt +++ /dev/null @@ -1,51 +0,0 @@ -xsample - extended sample objects for Max/MSP and pd (pure data) -Copyright (C) 2001-2005 Thomas Grill - -This program is free software; you can redistribute it and/or -modify it under the terms of the GNU General Public License -as published by the Free Software Foundation; either version 2 -of the License, or (at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - -In the official xsample distribution, the GNU General Public License is -in the file gpl.txt - ---------------------------------------------------------- - - OTHER COPYRIGHT NOTICES - ---------------------------------------------------------- -This package uses the flext C++ layer and some code snippets -from pd (pure data). -See the license texts below: - - ---- flext ---------------------------------------------- -flext - C++ layer for Max/MSP and pd (pure data) externals -Copyright (C) 2001-2005 Thomas Grill - -This program is free software; you can redistribute it and/or -modify it under the terms of the GNU General Public License -as published by the Free Software Foundation; either version 2 -of the License, or (at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - -In the official flext distribution, the GNU General Public License is -in the file gpl.txt - diff --git a/externals/grill/xsample/maxmsp/xsample-objectmappings.txt b/externals/grill/xsample/maxmsp/xsample-objectmappings.txt deleted file mode 100644 index 877090e7..00000000 --- a/externals/grill/xsample/maxmsp/xsample-objectmappings.txt +++ /dev/null @@ -1,7 +0,0 @@ -max objectfile xgroove~ xsample; -max objectfile xplay~ xsample; -max objectfile xrecord~ xsample; - -max oblist xsample xgroove~; -max oblist xsample xplay~; -max oblist xsample xrecord~; diff --git a/externals/grill/xsample/maxmsp/xsample.help b/externals/grill/xsample/maxmsp/xsample.help deleted file mode 100755 index 629d9501..00000000 Binary files a/externals/grill/xsample/maxmsp/xsample.help and /dev/null differ diff --git a/externals/grill/xsample/package.txt b/externals/grill/xsample/package.txt deleted file mode 100644 index 2d8ef2f2..00000000 --- a/externals/grill/xsample/package.txt +++ /dev/null @@ -1,23 +0,0 @@ -# xsample - extended sample objects for Max/MSP and PD (pure data) -# -# Copyright (c)2001-2005 Thomas Grill (gr@grrrr.org) -# For information on usage and redistribution, and for a DISCLAIMER OF ALL -# WARRANTIES, see the file, "license.txt," in this distribution. -# -# more information on http://grrrr.org/ext -# ------------------------------------------------------------------------ -# -# This file contains information for the building process -# -# DO NOT EDIT!! -# -# ------------------------------------------------------------------------ - -NAME=xsample - -SRCDIR=source - -PRECOMPILE=prefix.h - -SRCS=main.cpp play.cpp groove.cpp record.cpp inter.cpp -HDRS=prefix.h main.h inter.h diff --git a/externals/grill/xsample/pd-ex/xplaydemo.pd b/externals/grill/xsample/pd-ex/xplaydemo.pd deleted file mode 100644 index c2bb0478..00000000 --- a/externals/grill/xsample/pd-ex/xplaydemo.pd +++ /dev/null @@ -1,79 +0,0 @@ -#N canvas 126 119 739 716 12; -#N canvas 0 0 450 300 graph2 0; -#X array loop1 220000 float 0; -#X coords 0 0.5 219999 -0.5 200 140 1; -#X restore 449 285 graph; -#N canvas 0 0 450 300 graph3 0; -#X array loop2 220000 float 0; -#X coords 0 0.5 219999 -0.5 200 140 1; -#X restore 450 429 graph; -#X obj 131 309 xplay~ loop1; -#X obj 151 459 xplay~ loop2; -#X obj 32 697 dac~; -#X msg 16 240 start; -#X msg 15 267 stop; -#N canvas 0 0 450 300 graph1 0; -#X array loop3 220000 float 0; -#X coords 0 0.5 219999 -0.5 200 140 1; -#X restore 450 575 graph; -#X obj 242 623 xplay~ loop3; -#X msg 103 232 print; -#X msg 161 232 help; -#X msg 13 364 start; -#X msg 13 390 stop; -#X msg 9 498 start; -#X msg 11 524 stop; -#X obj 180 136 xrecord~ loop1; -#X msg 126 60 set loop2; -#X msg 42 60 set loop1; -#X msg 48 108 start; -#X msg 49 136 stop; -#X msg 209 60 set loop3; -#X msg 305 57 append 0; -#X obj 306 33 loadbang; -#X text 5 -59 Demo of xplay~ to play synchronized loops; -#X text 40 43 Click to choose loop to record; -#X obj 333 95 adc~; -#X obj 289 264 *~ 220000; -#X obj 290 226 phasor~ 0.2; -#X text 156 692 each loop array holds 220000 samples recorded at 44khz -; -#X text 5 91 record; -#X text 78 -34 Record something in each of the three loop arrays. Choose -(set) the loop to record \, then press start. There's room for up to -5 seconds in each loop.; -#X text 17 183 After you have recorded something into each loop \, -you can play them selectively using the start/stop controls; -#X text 389 224 <= this generates the position signal that xplay requires -at the proper rate for this sample size.; -#X text 379 48 <= We record from the beginning of the array each time. -; -#X text 370 96 <= Audio will be recorded from your sound card input -(e.g. microphone); -#X text 350 -60 (by Glenn Meader); -#X connect 2 0 4 0; -#X connect 2 0 4 1; -#X connect 3 0 4 1; -#X connect 3 0 4 0; -#X connect 5 0 2 0; -#X connect 6 0 2 0; -#X connect 8 0 4 0; -#X connect 8 0 4 1; -#X connect 9 0 2 0; -#X connect 10 0 2 0; -#X connect 11 0 3 0; -#X connect 12 0 3 0; -#X connect 13 0 8 0; -#X connect 14 0 8 0; -#X connect 16 0 15 0; -#X connect 17 0 15 0; -#X connect 18 0 15 0; -#X connect 19 0 15 0; -#X connect 20 0 15 0; -#X connect 21 0 15 0; -#X connect 22 0 21 0; -#X connect 25 0 15 0; -#X connect 26 0 2 0; -#X connect 26 0 3 0; -#X connect 26 0 8 0; -#X connect 27 0 26 0; diff --git a/externals/grill/xsample/pd-ex/xsampledemo.pd b/externals/grill/xsample/pd-ex/xsampledemo.pd deleted file mode 100644 index aa269f00..00000000 --- a/externals/grill/xsample/pd-ex/xsampledemo.pd +++ /dev/null @@ -1,68 +0,0 @@ -#N canvas 242 109 742 690 12; -#X text 13 3 xsample~ demo; -#N canvas 0 22 452 302 graph5 0; -#X array loop1 440000 float 0; -#X coords 0 0.2 439999 -0.2 200 140 1; -#X restore 516 184 graph; -#X obj 244 262 xrecord~ loop1; -#X msg 74 233 start; -#X msg 75 265 stop; -#X obj 111 108 adc~; -#X msg 225 158 help; -#X msg 237 184 print; -#X msg 165 122 append 0; -#X obj 246 297 snapshot~; -#X obj 165 96 loadbang; -#X floatatom 245 328 10 0 0 1 looplength - -; -#X text 4 214 Click to start recording; -#X text 273 156 Click help prints info; -#X text 236 98 start from the beginning of the array each time; -#X obj 147 579 xgroove~ loop1; -#X msg 121 449 print; -#X msg 135 472 help; -#X msg 15 536 start; -#X msg 16 565 stop; -#X floatatom 172 526 8 0 0 2 speed - -; -#X floatatom 208 624 8 0 0 3 startsample - -; -#X floatatom 311 623 10 0 0 3 endsample - -; -#X obj 134 631 dac~; -#X obj 185 448 loadbang; -#X msg 188 470 1; -#X text 2 515 play the loop; -#X text 244 525 negative numbers play sample backwards; -#X text 259 356 The xrecord object puts out the current position so -we take a snapshot of it when we stop recording to get the number of -samples we have recorded.; -#X text 262 556 use the last sample number as the max position so loop -is played the right length; -#X text 78 23 This demo records sound coming from your sound card input -(e.g. microphone). It stores the sample in the array "loop1". The array -has 440000 elements so it can store a max of 10 seconds \, recording -at 44khz.; -#X text 285 182 print current status; -#X text 25 428 Playback of the sample stored in loop1 using the xgroove -object:; -#X text 136 4 (by Glenn Meader); -#X text 20 314; -#X connect 2 0 9 0; -#X connect 3 0 2 0; -#X connect 4 0 2 0; -#X connect 5 0 2 0; -#X connect 6 0 2 0; -#X connect 7 0 2 0; -#X connect 8 0 2 0; -#X connect 9 0 11 0; -#X connect 10 0 8 0; -#X connect 10 0 9 0; -#X connect 11 0 15 2; -#X connect 15 0 23 0; -#X connect 15 0 23 1; -#X connect 15 2 21 0; -#X connect 15 3 22 0; -#X connect 16 0 15 0; -#X connect 17 0 15 0; -#X connect 18 0 15 0; -#X connect 19 0 15 0; -#X connect 20 0 15 0; -#X connect 24 0 25 0; -#X connect 25 0 20 0; diff --git a/externals/grill/xsample/pd/xgroove~-help.pd b/externals/grill/xsample/pd/xgroove~-help.pd deleted file mode 100644 index 03906625..00000000 --- a/externals/grill/xsample/pd/xgroove~-help.pd +++ /dev/null @@ -1,250 +0,0 @@ -#N canvas 69 62 945 610 12; -#X obj 215 253 hsl 128 15 0.001 3 1 1 empty empty speed 0 -8 0 10 -225271 --1 -1 5000 1; -#X msg 603 169 loop \$1; -#X obj 28 72 bng 15 250 50 0 empty empty empty 20 8 0 8 -258699 -1 --1; -#X msg 27 92 stop; -#N canvas 0 0 450 300 graph7 0; -#X array \$0-buf 10000 float 0; -#X coords 0 1 9999 -1 300 150 1; -#X restore 573 269 graph; -#X obj 17 556 dac~; -#X msg 120 73 reset; -#X text 299 321 min/max points; -#X text 50 69 start; -#X text 67 90 stop; -#X msg 119 99 help; -#X text 280 269 (float or signal); -#X msg 749 167 interp \$1; -#X msg 237 305 all; -#X text 747 94 interpolation; -#X text 622 116 once; -#X text 768 116 none; -#X text 768 148 linear; -#X text 224 75 units; -#X msg 225 163 units \$1; -#X msg 358 163 sclmode \$1; -#X text 244 127 ms; -#X text 244 142 s; -#X text 377 127 buffer; -#X text 377 142 loop; -#X obj 487 208 bng 15 250 50 0 empty empty empty 0 -6 0 8 -228992 -1 --1; -#X obj 335 349 print A; -#N canvas 0 0 450 300 graph2 0; -#X array \$0-scp 300 float 0; -#X coords 0 1 299 -1 300 100 1; -#X restore 573 447 graph; -#X obj 26 525 *~; -#X obj 82 491 hsl 128 15 0.0001 1 1 0 empty empty volume -2 -6 0 8 --261689 -1 -1 0 1; -#X obj 79 509 nbx 5 14 -1e+037 1e+037 0 0 empty empty empty 0 -6 0 -10 -261689 -1 -1 0.0001 256; -#X msg 25 249 pos \$1; -#X msg 63 220 200; -#X msg 25 221 100; -#X obj 507 209 nbx 5 14 0 1e+037 0 1 empty empty frq 0 -6 0 10 -228992 --1 -1 220 256; -#N canvas 19 334 427 333 loopzone 0; -#X msg 28 84 xzone \$1; -#X obj 31 43 hsl 128 15 0 300 0 0 empty empty empty -2 -6 0 8 -262131 --1 -1 0 1; -#X floatatom 28 64 5 0 0 0 - - -; -#X msg 203 207 xfade \$1; -#X obj 203 142 vdl 15 0 0 4 empty empty empty 0 -6 0 8 -262144 -1 -1 -0; -#X text 202 123 loop zone mode; -#X text 222 141 keep loop pos; -#X text 222 157 keep loop length; -#X text 222 173 keep fade length; -#X msg 47 205 xshape \$1; -#X obj 48 155 vdl 15 0 0 3 empty empty empty 0 -6 0 8 -262144 -1 -1 -0; -#X text 45 133 fade zone shape; -#X text 67 152 linear; -#X text 67 168 quarter sine; -#X text 67 184 half sine; -#X text 125 67 length of the loop zone; -#X text 123 84 (in units); -#X text 222 188 zone inside loop; -#X text 21 9 xgroove~ crossfading loop zone; -#X obj 27 255 s to-g; -#X connect 0 0 19 0; -#X connect 1 0 2 0; -#X connect 2 0 0 0; -#X connect 3 0 19 0; -#X connect 4 0 3 0; -#X connect 9 0 19 0; -#X connect 10 0 9 0; -#X restore 23 414 pd loopzone; -#X text 64 147 set buffer; -#X text 23 383 settings for; -#X text 22 395 cross-fading loop zone; -#X text 399 349 print attributes; -#X obj 357 394 bng 15 250 50 0 empty empty loop_bang 0 -6 0 8 -262131 --1 -1; -#X text 357 60 scale mode; -#X text 354 75 (pos message and position outlet); -#X text 622 148 bidirectional; -#X text 244 111 buffer size; -#X obj 574 419 hsl 300 15 0 10000 0 0 empty bufpos empty -2 -6 0 8 --262144 -1 -1 10628 1; -#X obj 236 527 nbx 5 14 -1e+037 1e+037 0 0 empty empty position 0 -6 -0 10 -228992 -1 -1 3554.44 256; -#N canvas 0 0 474 324 watch 0; -#X obj 163 18 loadbang; -#X obj 88 80 snapshot~; -#X obj 164 44 metro 50; -#X obj 143 109 s bufpos; -#X obj 176 196 outlet; -#X obj 22 14 inlet~; -#X obj 88 14 inlet~; -#X obj 22 196 tabwrite~ \$0-scp; -#X connect 0 0 2 0; -#X connect 1 0 3 0; -#X connect 1 0 4 0; -#X connect 1 0 7 0; -#X connect 2 0 1 0; -#X connect 2 0 7 0; -#X connect 5 0 7 0; -#X connect 6 0 1 0; -#X restore 235 492 pd watch; -#X text 377 111 units in loop; -#N canvas 97 34 266 202 genosc 0; -#X obj 38 29 inlet; -#X obj 64 94 osc~ 1000; -#X obj 38 54 route bang; -#X obj 37 134 tabwrite~ \$0-buf; -#X obj 158 94 loadbang; -#X connect 0 0 2 0; -#X connect 1 0 3 0; -#X connect 2 0 3 0; -#X connect 2 1 1 0; -#X connect 4 0 3 0; -#X restore 487 229 pd genosc; -#X text 600 97 loop mode; -#X text 23 201 set position; -#X obj 299 426 nbx 5 14 0 1e+037 0 1 empty empty min 0 -6 0 10 -262131 --1 -1 1004 256; -#X obj 356 426 nbx 5 14 0 1e+037 0 1 empty empty max 0 -6 0 10 -262131 --1 -1 8996 256; -#X obj 298 309 nbx 5 14 0 1e+037 0 1 empty empty min 0 -6 0 10 -225271 --1 -1 1004 256; -#X obj 355 309 nbx 5 14 0 1e+037 0 1 empty empty max 0 -6 0 10 -225271 --1 -1 8996 256; -#X text 244 95 frames (def.); -#X text 377 96 units in buffer (def.); -#X text 622 132 forward (def.); -#X text 768 132 4-point (def.); -#N canvas 12 194 490 407 attributes 0; -#X msg 82 74 getattributes; -#X msg 138 133 getmax; -#X msg 81 133 getmin; -#X text 198 75 dump all attributes; -#X text 200 135 get min/max positions; -#X msg 82 105 getbuffer; -#X msg 80 162 getpos; -#X text 140 162 get current position; -#X text 167 105 get buffer name; -#X msg 79 251 getloop; -#X msg 79 276 getinterp; -#X text 147 251 get loop mode; -#X text 160 276 get interpolation mode; -#X msg 79 197 getunits; -#X text 152 197 get unit setting; -#X msg 79 222 getsclmode; -#X text 170 222 get scale mode; -#X msg 79 315 getxfade; -#X msg 78 365 getxshape; -#X text 157 315 get crossfade mode; -#X msg 79 340 getxzone; -#X text 154 340 get crossfade length; -#X text 156 367 get crossfade shape; -#X text 19 12 xgroove~ attributes; -#X obj 19 195 s to-g; -#X msg 82 49 getmethods; -#X text 174 49 dump all methods; -#X connect 0 0 24 0; -#X connect 1 0 24 0; -#X connect 2 0 24 0; -#X connect 5 0 24 0; -#X connect 6 0 24 0; -#X connect 9 0 24 0; -#X connect 10 0 24 0; -#X connect 13 0 24 0; -#X connect 15 0 24 0; -#X connect 17 0 24 0; -#X connect 18 0 24 0; -#X connect 20 0 24 0; -#X connect 25 0 24 0; -#X restore 24 343 pd attributes; -#X text 23 324 attribute stuff; -#X text 484 177 generate; -#X obj 26 10 cnv 15 850 40 empty empty xgroove~ 10 22 0 24 -260818 --1 0; -#X msg 105 221 1000; -#X msg 96 249 posmod \$1; -#X text 146 227 modulo; -#X text 301 439 min/max points; -#X text 299 454 (sample rounded); -#X obj 603 120 vradio 15 1 0 3 empty empty empty 0 -6 0 8 -225271 -1 --1 0; -#X obj 749 119 vradio 15 1 0 3 empty empty empty 0 -6 0 8 -225271 -1 --1 0; -#X obj 225 99 vradio 15 1 0 4 empty empty empty 0 -6 0 8 -225271 -1 --1 0; -#X obj 358 99 vradio 15 1 0 4 empty empty empty 0 -6 0 8 -225271 -1 --1 0; -#X obj 65 164 s to-g; -#X obj 298 197 s to-g; -#X obj 61 278 s to-g; -#X obj 180 304 r to-g; -#X obj 704 201 s to-g; -#X obj 191 349 xgroove~ \$0-buf; -#X text 227 29 http://grrrr.org/ext; -#X obj 79 550 line~; -#X msg 79 527 \$1 50; -#X obj 212 271 nbx 5 14 -1e+037 1e+037 0 0 empty empty empty 0 -6 0 -10 -225271 -1 -1 0.0233854 256; -#X text 227 10 varispeed sample player \, (C)2001-2005 Thomas Grill -; -#X connect 0 0 82 0; -#X connect 1 0 77 0; -#X connect 2 0 73 0; -#X connect 3 0 73 0; -#X connect 6 0 73 0; -#X connect 10 0 73 0; -#X connect 12 0 77 0; -#X connect 13 0 78 0; -#X connect 19 0 74 0; -#X connect 20 0 74 0; -#X connect 25 0 49 0; -#X connect 28 0 5 0; -#X connect 28 0 5 1; -#X connect 29 0 30 0; -#X connect 30 0 81 0; -#X connect 31 0 75 0; -#X connect 32 0 31 0; -#X connect 33 0 31 0; -#X connect 34 0 49 0; -#X connect 47 0 46 0; -#X connect 54 0 78 1; -#X connect 55 0 78 2; -#X connect 64 0 65 0; -#X connect 65 0 75 0; -#X connect 69 0 1 0; -#X connect 70 0 12 0; -#X connect 71 0 19 0; -#X connect 72 0 20 0; -#X connect 76 0 78 0; -#X connect 78 0 28 0; -#X connect 78 0 47 0; -#X connect 78 1 47 1; -#X connect 78 2 52 0; -#X connect 78 3 53 0; -#X connect 78 4 40 0; -#X connect 78 5 26 0; -#X connect 80 0 28 1; -#X connect 81 0 80 0; -#X connect 82 0 78 0; diff --git a/externals/grill/xsample/pd/xplay~-help.pd b/externals/grill/xsample/pd/xplay~-help.pd deleted file mode 100644 index a079a361..00000000 --- a/externals/grill/xsample/pd/xplay~-help.pd +++ /dev/null @@ -1,123 +0,0 @@ -#N canvas 165 149 716 444 12; -#X obj 21 75 bng 15 250 50 0 empty empty empty 20 8 0 8 -258699 -1 --1; -#X msg 21 95 stop; -#X msg 107 99 reset; -#X text 43 72 start; -#X text 60 93 stop; -#X obj 159 217 *~ 300; -#X text 161 239 position signal; -#X msg 107 75 help; -#N canvas 0 0 450 300 graph7 0; -#X array \$0-buf 300 float 1; -#A 0 -0.445589 -0.568192 -0.679282 -0.776596 -0.858191 -0.922374 -0.967874 --0.99377 -0.999505 -0.985009 -0.950534 -0.896801 -0.824907 -0.736274 --0.632737 -0.516371 -0.38954 -0.254823 -0.114932 0.0272834 0.168947 -0.307184 0.439204 0.562312 0.674031 0.772096 0.854499 0.919606 0.966059 -0.992941 0.999714 0.986201 0.952726 0.899931 0.8289 0.741087 0.638231 -0.522457 0.396092 0.261698 0.122005 -0.0201642 -0.161923 -0.300402 --0.432789 -0.556415 -0.668753 -0.767544 -0.85079 -0.916775 -0.964202 --0.992074 -0.999845 -0.987371 -0.954858 -0.903018 -0.832869 -0.74584 --0.643712 -0.528517 -0.402624 -0.268571 -0.129073 0.013039 0.154887 -0.293596 0.426359 0.550472 0.663443 0.762958 0.847014 0.913919 0.962278 -0.991158 0.999942 0.988459 0.956966 0.906048 0.836789 0.75057 0.649134 -0.534557 0.409131 0.275422 0.136132 -0.00591801 -0.147849 -0.286781 --0.419902 -0.544521 -0.658091 -0.758339 -0.84321 -0.910993 -0.960333 --0.990181 -0.999986 -0.989519 -0.958993 -0.909055 -0.840666 -0.755257 --0.654544 -0.540557 -0.415628 -0.282266 -0.143188 -0.00120819 0.140795 -0.279949 0.413425 0.538524 0.652719 0.753668 0.83936 0.908035 0.958306 -0.989179 0.999971 0.99052 0.960994 0.911984 0.844512 0.759903 0.659907 -0.54654 0.422089 0.289093 0.150232 0.00832932 -0.133744 -0.273102 -0.406932 --0.532511 -0.647298 -0.748981 -0.835462 -0.90503 -0.956253 -0.988091 --0.999927 -0.991469 -0.962937 -0.914892 -0.848294 -0.764525 -0.665244 --0.55249 -0.428544 -0.295904 -0.157275 -0.015455 0.126676 0.266245 -0.400409 0.526467 0.641853 0.744228 0.831539 0.901971 0.954143 0.986978 -0.999801 0.992384 0.96483 0.917738 0.852053 0.769085 0.67055 0.558412 -0.434962 0.302703 0.164301 0.0225751 -0.11961 -0.25937 -0.393881 -0.520396 --0.636376 -0.739458 -0.827548 -0.898887 -0.951984 -0.985804 -0.99965 --0.993222 -0.966689 -0.920545 -0.855754 -0.773631 -0.675811 -0.564313 --0.441369 -0.309483 -0.171329 -0.0296987 0.112532 0.252482 0.387314 -0.514306 0.63086 0.73464 0.823534 0.895727 0.94979 0.984581 0.999431 -0.994035 0.968475 0.92331 0.859418 0.778115 0.681053 0.570172 0.447749 -0.316248 0.178338 0.0368166 -0.105453 -0.245585 -0.380741 -0.508177 --0.625327 -0.729788 -0.819469 -0.892548 -0.947524 -0.98332 -0.999169 --0.994777 -0.970238 -0.926013 -0.863044 -0.782573 -0.686245 -0.576021 --0.454107 -0.323001 -0.185347 -0.0439363 0.0983649 0.23867 0.374141 -0.502032 0.619741 0.724906 0.815363 0.889305 0.945234 0.981988 0.998863 -0.99548 0.971926 0.928692 0.866611 0.786989 0.69141 0.581818 0.460448 -0.32973 0.19234 0.0510499 -0.0912742 -0.231752 -0.367527 -0.495857 --0.614144 -0.719972 -0.811227 -0.886027 -0.942877 -0.980632 -0.998489 --0.996135 -0.973581 -0.931298 -0.87016 -0.79136 -0.696541 -0.587603 --0.466754 -0.336455 -0.199327 -0.0581653 0.0841763 0.22481 0.360894 -0.489656 0.608499 0.715018 0.80703 0.882706 0.940481 0.979199 0.998091 -0.996726 0.975184 0.933873 0.873632 0.795706; -#X coords 0 1 299 -1 300 200 1; -#X restore 370 80 graph; -#X obj 162 174 hsl 128 15 1 100 1 1 empty empty speed 0 -8 0 10 -225271 --1 -1 9300 1; -#X msg 107 123 print; -#X obj 159 194 phasor~ 100; -#X obj 180 311 print A; -#X obj 37 389 dac~; -#X obj 46 358 *~; -#X obj 87 360 hsl 128 15 0.0001 1 1 0 empty empty volume -2 -6 0 8 --261689 -1 -1 0 1; -#X obj 84 378 nbx 5 14 -1e+037 1e+037 0 0 empty empty empty 0 -6 0 -10 -261689 -1 -1 0 256; -#X obj 21 10 cnv 15 650 40 empty empty xplay~ 10 22 0 24 -260818 -1 -0; -#N canvas 0 0 450 300 graph2 0; -#X array \$0-scp 300 float 0; -#X coords 0 1 299 -1 300 100 1; -#X restore 370 294 graph; -#N canvas 0 0 265 143 watch 0; -#X obj 100 13 loadbang; -#X obj 101 39 metro 50; -#X obj 22 14 inlet~; -#X obj 22 94 tabwrite~ \$0-scp; -#X connect 0 0 1 0; -#X connect 1 0 3 0; -#X connect 2 0 3 0; -#X restore 90 310 pd watch; -#N canvas 33 327 454 231 attributes 0; -#X msg 85 60 getattributes; -#X obj 22 181 s to; -#X text 203 61 dump all attributes; -#X msg 85 91 getbuffer; -#X text 170 91 get buffer name; -#X msg 84 186 getinterp; -#X text 165 186 get interpolation mode; -#X msg 85 130 getunits; -#X text 158 130 get unit setting; -#X msg 85 155 getsclmode; -#X text 176 155 get scale mode; -#X text 21 15 xplay~ attributes; -#X connect 0 0 1 0; -#X connect 3 0 1 0; -#X connect 5 0 1 0; -#X connect 7 0 1 0; -#X connect 9 0 1 0; -#X restore 22 210 pd attributes; -#X text 21 192 attributes; -#X obj 21 154 s to-p; -#X obj 21 250 r to-p; -#X obj 81 280 xplay~ \$0-buf; -#X text 180 29 http://grrrr.org/ext; -#X text 179 11 buffer-based sample player \, (C)2001-2005 Thomas Grill -; -#X connect 0 0 22 0; -#X connect 1 0 22 0; -#X connect 2 0 22 0; -#X connect 5 0 24 0; -#X connect 7 0 22 0; -#X connect 9 0 11 0; -#X connect 10 0 22 0; -#X connect 11 0 5 0; -#X connect 14 0 13 0; -#X connect 14 0 13 1; -#X connect 15 0 16 0; -#X connect 16 0 14 1; -#X connect 23 0 24 0; -#X connect 24 0 14 0; -#X connect 24 0 19 0; -#X connect 24 1 12 0; diff --git a/externals/grill/xsample/pd/xrecord~-help.pd b/externals/grill/xsample/pd/xrecord~-help.pd deleted file mode 100644 index cccbdee9..00000000 --- a/externals/grill/xsample/pd/xrecord~-help.pd +++ /dev/null @@ -1,168 +0,0 @@ -#N canvas 58 17 877 659 12; -#X obj 18 83 bng 15 250 50 0 empty empty empty 20 8 0 8 -258699 -1 --1; -#X msg 17 103 stop; -#N canvas 0 0 450 300 graph7 0; -#X array \$0-buf 10000 float 0; -#X coords 0 1 9999 -1 200 140 1; -#X restore 61 477 graph; -#X msg 15 137 reset; -#X obj 74 355 snapshot~; -#X floatatom 76 380 7 0 0 0 - - -; -#X obj 22 288 loadbang; -#X msg 14 167 help; -#X obj 179 164 tgl 15 1 empty empty empty 20 8 0 8 -225271 -1 -1 1 -1; -#X msg 197 161 loop \$1; -#X msg 177 104 0; -#X msg 213 104 200; -#X msg 176 132 draw \$1; -#X obj 427 332 bng 15 250 50 0 empty empty empty 20 8 0 8 -258699 -1 --1; -#X msg 426 352 stop; -#X msg 425 391 reset; -#X obj 516 575 snapshot~; -#X floatatom 516 605 7 0 0 0 - - -; -#X obj 427 503 loadbang; -#X obj 553 299 tgl 15 1 empty empty empty 20 8 0 8 -225271 -1 -1 1 -1; -#X msg 572 296 loop \$1; -#X msg 468 263 0; -#X msg 467 291 draw \$1; -#X obj 554 322 tgl 15 1 empty empty empty 20 8 0 8 -225271 -1 -1 1 -1; -#X msg 572 320 sigmode \$1; -#X msg 425 417 print; -#X obj 579 425 hsl 128 15 -0.001 1 0 1 empty empty empty 20 8 0 8 -225271 --1 -1 2800 1; -#X msg 601 347 mixmode \$1; -#X floatatom 645 443 8 0 0 0 - - -; -#X obj 427 530 metro 30; -#X obj 22 315 metro 30; -#X obj 681 86 osc~ 10; -#X obj 90 146 r~ rec; -#X obj 498 396 r~ rec; -#X obj 667 149 s~ rec; -#X obj 664 113 *~ 1; -#X obj 663 90 tgl 15 1 empty empty empty 20 8 0 8 -225271 -1 -1 1 1 -; -#X obj 760 115 *~ 1; -#X obj 759 92 tgl 15 0 empty empty empty 20 8 0 8 -225271 -1 -1 0 1 -; -#X obj 777 88 adc~; -#X text 266 164 looping on/off; -#X text 241 133 display refresh; -#X text 56 81 start; -#X text 57 103 stop; -#X text 30 338 position signal; -#X text 635 295 looping on/off; -#X text 660 321 signal mode on/off; -#X text 714 436 trigger signal; -#X text 383 189 <----- message triggered; -#X text 187 439 signal triggered ------->; -#X text 509 242 click to activate auto update; -#X text 448 328 start; -#X text 466 352 stop; -#X msg 152 239 all; -#X msg 504 263 100; -#X obj 554 497 line~; -#X msg 554 472 \$1 20; -#X msg 13 203 getattributes; -#X obj 236 281 print A; -#X msg 14 231 getbuffer; -#X obj 583 116 *~ 1; -#X obj 582 93 tgl 15 1 empty empty empty 20 8 0 8 -225271 -1 -1 0 1 -; -#X obj 602 89 noise~; -#X obj 554 349 hradio 15 1 0 3 empty empty empty 0 -6 0 8 -225271 -1 --1 0; -#X text 575 366 mixmode (off \, mix-in \, add); -#X text 582 396 by the trigger signal; -#X text 581 383 the amount of mixing-in is given; -#X obj 95 280 xrecord~ \$0-buf; -#X obj 516 529 xrecord~ \$0-buf; -#X obj 18 12 cnv 15 800 40 empty empty xrecord~ 10 22 0 24 -260818 --1 0; -#X text 202 253 min/max points; -#X obj 201 241 nbx 5 14 0 1e+037 0 1 empty empty min 0 -6 0 10 -225271 --1 -1 0 256; -#X obj 258 241 nbx 5 14 0 1e+037 0 1 empty empty max 0 -6 0 10 -225271 --1 -1 10002 256; -#X obj 190 365 nbx 5 14 0 1e+037 0 1 empty empty min 0 -6 0 10 -262131 --1 -1 0 256; -#X obj 247 365 nbx 5 14 0 1e+037 0 1 empty empty max 0 -6 0 10 -262131 --1 -1 10000 256; -#X text 192 378 min/max points; -#X obj 224 321 bng 15 250 50 0 empty empty loop_bang 0 -6 0 8 -262131 --1 -1; -#X text 294 284 print attributes; -#X obj 617 574 nbx 5 14 0 1e+037 0 1 empty empty min 0 -6 0 10 -262131 --1 -1 0 256; -#X obj 674 574 nbx 5 14 0 1e+037 0 1 empty empty max 0 -6 0 10 -262131 --1 -1 10000 256; -#X obj 618 500 nbx 5 14 0 1e+037 0 1 empty empty min 0 -6 0 10 -225271 --1 -1 0 256; -#X obj 675 500 nbx 5 14 0 1e+037 0 1 empty empty max 0 -6 0 10 -225271 --1 -1 10000 256; -#X text 224 31 http://grrrr.org/ext; -#X text 224 12 buffer-based signal recorder \, (C)2001-2005 Thomas -Grill; -#X connect 0 0 67 0; -#X connect 1 0 67 0; -#X connect 3 0 67 0; -#X connect 4 0 5 0; -#X connect 6 0 30 0; -#X connect 7 0 67 0; -#X connect 8 0 9 0; -#X connect 9 0 67 0; -#X connect 10 0 12 0; -#X connect 11 0 12 0; -#X connect 12 0 67 0; -#X connect 13 0 68 0; -#X connect 14 0 68 0; -#X connect 15 0 68 0; -#X connect 16 0 17 0; -#X connect 18 0 29 0; -#X connect 19 0 20 0; -#X connect 20 0 68 0; -#X connect 21 0 22 0; -#X connect 22 0 68 0; -#X connect 23 0 24 0; -#X connect 24 0 68 0; -#X connect 25 0 68 0; -#X connect 26 0 28 0; -#X connect 26 0 56 0; -#X connect 27 0 68 0; -#X connect 29 0 16 0; -#X connect 30 0 4 0; -#X connect 31 0 35 0; -#X connect 32 0 67 0; -#X connect 33 0 68 0; -#X connect 35 0 34 0; -#X connect 36 0 35 1; -#X connect 37 0 34 0; -#X connect 38 0 37 1; -#X connect 39 0 37 0; -#X connect 39 1 37 0; -#X connect 53 0 67 0; -#X connect 54 0 22 0; -#X connect 55 0 68 1; -#X connect 56 0 55 0; -#X connect 57 0 67 0; -#X connect 59 0 67 0; -#X connect 60 0 34 0; -#X connect 61 0 60 1; -#X connect 62 0 60 0; -#X connect 63 0 27 0; -#X connect 67 0 4 0; -#X connect 67 1 73 0; -#X connect 67 2 74 0; -#X connect 67 3 76 0; -#X connect 67 4 58 0; -#X connect 68 0 16 0; -#X connect 68 1 78 0; -#X connect 68 2 79 0; -#X connect 71 0 67 2; -#X connect 72 0 67 3; -#X connect 80 0 68 2; -#X connect 81 0 68 3; diff --git a/externals/grill/xsample/readme.txt b/externals/grill/xsample/readme.txt deleted file mode 100644 index 86b96d76..00000000 --- a/externals/grill/xsample/readme.txt +++ /dev/null @@ -1,172 +0,0 @@ -xsample - extended sample objects for Max/MSP and PD (pure data) - -Copyright (c)2001-2006 Thomas Grill (gr@grrrr.org) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. - ----------------------------------------------------------------------------- - -Maximum care has been taken to prepare a delightful experience for you electronic artists. -Donations for further development of the package are HIGHLY APPRECIATED. - -Visit https://www.paypal.com/xclick/business=gr%40grrrr.org&item_name=xsample&no_note=1&tax=0¤cy_code=EUR - ----------------------------------------------------------------------------- - -IMPORTANT INFORMATION for all Max/MSP users: - -1) -For Mac OSX it is best to put the max-darwin/xsample.mxd file into the folder -/Library/Application Support/Cycling '74/externals -and the file maxmsp/xsample-objectmappings.txt into the folder -/Library/Application Support/Cycling '74/init . - -For Windows put the max-msvc\xsample.mxe file into the folder -C:\program files\common files\Cycling '74\externals (english version) -and the file maxmsp/xsample-objectmappings.txt in -C:\program files\common files\Cycling '74\init (english version) - -Put the maxmsp/xsample.help file into the max-help folder. - -2) -Alternatively (or for OS9) it is advisable to put the xsample.mxd or xsample.mxe file -into the "max-startup" folder. Hence it will be loaded at Max startup. - ----------------------------------------------------------------------------- - -IMPORTANT INFORMATION for all PD users: - -xsample is a library containing several external objects. You should load it at PD startup -by adding "-lib xsample" to the PD command line. -(If you forgot to do that, you can load the library by creating an [xsample] dummy object. - ----------------------------------------------------------------------------- - - -BUILDING XSAMPLE from source ----------------------------- - -You will need the flext C++ layer for PD and Max/MSP externals to compile this. -See http://grrrr.org/ext/flext -Download, install and compile the package. -Afterwards you can proceed with building xsample. - - -pd/Max - Windows - Microsoft Visual C, Borland C++, MinGW: ----------------------------------------------------------- -Start a command shell with your eventual build environment -(e.g. run vcvars32.bat for Microsoft Visual Studio) - -then run - ..\flext\build.bat -(you would have to substitute ..\flext with the respective path to the flext package) - - -pd/Max - OSX/Linux - GCC: -------------------------- -From a shell run -bash ../flext/build.sh -(you would have to substitute ../flext with the respective path to the flext package) - - -Max - OS9 - Metrowerks CodeWarrior: ------------------------------------ -use the "xsample.mcp" project file - ----------------------------------------------------------------------------- - - -Goals/features of the package: - -- portable and effective sample recording/playing objects for pd and Max/MSP -- MSP-like groove~ object for PD -- message- or signal-triggered recording object with mix-in capability -- avoid the various bugs of the original MSP2 objects -- multi-channel capability -- live update of respective buffer/array content -- switchable 4-point or linear interpolation for xplay~/xgroove~ object -- cross-fading loop zone for xgroove~ - ----------------------------------------------------------------------------- - -Version history: - -0.3.1: -- added mixmode=2 to Max/MSP help files -- fixed limit consideration for loopmode=0 and 2. -- fixed buggy sampling in crossfade zones (and simplified it a lot) -- different initialization on buffer absence -- renew units and scalemode on buffer change -- fixed looped recording bug (thanks to Tatama Suomo) -- reconsidered all state changes -- more optimizations for interpolation functions -- use the new flext build system -- use branch hints - -0.3.0: -- added resources to MaxMSP build -- xgroove~, xrecord~: introduced a loop/end bang outlet -- added MaxMSP buffer resize recognition -- xgroove~: introduced crossfading loop zones -- adapted source for flext 0.4.1 - most methods within class scope -- introduced attributes -- restructured make procedures -- corrected names of PD makefile, set help names -- fixed scale mode bug with xgroove~ -- added validity check for buffers -- Max/MSP OSX: new file xsample-objectmappings.txt fixes load of library on finding correct helpfiles! -- makefiles for command line MSVC++, BCC, cygwin GCC -- better handling of non-existent buffers -- fixed flext-related error on setting buffers -- xrecord~: mixmode has now 3 states (off, mix-in, add) - -0.2.4: -- according to flext 0.2.3 changed sample type to t_sample (S) -- xrecord~: fixed mix mode bug -- fixed argument buffer problem - -0.2.3: -- using flext 0.2.2 - xsample is now a library under MaxMSP -- cleaner gcc makefile -- xgroove~, xrecord~: added "all" message to select entire buffer length -- xgroove~, xplay~: revisited dsp methods, restructured the code, fixed small interpolation bugs -- xgroove~, xplay~: added linear interpolation (message "interp 2") -- enabled 0 output channels -> xgroove~: position output only -- xgroove~: added bidirectional looping (message "loop 2") - -0.2.2: -- using flext 0.2.0 -- xrecord~ for PD: new flext brings better graphics update behavior -- xrecord~: recording position doesn't jump to start when recording length is reached -- fixed bug with refresh message (min/max reset) -- xgroove~: position (by pos message) isn't sample rounded anymore -- reset/refresh messages readjust dsp routines to current buffer format (e.g. channel count) -- corrected Max/MSP assist method for multi-channel -- fixed xplay~ help method -- changed syntax to x*~ [channels=1] [buffer] for future enhancements (MaxMSP only, warning for old syntax) -- fixed small bug concerning startup position in xgroove~ and xrecord~ -- fixed deadly bug in xplay~ dsp code (only active with template optimization) - -0.2.1: -- no leftmost float inlet for position setting - use pos method -- changed dsp handling for flext 0.1.1 conformance -- workarounds for buggy/incomplete compilers -- prevent buffer warning message at patcher load (wait for loadbang) -- fixed bug: current pos is reset when changing min or max points - -0.2.0: -- first version for flext - ---------------------------------------------------------------------------- - -TODO list: - -features: -- multi-buffer handling (aka multi-channel for pd) -- anti-alias filter? (possible?) - -- delay min/max changes when cur pos in cross-fade zone - -bugs: -- PD: problems with timed buffer redrawing (takes a lot of cpu time) - flext bug? -- Max help files aren't correctly opened due to xsample objects residing in a library (FIXED for OSX!!!) diff --git a/externals/grill/xsample/source/groove.cpp b/externals/grill/xsample/source/groove.cpp deleted file mode 100644 index c989156e..00000000 --- a/externals/grill/xsample/source/groove.cpp +++ /dev/null @@ -1,810 +0,0 @@ -/* -xsample - extended sample objects for Max/MSP and pd (pure data) - -Copyright (c) 2001-2007 Thomas Grill (gr@grrrr.org) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. -*/ - -#ifdef _MSC_VER -#define _USE_MATH_DEFINES -#endif - -#include "main.h" -#include -#include - -#ifdef _MSC_VER -#pragma warning (disable:4244) -#endif - -#ifndef M_PI -#define M_PI 3.141592653589793238462643383 -#endif - -#define XZONE_TABLE 512 - - -class xgroove: - public xinter -{ - FLEXT_HEADER_S(xgroove,xinter,setup) - -public: - xgroove(int argc,const t_atom *argv); - virtual ~xgroove(); - - void m_pos(float pos) - { - setpos(LIKELY(s2u)?pos/s2u:0); - Update(xsc_pos,true); - } - - inline void m_posmod(float pos) { setposmod(LIKELY(pos)?pos/s2u:0); } // motivated by Tim Blechmann - - inline void mg_pos(float &v) const { v = curpos*s2u; } - - - enum xs_fade { - xsf_keeplooppos = 0,xsf_keeplooplen,xsf_keepfade,xsf_inside - }; - - enum xs_shape { - xss_lin = 0,xss_qsine,xss_hsine - }; - - - void ms_xfade(int xf) - { - if(xf < 0 || xf > xsf_inside) xf = xsf_keeplooppos; - xfade = (xs_fade)xf; - Update(xsc_fade,true); - } - - void ms_xshape(int sh); - - void ms_xzone(float xz); - void mg_xzone(float &xz) { xz = _xzone*s2u; } - - void m_loop(xs_loop lp) - { - loopmode = lp,bidir = 1; - Update(xsc_loop,true); - } - -protected: - - double curpos; // in samples - float bidir; // +1 or -1 - - float _xzone,xzone; - long znsmin,znsmax; - xs_fade xfade; - int xshape; - t_sample **znbuf; - t_sample *znpos,*znmul,*znidx; - int pblksz; - - inline void setpos(double pos) - { - if(UNLIKELY(pos < znsmin)) curpos = znsmin; - else if(UNLIKELY(pos > znsmax)) curpos = znsmax; - else curpos = pos; - } - - inline void setposmod(double pos) - { - if(pos >= 0) - curpos = znsmin+fmod(pos,znsmax-znsmin); - else - curpos = znsmax+fmod(pos,znsmax-znsmin); - } - - virtual void DoReset(); - virtual void DoUpdate(unsigned int flags); - - virtual void CbSignal(); - - virtual void m_help(); - virtual void m_print(); - -private: - static void setup(t_classid c); - - //! return true if something has changed - bool do_xzone(); - - DEFSIGFUN(s_pos_off); - DEFSIGFUN(s_pos_once); - DEFSIGFUN(s_pos_loop); - DEFSIGFUN(s_pos_loopzn); - DEFSIGFUN(s_pos_bidir); - - DEFSIGCALL(posfun); - DEFSTCALL(zonefun); - - static t_sample fade_lin[],fade_qsine[],fade_hsine[]; - - FLEXT_CALLBACK_F(m_pos) - FLEXT_CALLBACK_F(m_posmod) - FLEXT_CALLBACK_F(m_min) - FLEXT_CALLBACK_F(m_max) - FLEXT_CALLBACK(m_all) - - FLEXT_CALLSET_E(m_loop,xs_loop) - - FLEXT_CALLSET_I(ms_xfade) - FLEXT_ATTRGET_I(xfade) - FLEXT_CALLSET_I(ms_xshape) - FLEXT_ATTRGET_I(xshape) - FLEXT_CALLSET_F(ms_xzone) - FLEXT_CALLGET_F(mg_xzone) - - FLEXT_CALLVAR_F(mg_pos,m_pos) - FLEXT_CALLSET_F(m_min) - FLEXT_CALLSET_F(m_max) -}; - - -FLEXT_LIB_DSP_V("xgroove~",xgroove) - - -t_sample xgroove::fade_lin[XZONE_TABLE+1]; -t_sample xgroove::fade_qsine[XZONE_TABLE+1]; -t_sample xgroove::fade_hsine[XZONE_TABLE+1]; - -void xgroove::setup(t_classid c) -{ - DefineHelp(c,"xgroove~"); - - FLEXT_CADDMETHOD_(c,0,"all",m_all); - FLEXT_CADDMETHOD(c,1,m_min); - FLEXT_CADDMETHOD(c,2,m_max); - - FLEXT_CADDATTR_VAR(c,"min",mg_min,m_min); - FLEXT_CADDATTR_VAR(c,"max",mg_max,m_max); - FLEXT_CADDATTR_VAR(c,"pos",mg_pos,m_pos); - FLEXT_CADDMETHOD_(c,0,"posmod",m_posmod); - - FLEXT_CADDATTR_VAR_E(c,"loop",loopmode,m_loop); - - FLEXT_CADDATTR_VAR(c,"xfade",xfade,ms_xfade); - FLEXT_CADDATTR_VAR(c,"xzone",mg_xzone,ms_xzone); - FLEXT_CADDATTR_VAR(c,"xshape",xshape,ms_xshape); - - // initialize fade tables - for(int i = 0; i <= XZONE_TABLE; ++i) { - const float x = i*(1.f/XZONE_TABLE); - // linear - fade_lin[i] = x; - - // quarter sine wave - fade_qsine[i] = sin(x*(M_PI/2)); - - // half sine wave - fade_hsine[i] = (sin(x*M_PI-M_PI/2)+1.f)*0.5f; - } -} - -xgroove::xgroove(int argc,const t_atom *argv): - curpos(0),bidir(1), - _xzone(0),xzone(0), - xfade(xsf_keeplooppos),xshape(xss_lin), - znpos(NULL),znmul(NULL),znidx(NULL), - pblksz(0) -{ - int argi = 0; -#if FLEXT_SYS == FLEXT_SYS_MAX - if(argc > argi && CanbeInt(argv[argi])) { - outchns = GetAInt(argv[argi]); - argi++; - } -#endif - - if(argc > argi && IsSymbol(argv[argi])) { - - buf.Set(GetSymbol(argv[argi]),true); - argi++; - -#if FLEXT_SYS == FLEXT_SYS_MAX - // old-style command line? - if(UNLIKELY(argi == 1 && argc == 2 && CanbeInt(argv[argi]))) { - outchns = GetAInt(argv[argi]); - argi++; - post("%s: old style command line detected - please change to '%s [channels] [buffer]'",thisName(),thisName()); - } -#endif - } - - AddInSignal("Signal of playing speed"); // speed signal - AddInFloat("Starting point"); // min play pos - AddInFloat("Ending point"); // max play pos - for(int ci = 0; ci < outchns; ++ci) { - char tmp[30]; - STD::sprintf(tmp,"Audio signal channel %i",ci+1); - AddOutSignal(tmp); // output - } - AddOutSignal("Position currently played"); // position - AddOutFloat("Starting point (rounded to frame)"); // play min - AddOutFloat("Ending point (rounded to frame)"); // play max - AddOutBang("Bang on loop end/rollover"); // loop bang - - // don't know vector size yet -> wait for m_dsp - znbuf = new t_sample *[outchns]; - for(int i = 0; i < outchns; ++i) znbuf[i] = NULL; - - // initialize crossfade shape - ms_xshape(xshape); -} - -xgroove::~xgroove() -{ - if(znbuf) { - for(int i = 0; i < outchns; ++i) if(znbuf[i]) FreeAligned(znbuf[i]); - delete[] znbuf; - } - - if(znpos) FreeAligned(znpos); - if(znidx) FreeAligned(znidx); -} - -void xgroove::DoReset() -{ - xinter::DoReset(); - curpos = 0; - bidir = 1; -} - -void xgroove::ms_xzone(float xz) -{ - ChkBuffer(true); - - _xzone = (UNLIKELY(xz < 0) || UNLIKELY(!s2u))?0:xz/s2u; - Update(xsc_fade,true); -} - -void xgroove::ms_xshape(int sh) -{ - if(UNLIKELY(sh < 0) || UNLIKELY(sh > xss_hsine)) sh = xss_lin; - - xshape = (xs_shape)sh; - switch(xshape) { - case xss_qsine: znmul = fade_qsine; break; - case xss_hsine: znmul = fade_hsine; break; - default: - post("%s - shape parameter invalid, set to linear",thisName()); - case xss_lin: - znmul = fade_lin; break; - } - - // no need to recalc the fade zone here -} - - -void xgroove::s_pos_off(int n,t_sample *const *invecs,t_sample *const *outvecs) -{ - t_sample *pos = outvecs[outchns]; - - SetSamples(pos,n,curpos); - - playfun(n,&pos,outvecs); - - SetSamples(pos,n,scale(curpos)); -} - -void xgroove::s_pos_once(int n,t_sample *const *invecs,t_sample *const *outvecs) -{ - const t_sample *speed = invecs[0]; - t_sample *pos = outvecs[outchns]; - bool lpbang = false; - - const double smin = curmin,smax = curmax,plen = smax-smin; - - if(LIKELY(plen > 0)) { - register double o = curpos; - - for(int i = 0; i < n; ++i) { - const t_sample spd = speed[i]; // must be first because the vector is reused for output! - - if(UNLIKELY(!(o < smax))) { o = smax; lpbang = true; } - else if(UNLIKELY(o < smin)) { o = smin; lpbang = true; } - - pos[i] = o; - o += spd; - } - // normalize and store current playing position - setpos(o); - - playfun(n,&pos,outvecs); - - arrscale(n,pos,pos); - } - else - s_pos_off(n,invecs,outvecs); - - if(UNLIKELY(lpbang)) { - doplay = false; - ToOutBang(outchns+3); - } -} - -void xgroove::s_pos_loop(int n,t_sample *const *invecs,t_sample *const *outvecs) -{ - const t_sample *speed = invecs[0]; - t_sample *pos = outvecs[outchns]; - bool lpbang = false; - -#ifdef __VEC__ - // prefetch cache - vec_dst(speed,GetPrefetchConstant(1,n>>2,0),0); -#endif - - const double smin = curmin,smax = curmax,plen = smax-smin; - - if(LIKELY(plen > 0)) { - register double o = curpos; - - if(wrap && UNLIKELY(smin < 0) && UNLIKELY(smax >= buf.Frames())) { - for(int i = 0; i < n; ++i) { - const t_sample spd = speed[i]; // must be first because the vector is reused for output! - - // normalize offset - if(UNLIKELY(!(o < smax))) { // faster than o >= smax - o = fmod(o-smin,plen)+smin; - lpbang = true; - } - else if(UNLIKELY(o < smin)) { - o = fmod(o-smin,plen)+smax; - lpbang = true; - } - - // TODO normalize to 0...buf.Frames() - pos[i] = o; - o += spd; - } - } - else { - /////////////////////////////////// - // Most of the time is spent in here - /////////////////////////////////// - for(int i = 0; i < n; ++i) { - const t_sample spd = speed[i]; // must be first because the vector is reused for output! - - // normalize offset - if(UNLIKELY(!(o < smax))) { // faster than o >= smax - o = fmod(o-smin,plen)+smin; - lpbang = true; - } - else if(UNLIKELY(o < smin)) { - o = fmod(o-smin,plen)+smax; - lpbang = true; - } - - pos[i] = o; - o += spd; - } - } - - // normalize and store current playing position - setpos(o); - - playfun(n,&pos,outvecs); - - arrscale(n,pos,pos); - } - else - s_pos_off(n,invecs,outvecs); - -#ifdef __VEC__ - vec_dss(0); -#endif - - if(UNLIKELY(lpbang)) ToOutBang(outchns+3); -} - -void xgroove::s_pos_loopzn(int n,t_sample *const *invecs,t_sample *const *outvecs) -{ - const t_sample *speed = invecs[0]; - t_sample *pos = outvecs[outchns]; - bool lpbang = false; - - FLEXT_ASSERT(xzone); - - const float xz = xzone,xf = (float)XZONE_TABLE/xz; - - // adapt the playing bounds to the current cross-fade zone - const long smin = znsmin,smax = znsmax,plen = smax-smin; - - // temporary storage - const long cmin = curmin,cmax = curmax; - // hack -> set curmin/curmax to loop extremes so that sampling functions (playfun) don't get confused - curmin = smin,curmax = smax; - - if(LIKELY(plen > 0)) { - bool inzn = false; - register double o = curpos; - - // calculate inner cross-fade boundaries - const double lmin = smin+xz,lmax = smax-xz,lsh = lmax-lmin+xz; - const double lmin2 = lmin-xz/2,lmax2 = lmax+xz/2; - - for(int i = 0; i < n; ++i) { - // normalize offset - if(UNLIKELY(o < smin)) { - o = fmod(o-smin,plen)+smax; - lpbang = true; - } - else if(UNLIKELY(!(o < smax))) { - o = fmod(o-smin,plen)+smin; - lpbang = true; - } - - if(UNLIKELY(o < lmin)) { - register float inp; - if(o < lmin2) { - // in first half of early cross-fade zone - // this happens only once, then the offset is normalized to the end - // of the loop (before mid of late crossfade) - - o += lsh; - // now lmax <= o <= lmax2 - lpbang = true; - - inp = xz-(float)(o-lmax); // 0 <= inp < xz - znpos[i] = lmin-inp; - } - else { - // in second half of early cross-fade zone - - inp = xz+(float)(o-lmin); // 0 <= inp < xz - znpos[i] = lmax+inp; - } - znidx[i] = inp*xf; - inzn = true; - } - else if(UNLIKELY(!(o < lmax))) { - register float inp; - if(!(o < lmax2)) { - // in second half of late cross-fade zone - // this happens only once, then the offset is normalized to the beginning - // of the loop (after mid of early crossfade) - o -= lsh; - // now lmin2 <= o <= lmin - lpbang = true; - - inp = xz+(float)(o-lmin); // 0 <= inp < xz - znpos[i] = lmax+inp; - } - else { - // in first half of late cross-fade zone - inp = xz-(float)(o-lmax); // 0 <= inp < xz - znpos[i] = lmin-inp; - } - znidx[i] = inp*xf; - inzn = true; - } - else - znidx[i] = XZONE_TABLE,znpos[i] = 0; - - const t_sample spd = speed[i]; // must be first because the vector is reused for output! - pos[i] = o; - o += spd; - } - - // normalize and store current playing position - setpos(o); - - // calculate samples (1st voice) - playfun(n,&pos,outvecs); - - // rescale position vector - arrscale(n,pos,pos); - - if(UNLIKELY(inzn)) { - // only if we have touched the cross-fade zone - - // calculate samples in loop zone (2nd voice) - playfun(n,&znpos,znbuf); - - // calculate counterpart in loop fade - arrscale(n,znidx,znpos,XZONE_TABLE,-1); - - // calculate fade coefficients by sampling from the fade curve - zonefun(znmul,0,XZONE_TABLE+1,n,1,1,&znidx,&znidx,false); - zonefun(znmul,0,XZONE_TABLE+1,n,1,1,&znpos,&znpos,false); - - // mix voices for all channels - for(int o = 0; o < outchns; ++o) { - MulSamples(outvecs[o],outvecs[o],znidx,n); - MulSamples(znbuf[o],znbuf[o],znpos,n); - AddSamples(outvecs[o],outvecs[o],znbuf[o],n); - } - } - } - else - s_pos_off(n,invecs,outvecs); - - curmin = cmin,curmax = cmax; - - if(UNLIKELY(lpbang)) ToOutBang(outchns+3); -} - -void xgroove::s_pos_bidir(int n,t_sample *const *invecs,t_sample *const *outvecs) -{ - const t_sample *speed = invecs[0]; - t_sample *pos = outvecs[outchns]; - bool lpbang = false; - - const int smin = curmin,smax = curmax,plen = smax-smin; - - if(LIKELY(plen > 0)) { - register double o = curpos; - register float bd = bidir; - - for(int i = 0; i < n; ++i) { - const t_sample spd = speed[i]; // must be first because the vector is reused for output! - - // normalize offset - // \todo at the moment fmod doesn't take bidirectionality into account!! - if(UNLIKELY(!(o < smax))) { - o = smax-fmod(o-smax,plen); // mirror the position at smax - bd = -bd; - lpbang = true; - } - else if(UNLIKELY(o < smin)) { - o = smin+fmod(smin-o,plen); // mirror the position at smin - bd = -bd; - lpbang = true; - } - - pos[i] = o; - o += spd*bd; - } - // normalize and store current playing position - setpos(o); - - bidir = bd; - playfun(n,&pos,outvecs); - - arrscale(n,pos,pos); - } - else - s_pos_off(n,invecs,outvecs); - - if(UNLIKELY(lpbang)) ToOutBang(outchns+3); -} - -void xgroove::CbSignal() -{ - int ret = ChkBuffer(true); - - if(LIKELY(ret)) { - FLEXT_ASSERT(buf.Valid()); - - const lock_t l = Lock(); - posfun(Blocksize(),InSig(),OutSig()); - Unlock(l); - - Refresh(); - } - else - zerofun(Blocksize(),InSig(),OutSig()); -} - - -void xgroove::DoUpdate(unsigned int flags) -{ - xinter::DoUpdate(flags); - - if(flags&xsc_range) { - // output new range - ToOutFloat(outchns+1,curmin*s2u); - ToOutFloat(outchns+2,curmax*s2u); - } - - if(flags&(xsc_fade|xsc_range)) - if(do_xzone()) flags |= xsc_play; - - if(flags&(xsc_pos|xsc_range)) - // normalize position - setpos(curpos); - - // loop zone must already be set - if(flags&xsc_play) { - if(doplay) { - switch(loopmode) { - case xsl_once: - SETSIGFUN(posfun,SIGFUN(s_pos_once)); - break; - case xsl_loop: - if(xzone > 0) { - const int blksz = Blocksize(); - - if(pblksz != blksz) { - for(int o = 0; o < outchns; ++o) { - if(znbuf[o]) FreeAligned(znbuf[o]); - znbuf[o] = (t_sample *)NewAligned(blksz*sizeof(t_sample)); - } - - if(znpos) FreeAligned(znpos); - znpos = (t_sample *)NewAligned(blksz*sizeof(t_sample)); - if(znidx) FreeAligned(znidx); - znidx = (t_sample *)NewAligned(blksz*sizeof(t_sample)); - - pblksz = blksz; - } - - SETSIGFUN(posfun,SIGFUN(s_pos_loopzn)); - - // linear interpolation should be just ok for fade zone, no? - switch(outchns) { - case 1: SETSTFUN(zonefun,TMPLSTF(st_play2,1,1)); break; - case 2: SETSTFUN(zonefun,TMPLSTF(st_play2,1,2)); break; - case 4: SETSTFUN(zonefun,TMPLSTF(st_play2,1,4)); break; - default: SETSTFUN(zonefun,TMPLSTF(st_play2,1,-1)); - } - } - else - SETSIGFUN(posfun,SIGFUN(s_pos_loop)); - break; - case xsl_bidir: - SETSIGFUN(posfun,SIGFUN(s_pos_bidir)); - break; - default: ; // just to prevent warning - } - } - else - SETSIGFUN(posfun,SIGFUN(s_pos_off)); - } -} - -bool xgroove::do_xzone() -{ - // \todo do we really need this? - if(UNLIKELY(!s2u)) return false; // this can happen if DSP is off - - const long frames = buf.Frames(); - if(UNLIKELY(!frames)) return false; - - xzone = _xzone; // make a copy for changing it - - if(xfade == xsf_inside) { - // fade zone goes inside the loop -> loop becomes shorter - - // \todo what about round-off? - const long maxfd = (curmax-curmin)/2; - if(xzone > maxfd) xzone = maxfd; - - znsmin = curmin,znsmax = curmax; - } - else if(xfade == xsf_keepfade) { - // try to keep fade zone - // change of loop bounds may happen - - // restrict xzone to half of buffer - const long maxfd = frames/2; - if(xzone > maxfd) xzone = maxfd; - - // \todo what about round-off? - const long hzone = CASTINT(xzone/2.f+0.5f); - znsmin = curmin-hzone; - znsmax = curmax+hzone; - - // widen loop if xzone doesn't fit into it - // \todo check formula - long lack = CASTINT(ceil((xzone*2.f-(znsmax-znsmin))/2.f)); - if(lack > 0) znsmin -= lack,znsmax += lack; - - if(!wrap) { - // check buffer limits and shift bounds if necessary - if(znsmin < 0) { - znsmax -= znsmin; - znsmin = 0; - } - if(znsmax > frames) - znsmax = frames; - } - } - else if(xfade == xsf_keeplooplen) { - // try to keep loop length - // shifting of loop bounds may happen - - const long plen = curmax-curmin; - if(xzone > plen) xzone = plen; - const long maxfd = frames-plen; - if(xzone > maxfd) xzone = maxfd; - - // \todo what about round-off? - const long hzone = CASTINT(xzone/2.f+0.5f); - znsmin = curmin-hzone; - znsmax = curmax+hzone; - - if(!wrap) { - // check buffer limits and shift bounds if necessary - // both cases can't happen because of xzone having been limited above - if(znsmin < 0) { - znsmax -= znsmin; - znsmin = 0; - } - else if(znsmax > frames) { - znsmin -= znsmax-frames; - znsmax = frames; - } - } - } - else if(xfade == xsf_keeplooppos) { - // try to keep loop position and length - - // restrict fade zone to maximum length - const long plen = curmax-curmin; - if(xzone > plen) xzone = plen; - - // \todo what about round-off? - const long hzone = CASTINT(xzone/2.f+0.5f); - znsmin = curmin-hzone; - znsmax = curmax+hzone; - - long ovr = znsmax-frames; - if(-znsmin > ovr) ovr = -znsmin; - if(ovr > 0) { - znsmin += ovr; - znsmax -= ovr; - xzone -= ovr*2; - } - } - - FLEXT_ASSERT(znsmin <= znsmax && (znsmax-znsmin) >= xzone*2.f); - - return true; -} - - -void xgroove::m_help() -{ - post("%s - part of xsample objects, version " XSAMPLE_VERSION,thisName()); - post("(C) Thomas Grill, 2001-2007"); -#if FLEXT_SYS == FLEXT_SYS_MAX - post("Arguments: %s [channels=1] [buffer]",thisName()); -#else - post("Arguments: %s [buffer]",thisName()); -#endif - post("Inlets: 1:Messages/Speed signal, 2:Min position, 3:Max position"); - post("Outlets: 1:Audio signal, 2:Position signal, 3:Min position (rounded), 4:Max position (rounded)"); - post("Methods:"); - post("\thelp: shows this help"); - post("\tset [name] / @buffer [name]: set buffer or reinit"); - post("\tenable 0/1: turn dsp calculation off/on"); - post("\treset: reset min/max playing points and playing offset"); - post("\tprint: print current settings"); - post("\t@loop 0/1/2: sets looping to off/forward/bidirectional"); - post("\t@interp 0/1/2: set interpolation to off/4-point/linear"); - post("\t@min {unit}: set minimum playing point"); - post("\t@max {unit}: set maximum playing point"); - post("\tall: select entire buffer length"); - post("\tpos {unit}: set playing position (obeying the current scale mode)"); - post("\tposmod {unit}: set playing position (modulo into min/max range)"); - post("\tbang/start: start playing"); - post("\tstop: stop playing"); - post("\trefresh: checks buffer and refreshes outlets"); - post("\t@units 0/1/2/3: set units to frames/buffer size/ms/s"); - post("\t@sclmode 0/1/2/3: set range of position to units/units in loop/buffer/loop"); - post("\t@xzone {unit}: length of loop crossfade zone"); - post("\t@xfade 0/1/2/3: fade mode (keep loop/keep loop length/keep fade/inside loop)"); - post("\t@xshape 0/1/2: shape of crossfade (linear/quarter sine/half sine)"); - post(""); -} - -void xgroove::m_print() -{ - static const char *sclmode_txt[] = {"units","units in loop","buffer","loop"}; - static const char *interp_txt[] = {"off","4-point","linear"}; - static const char *loop_txt[] = {"once","looping","bidir"}; - - // print all current settings - post("%s - current settings:",thisName()); - post("bufname = '%s', length = %.3f, channels = %i",buf.Name(),(float)(buf.Frames()*s2u),buf.Channels()); - post("out channels = %i, frames/unit = %.3f, scale mode = %s",outchns,(float)(1./s2u),sclmode_txt[sclmode]); - post("loop = %s, interpolation = %s",loop_txt[(int)loopmode],interp_txt[interp >= xsi_none && interp <= xsi_lin?interp:xsi_none]); - post("loop crossfade zone = %.3f",(float)(xzone*s2u)); - post(""); -} diff --git a/externals/grill/xsample/source/inter.cpp b/externals/grill/xsample/source/inter.cpp deleted file mode 100644 index 1f70b79f..00000000 --- a/externals/grill/xsample/source/inter.cpp +++ /dev/null @@ -1,82 +0,0 @@ -/* -xsample - extended sample objects for Max/MSP and pd (pure data) - -Copyright (c) 2001-2006 Thomas Grill (gr@grrrr.org) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. -*/ - -#include "main.h" -#include - -#ifdef _MSC_VER -#pragma warning (disable:4244) -#endif - -#ifndef TMPLOPT -#include "inter.h" -#endif - -void xinter::setup(t_classid c) -{ - FLEXT_CADDBANG(c,0,m_start); - FLEXT_CADDMETHOD_(c,0,"start",m_start); - FLEXT_CADDMETHOD_(c,0,"stop",m_stop); - - FLEXT_CADDATTR_VAR_E(c,"interp",interp,m_interp); -} - -void xinter::DoUpdate(unsigned int flags) -{ - xsample::DoUpdate(flags); - - if(flags&xsc_play) { - switch(outchns) { - case 1: SETSIGFUN(zerofun,TMPLFUN(s_play0,-1,1)); break; - case 2: SETSIGFUN(zerofun,TMPLFUN(s_play0,-1,2)); break; - case 4: SETSIGFUN(zerofun,TMPLFUN(s_play0,-1,4)); break; - default: SETSIGFUN(zerofun,TMPLFUN(s_play0,-1,-1)); - } - - if(doplay && buf.Ok()) { - if(interp == xsi_4p) - switch(buf.Channels()*1000+outchns) { - case 1001: SETSIGFUN(playfun,TMPLFUN(s_play4,1,1)); break; - case 1002: SETSIGFUN(playfun,TMPLFUN(s_play4,1,2)); break; - case 2001: SETSIGFUN(playfun,TMPLFUN(s_play4,2,1)); break; - case 2002: SETSIGFUN(playfun,TMPLFUN(s_play4,2,2)); break; - case 4001: - case 4002: - case 4003: SETSIGFUN(playfun,TMPLFUN(s_play4,4,-1)); break; - case 4004: SETSIGFUN(playfun,TMPLFUN(s_play4,4,4)); break; - default: SETSIGFUN(playfun,TMPLFUN(s_play4,-1,-1)); - } - else if(interp == xsi_lin) - switch(buf.Channels()*1000+outchns) { - case 1001: SETSIGFUN(playfun,TMPLFUN(s_play2,1,1)); break; - case 1002: SETSIGFUN(playfun,TMPLFUN(s_play2,1,2)); break; - case 2001: SETSIGFUN(playfun,TMPLFUN(s_play2,2,1)); break; - case 2002: SETSIGFUN(playfun,TMPLFUN(s_play2,2,2)); break; - case 4001: - case 4002: - case 4003: SETSIGFUN(playfun,TMPLFUN(s_play2,4,-1)); break; - case 4004: SETSIGFUN(playfun,TMPLFUN(s_play2,4,4)); break; - default: SETSIGFUN(playfun,TMPLFUN(s_play2,-1,-1)); - } - else - switch(buf.Channels()*1000+outchns) { - case 1001: SETSIGFUN(playfun,TMPLFUN(s_play1,1,1)); break; - case 1002: SETSIGFUN(playfun,TMPLFUN(s_play1,1,2)); break; - case 2001: SETSIGFUN(playfun,TMPLFUN(s_play1,2,1)); break; - case 2002: SETSIGFUN(playfun,TMPLFUN(s_play1,2,2)); break; - case 4001: - case 4002: - case 4003: SETSIGFUN(playfun,TMPLFUN(s_play1,4,-1)); break; - case 4004: SETSIGFUN(playfun,TMPLFUN(s_play1,4,4)); break; - default: SETSIGFUN(playfun,TMPLFUN(s_play1,-1,-1)); - } - } - else - SETSIGFUN(playfun,TMPLFUN(s_play0,-1,-1)); - } -} diff --git a/externals/grill/xsample/source/inter.h b/externals/grill/xsample/source/inter.h deleted file mode 100644 index f8a0881b..00000000 --- a/externals/grill/xsample/source/inter.h +++ /dev/null @@ -1,420 +0,0 @@ -/* -xsample - extended sample objects for Max/MSP and pd (pure data) - -Copyright (c) 2001-2006 Thomas Grill (gr@grrrr.org) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. -*/ - -#ifndef __INTER_H -#define __INTER_H - -TMPLDEF void xinter::st_play0(const t_sample *,const int ,const int ,const int n,const int inchns,const int outchns,t_sample *const *invecs,t_sample *const *outvecs,bool looped) -{ - // stopped/invalid buffer -> output zero - for(int ci = 0; ci < outchns; ++ci) ZeroSamples(outvecs[ci],n); -} - -TMPLDEF void xinter::st_play1(const t_sample *bdt,const int smin,const int smax,const int n,const int inchns,const int outchns,t_sample *const *invecs,t_sample *const *outvecs,bool looped) -{ - SIGCHNS(BCHNS,inchns,OCHNS,outchns); - - // position info are frame units - const t_sample *pos = invecs[0]; - t_sample *const *sig = outvecs; - - // no interpolation - // ---------------- - - if(UNLIKELY(smin == smax)) { - // zero loop length -> assume that smin is a valid sample position... - - int ci; - for(ci = 0; ci < OCHNS; ++ci) SetSamples(sig[ci],n,bdt[smin*BCHNS]); - // clear rest of output channels (if buffer has less channels) - for(; ci < outchns; ++ci) ZeroSamples(sig[ci],n); - } - else if(OCHNS == 1) { - t_sample *sig0 = sig[0]; - for(int i = 0; i < n; ++i) { - register long oint = CASTINT(*(pos++)); - - // for xplay oint can be out of bounds -> check - if(LIKELY(oint >= smin)) - if(LIKELY(oint < smax)) { - // normal - *(sig0++) = bdt[oint*BCHNS]; - } - else { - // position > last sample ... take only last sample - *(sig0++) = bdt[(smax-1)*BCHNS]; - } - else { - // position < 0 ... take only 0th sample - *(sig0++) = bdt[smin*BCHNS]; - } - } - } - else { - for(int i = 0,si = 0; i < n; ++i,++si) { - register long oint = CASTINT(*(pos++)); - register const t_sample *fp; - - // for xplay oint can be out of bounds -> check - if(LIKELY(oint >= smin)) - if(LIKELY(oint < smax)) { - // normal - fp = bdt+oint*BCHNS; - } - else { - // position > last sample ... take only last sample - fp = bdt+(smax-1)*BCHNS; - } - else { - // position < 0 ... take only 0th sample - fp = bdt+smin*BCHNS; - } - - for(int ci = 0; ci < OCHNS; ++ci) - sig[ci][si] = fp[ci]; - } - - // clear rest of output channels (if buffer has less channels) - for(int ci = OCHNS; ci < outchns; ++ci) ZeroSamples(sig[ci],n); - } -} - -TMPLDEF void xinter::st_play2(const t_sample *bdt,const int smin,const int smax,const int n,const int inchns,const int outchns,t_sample *const *invecs,t_sample *const *outvecs,bool looped) -{ - const int plen = smax-smin; - if(UNLIKELY(plen < 2)) { - st_play1 TMPLCALL (bdt,smin,smax,n,inchns,outchns,invecs,outvecs,looped); - return; - } - - SIGCHNS(BCHNS,inchns,OCHNS,outchns); - - // position info are frame units - const t_sample *pos = invecs[0]; - t_sample *const *sig = outvecs; - - // linear interpolation - // -------------------- - - const int maxo = smax-1; // last sample in buffer - - if(OCHNS == 1) { - t_sample *sig0 = sig[0]; - for(int i = 0; i < n; ++i) { - const float o = *(pos++); - register long oint = CASTINT(o); - const float frac = o-oint; - t_sample fp0,fp1; - - if(LIKELY(oint >= smin)) - if(LIKELY(oint < maxo)) { - // normal interpolation - fp0 = bdt[oint*BCHNS]; - fp1 = bdt[(oint+1)*BCHNS]; - } - else { - // position is past last sample - if(looped) { - oint = smin+(oint-smin)%plen; - fp0 = bdt[oint*BCHNS]; - fp1 = oint >= maxo?bdt[smin]:fp0; - } - else - fp0 = fp1 = bdt[maxo*BCHNS]; - } - else { - // position is before first sample - if(looped) { - oint = smax-(smin-oint)%plen; - fp0 = bdt[oint*BCHNS]; - fp1 = oint >= maxo?bdt[smin]:fp0; - } - else - fp0 = fp1 = bdt[smin*BCHNS]; - } - - *(sig0++) = fp0+frac*(fp1-fp0); - } - } - else { - for(int i = 0,si = 0; i < n; ++i,++si) { - const float o = *(pos++); - register long oint = CASTINT(o); - const t_sample *fp0,*fp1; - const float frac = o-oint; - - if(LIKELY(oint >= smin)) - if(LIKELY(oint < maxo)) { - // normal interpolation - fp0 = bdt+oint*BCHNS; - fp1 = fp0+BCHNS; - } - else { - // position is past last sample - if(looped) { - oint = smin+(oint-smin)%plen; - fp0 = bdt+oint*BCHNS; - fp1 = oint >= maxo?bdt+smin:fp0; - } - else - fp0 = fp1 = bdt+maxo*BCHNS; - } - else { - // position is before first sample - if(looped) { - oint = smax-(smin-oint)%plen; - fp0 = bdt+oint*BCHNS; - fp1 = oint >= maxo?bdt+smin:fp0; - } - else - fp0 = fp1 = bdt+smin*BCHNS; - } - - for(int ci = 0; ci < OCHNS; ++ci) - sig[ci][si] = fp0[ci]+frac*(fp1[ci]-fp0[ci]); - } - - // clear rest of output channels (if buffer has less channels) - for(int ci = OCHNS; ci < outchns; ++ci) ZeroSamples(sig[ci],n); - } -} - -TMPLDEF void xinter::st_play4(const t_sample *bdt,const int smin,const int smax,const int n,const int inchns,const int outchns,t_sample *const *invecs,t_sample *const *outvecs,bool looped) -{ - const int plen = smax-smin; //curlen; - if(UNLIKELY(plen < 4)) { - if(plen < 2) st_play1 TMPLCALL (bdt,smin,smax,n,inchns,outchns,invecs,outvecs,looped); - else st_play2 TMPLCALL (bdt,smin,smax,n,inchns,outchns,invecs,outvecs,looped); - return; - } - - SIGCHNS(BCHNS,inchns,OCHNS,outchns); - - // position info are frame units - const t_sample *pos = invecs[0]; - t_sample *const *sig = outvecs; - - // 4-point interpolation - // --------------------- - const int maxo = smax-1; // last sample in play region - - if(OCHNS == 1) { - t_sample *sig0 = sig[0]; - for(int i = 0; i < n; ++i) { - float o = pos[i]; - register long oint = CASTINT(o); - register t_sample fa,fb,fc,fd; - const float frac = o-oint; - register const t_sample *ptr = bdt+oint*BCHNS; - - if(LIKELY(oint > smin)) { - if(LIKELY(oint < maxo-2)) { - // normal case - fa = ptr[-BCHNS]; - fb = ptr[0]; - fc = ptr[BCHNS]; - fd = ptr[BCHNS*2]; - } - else { - // not enough space at the end - - if(looped) { - // normalize position - oint = smin+(oint-smin)%plen; - goto looped1; - } - else { - // last sample is outside in any case - fd = bdt[maxo*BCHNS]; - - if(oint-1 >= maxo) - // if first is outside, all are outside - fa = fb = fc = fd; - else { - fa = ptr[-BCHNS]; - if(oint >= maxo) - fb = fc = fd; - else { - fb = ptr[0]; - fc = oint+1 < maxo?ptr[BCHNS]:fd; - } - } - } - } - } - else { - // not enough space at the beginning - - if(looped) { - // normalize position - oint = smax-(smin-oint)%plen; -looped1: - ptr = bdt+oint*BCHNS; - - // inside in any case - fb = ptr[0]; - - if(oint < maxo-1) { - fa = oint > smin?ptr[-BCHNS]:bdt[maxo*BCHNS]; - fc = ptr[BCHNS]; - fd = ptr[BCHNS*2]; - } - else { - fa = ptr[-BCHNS]; - fc = oint < maxo?ptr[BCHNS]:ptr[(1-plen)*BCHNS]; - fd = ptr[(2-plen)*BCHNS]; - } - } - else { - // first sample is outside in any case - fa = bdt[smin*BCHNS]; - - if(oint+2 < smin) - // if last is outside, all are outside - fb = fc = fd = fa; - else { - fd = ptr[BCHNS*2]; - if(oint+1 < smin) - fb = fc = fa; - else { - fc = ptr[BCHNS]; - fb = oint < smin?fa:ptr[0]; - } - } - } - } - - const float f1 = frac*0.5f-0.5f; - const float f3 = frac*3.0f-1.0f; - - const float amdf = (fa-fd)*frac; - const float cmb = fc-fb; - const float bma = fb-fa; - sig0[i] = fb + frac*( cmb - f1 * ( amdf+bma+cmb*f3 ) ); - } - } - else { - for(int i = 0,si = 0; i < n; ++i,++si) { - float o = *(pos++); - register long oint = CASTINT(o); - const float frac = o-oint; - register const t_sample *ptr = bdt+oint*BCHNS; - register const t_sample *fa,*fb,*fc,*fd; - - if(LIKELY(oint > smin)) - if(LIKELY(oint < maxo-2)) { - // normal case - fb = ptr; - fa = fb-BCHNS; - fc = fb+BCHNS; - fd = fc+BCHNS; - } - else { - // not enough space at the end - - if(looped) { - // normalize position - oint = smin+(oint-smin)%plen; - goto looped2; - } - else { - // last sample is outside in any case - fd = bdt+maxo*BCHNS; - - if(oint-1 >= maxo) - // if first is outside, all are outside - fa = fb = fc = fd; - else { - fa = ptr-BCHNS; - if(oint >= maxo) - fb = fc = fd; - else { - fb = ptr; - fc = oint+1 < maxo?ptr+BCHNS:fd; - } - } - } - } - else { - // not enough space at the beginning - - if(looped) { - // normalize position - oint = smax-(smin-oint)%plen; -looped2: - // inside in any case - fb = bdt+oint*BCHNS; - - if(oint < maxo-1) { - fa = oint > smin?fb-BCHNS:bdt+maxo*BCHNS; - fc = fb+BCHNS; - fd = fc+BCHNS; - } - else { - fa = fb-BCHNS; - fc = oint < maxo?fb+BCHNS:bdt+(oint-plen+1)*BCHNS; - fd = bdt+(oint-plen+2)*BCHNS; - } - } - else { - // first sample is outside in any case - fa = bdt+smin*BCHNS; - - if(oint+2 < smin) - // if last is outside, all are outside - fb = fc = fd = fa; - else { - fd = ptr+BCHNS*2; - if(oint+1 < smin) - fb = fc = fa; - else { - fc = ptr+BCHNS; - fb = oint < smin?fa:ptr; - } - } - } - } - - const float f1 = 0.5f*(frac-1.0f); - const float f3 = frac*3.0f-1.0f; - - for(int ci = 0; ci < OCHNS; ++ci) { - const float amdf = (fa[ci]-fd[ci])*frac; - const float cmb = fc[ci]-fb[ci]; - const float bma = fb[ci]-fa[ci]; - sig[ci][si] = fb[ci] + frac*( cmb - f1 * ( amdf+bma+cmb*f3 ) ); - } - } - - // clear rest of output channels (if buffer has less channels) - for(int ci = OCHNS; ci < outchns; ++ci) ZeroSamples(sig[ci],n); - } -} - - -TMPLDEF inline void xinter::s_play0(int n,t_sample *const *invecs,t_sample *const *outvecs) -{ - st_play0 TMPLCALL (buf.Data(),curmin,curmax,n,buf.Channels(),outchns,invecs,outvecs,loopmode == xsl_loop); -} - -TMPLDEF inline void xinter::s_play1(int n,t_sample *const *invecs,t_sample *const *outvecs) -{ - st_play1 TMPLCALL (buf.Data(),curmin,curmax,n,buf.Channels(),outchns,invecs,outvecs,loopmode == xsl_loop); -} - -TMPLDEF inline void xinter::s_play2(int n,t_sample *const *invecs,t_sample *const *outvecs) -{ - st_play2 TMPLCALL (buf.Data(),curmin,curmax,n,buf.Channels(),outchns,invecs,outvecs,loopmode == xsl_loop); -} - -TMPLDEF inline void xinter::s_play4(int n,t_sample *const *invecs,t_sample *const *outvecs) -{ - st_play4 TMPLCALL (buf.Data(),curmin,curmax,n,buf.Channels(),outchns,invecs,outvecs,loopmode == xsl_loop); -} - -#endif diff --git a/externals/grill/xsample/source/main.cpp b/externals/grill/xsample/source/main.cpp deleted file mode 100644 index 025352a3..00000000 --- a/externals/grill/xsample/source/main.cpp +++ /dev/null @@ -1,220 +0,0 @@ -/* -xsample - extended sample objects for Max/MSP and pd (pure data) - -Copyright (c) 2001-2007 Thomas Grill (gr@grrrr.org) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. -*/ - -#include "main.h" - - -// Initialization function for xsample library -static void xsample_main() -{ - flext::post("-------------------------------"); - flext::post("xsample objects, version " XSAMPLE_VERSION); - flext::post(""); - flext::post(" xrecord~, xplay~, xgroove~ "); - flext::post(" (C)2001-2007 Thomas Grill "); -#ifdef FLEXT_DEBUG - flext::post(""); - flext::post("DEBUG BUILD - " __DATE__ " " __TIME__); -#endif - flext::post("-------------------------------"); - - // call the objects' setup routines - FLEXT_DSP_SETUP(xrecord); - FLEXT_DSP_SETUP(xplay); - FLEXT_DSP_SETUP(xgroove); -} - -// setup the library -FLEXT_LIB_SETUP(xsample,xsample_main) - -// ------------------------------ - -void xsample::setup(t_classid c) -{ - FLEXT_CADDMETHOD_(c,0,"help",m_help); - FLEXT_CADDMETHOD_(c,0,"set",m_set); - FLEXT_CADDMETHOD_(c,0,"print",m_print); - FLEXT_CADDMETHOD_(c,0,"refresh",m_refresh); - FLEXT_CADDMETHOD_(c,0,"reset",m_reset); - - FLEXT_CADDATTR_VAR(c,"buffer",mg_buffer,ms_buffer); - FLEXT_CADDATTR_VAR_E(c,"units",unitmode,m_units); - FLEXT_CADDATTR_VAR_E(c,"sclmode",sclmode,m_sclmode); - FLEXT_CADDATTR_GET(c,"scale",s2u); -} - -xsample::xsample(): - update(xsc_all),wrap(false), -#if FLEXT_SYS == FLEXT_SYS_MAX - unitmode(xsu_ms), // Max/MSP defaults to milliseconds -#else - unitmode(xsu_sample), // PD defaults to samples -#endif - sclmode(xss_unitsinbuf), - curmin(0),curmax(1L<<(sizeof(curmax)*8-2)) -{} - -xsample::~xsample() {} - -bool xsample::Finalize() -{ - if(!flext_dsp::Finalize()) return false; - - // flags have been set in constructor - Refresh(); - return true; -} - -int xsample::ChkBuffer(bool refresh) -{ - if(!buf.Ok()) return 0; - - if(UNLIKELY(buf.Update())) { -#ifdef FLEXT_DEBUG - post("%s - buffer update!",thisName()); -#endif - Update(xsc_buffer); - if(refresh) { - Refresh(); - return buf.Ok() && buf.Valid()?1:0; - } - else - return buf.Valid()?1:0; - } - else - return buf.Valid()?-1:0; -} - -/* called after all buffer objects have been created in the patch */ -void xsample::CbLoadbang() -{ - ChkBuffer(true); -} - -void xsample::m_set(int argc,const t_atom *argv) -{ - const t_symbol *sym = argc >= 1?GetASymbol(argv[0]):NULL; - int r = buf.Set(sym); - if(LIKELY(sym) && UNLIKELY(r < 0)) - post("%s - can't find buffer %s",thisName(),GetString(sym)); - Update(xsc_buffer,true); -} - -void xsample::m_min(float mn) -{ - int ret = ChkBuffer(true); - - if(LIKELY(ret) && LIKELY(s2u)) { - long cmn = CASTINT(mn/s2u+0.5f); // conversion to samples - - if(UNLIKELY(cmn < 0)) - curmin = 0; - else if(UNLIKELY(cmn > curmax)) - curmin = curmax; - else - curmin = cmn; - - Update(xsc_range,true); - } -} - -void xsample::m_max(float mx) -{ - int ret = ChkBuffer(true); - - if(LIKELY(ret) && LIKELY(s2u)) { - long cmx = CASTINT(mx/s2u+0.5f); // conversion to samples - - if(UNLIKELY(cmx > buf.Frames())) - curmax = buf.Frames(); - else if(UNLIKELY(cmx < curmin)) - curmax = curmin; - else - curmax = cmx; - - Update(xsc_range,true); - } -} - -bool xsample::CbDsp() -{ - // this is hopefully called at change of sample rate ?! - -#ifdef FLEXT_DEBUG - post("%s - DSP reset!",thisName()); -#endif - - // for PD at least this is also called if a table has been deleted... - // then we must reset the buffer - - Update(xsc_srate|xsc_buffer,true); - return true; -} - -void xsample::DoReset() -{ - ResetRange(); -} - -void xsample::DoUpdate(unsigned int flags) -{ - if(flags&xsc_buffer) - buf.Set(); - - if(flags&xsc_range && buf.Ok()) { - const int f = buf.Frames(); - - if(!wrap) { - // normalize bounds - if(curmin < 0) curmin = 0; - else if(curmin > f) curmin = f; - - if(curmax > f) curmax = f; - else if(curmax < curmin) curmax = curmin; - } - else - // don't normalize - if(curmax < curmin) curmax = curmin; - } - - if(flags&xsc_units) { - switch(unitmode) { - case xsu_sample: // samples - s2u = 1; - break; - case xsu_buffer: // buffer size - s2u = buf.Ok() && buf.Frames()?1.f/buf.Frames():0; - break; - case xsu_ms: // ms - s2u = 1000.f/Samplerate(); - break; - case xsu_s: // s - s2u = 1.f/Samplerate(); - break; - default: - post("%s - Unknown unit mode",thisName()); - } - - switch(sclmode) { - case xss_unitsinbuf: // samples/units - sclmin = 0; sclmul = s2u; - break; - case xss_unitsinloop: // samples/units from recmin to recmax - sclmin = curmin; sclmul = s2u; - break; - case xss_buffer: // unity between 0 and buffer size - sclmin = 0; sclmul = buf.Ok() && buf.Frames()?1.f/buf.Frames():0; - break; - case xss_loop: // unity between recmin and recmax - sclmin = curmin; sclmul = curmin < curmax?1.f/(curmax-curmin):0; - break; - default: - post("%s - Unknown scale mode",thisName()); - } - } -} diff --git a/externals/grill/xsample/source/main.h b/externals/grill/xsample/source/main.h deleted file mode 100644 index 8cf39d7d..00000000 --- a/externals/grill/xsample/source/main.h +++ /dev/null @@ -1,464 +0,0 @@ -/* -xsample - extended sample objects for Max/MSP and pd (pure data) - -Copyright (c) 2001-2006 Thomas Grill (gr@grrrr.org) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. -*/ - -#ifndef __XSAMPLE_H -#define __XSAMPLE_H - -#include "prefix.h" - -#if !defined(FLEXT_VERSION) || (FLEXT_VERSION < 500) -#error You need at least flext version 0.5.0 -#endif - -#define XSAMPLE_VERSION "0.3.2pre" - -extern "C++" { - -// most compilers are somehow broken - in other words - can't handle all C++ features - -#if defined(_MSC_VER) -// MS VC 6.0 can't handle templates?! -> no optimization -// MS VC .NET 2002 just dies with template optimization switched on - #if _MSC_VER >= 1310 - #define TMPLOPT - #endif -#elif defined(__BORLANDC__) -// handles all optimizations - #define TMPLOPT -#elif defined(__GNUC__) -// GNUC 2.95.2 dies at compile with templates -#if __GNUC__ >= 3 - #define TMPLOPT // only workable with gcc >= 3.0 -#endif -#elif defined(__MWERKS__) -// CodeWarrior <= 8 can't take address of a template member function - #ifndef FLEXT_DEBUG - #define TMPLOPT - #endif -// #define SIGSTATIC // define that for CW6 -#elif defined(__MRC__) -// Apple MPW - MrCpp -// #define TMPLOPT // template optimation for more speed -#else -// another compiler -// #define TMPLOPT // template optimation for more speed (about 10%) - //#define SIGSTATIC // another redirection to avoid addresses of class member functions -#endif - - -#if defined(__MWERKS__) && !defined(__MACH__) - #define STD std -#else - #define STD -#endif - - -#ifdef __ALTIVEC__ -#if FLEXT_CPU == FLEXT_CPU_PPC && defined(__MWERKS__) - #pragma altivec_model on - #include - #include -#elif FLEXT_CPU == FLEXT_CPU_PPC && defined(__GNUG__) - #include - #include -#endif - // this is for the UInt32 prototype (thanks to Jamie) - // \TODO we'd rather not use Carbon but some other framework - #ifdef __MACH__ - #include - #endif - - // Initialize a prefetch constant for use with vec_dst(), vec_dstt(), vec_dstst or vec_dststt - // Taken from the "AltiVec tutorial" by Ian Ollmann, Ph.D. - inline UInt32 GetPrefetchConstant( int blockSizeInVectors,int blockCount,int blockStride ) - { -// FLEXT_ASSERT( blockSizeInVectors > 0 && blockSizeInVectors <= 32 ); -// FLEXT_ASSERT( blockCount > 0 && blockCount <= 256 ); -// FLEXT_ASSERT( blockStride > MIN_SHRT && blockStride <= MAX_SHRT ); - return ((blockSizeInVectors << 24) & 0x1F000000) | - ((blockCount << 16) && 0x00FF0000) | - (blockStride & 0xFFFF); - } -#endif - -#if 0 // FLEXT_CPU == FLEXT_CPU_PPC && defined(__GNUC__) -#include -template -inline I CASTINT( F f ) -{ - int i; - __stfiwx(__fctiwz(f),0,&i); - return i; -} -#elif FLEXT_CPU == FLEXT_CPU_INTEL && defined(_MSC_VER) -template -inline I CASTINT(F x) { -// by Laurent de Soras (http://ldesoras.free.fr) -// assert (x > static_cast (INT_MIN / 2) + 1.0); -// assert (x < static_cast (INT_MAX / 2) + 1.0); - const float round_towards_m_i = -0.5f; - I i; - __asm - { - fld x - fadd st,st - fabs - fadd round_towards_m_i - fistp i - sar i, 1 - } - if(x < 0) i = -i; - return i; -} -#else -template inline I CASTINT(F o) { return static_cast(o); } -#endif - - -class xsample: - public flext_dsp -{ - FLEXT_HEADER_S(xsample,flext_dsp,setup) - -public: - xsample(); - ~xsample(); - - enum xs_change { - xsc__ = 0, - xsc_units = 0x0001, - xsc_play = 0x0002, - xsc_pos = 0x0008, - xsc_range = 0x0010, - xsc_transport = 0x0020, - xsc_fade = 0x0040, - - xsc_intp = xsc_play, - xsc_srate = xsc_play|xsc_units, - xsc_chns = xsc_play, - xsc_loop = xsc_play, - xsc_startstop = xsc_play|xsc_transport, - xsc_buffer = xsc_units|xsc_pos|xsc_range|xsc_play, - xsc_reset = xsc_buffer, - xsc_all = 0xffff - }; - - enum xs_unit { - xsu_sample = 0,xsu_buffer,xsu_ms,xsu_s - }; - - enum xs_intp { - xsi_none = 0,xsi_4p,xsi_lin - }; - - enum xs_sclmd { - xss_unitsinbuf = 0,xss_unitsinloop,xss_buffer,xss_loop - }; - -protected: - virtual bool Finalize(); - - buffer buf; - - void m_reset() - { - ChkBuffer(true); - DoReset(); - Refresh(); - } - - void m_set(int argc,const t_atom *argv); - - void m_refresh() - { - Update(xsc_buffer,true); - } - - void m_units(xs_unit mode) - { - unitmode = mode; - Update(xsc_units,true); - } - - void m_sclmode(xs_sclmd mode) - { - sclmode = mode; - Update(xsc_units,true); - } - - void m_all() - { - ChkBuffer(true); - ResetRange(); - Refresh(); - } - - void m_wrap(bool w) - { - wrap = w; - Update(xsc_pos|xsc_range,true); - } - - void m_min(float mn); - void m_max(float mx); - - xs_unit unitmode; - xs_sclmd sclmode; - - long curmin,curmax; //,curlen; // in samples - long sclmin; // in samples - float sclmul; - float s2u; // sample to unit conversion factor - bool wrap; - - inline float scale(float smp) const { return (smp-sclmin)*sclmul; } - - static void arrscale(int n,const t_sample *in,t_sample *out,t_sample add,t_sample mul) { flext::ScaleSamples(out,in,mul,add,n); } - inline void arrscale(int n,const t_sample *in,t_sample *out) const { arrscale(n,in,out,-sclmin*sclmul,sclmul); } - - static void arrmul(int n,const t_sample *in,t_sample *out,t_sample mul) { flext::MulSamples(out,in,mul,n); } - inline void arrmul(int n,const t_sample *in,t_sample *out) const { arrmul(n,in,out,(t_sample)(1.f/s2u)); } - - void mg_buffer(AtomList &l) { if(buf.Symbol()) { l(1); SetSymbol(l[0],buf.Symbol()); } } - inline void ms_buffer(const AtomList &l) { m_set(l.Count(),l.Atoms()); } - - inline void mg_min(float &v) const { v = curmin*s2u; } - inline void mg_max(float &v) const { v = curmax*s2u; } - - void Refresh() { if(update && !Initing()) { DoUpdate(update); update = xsc__; } } - void Update(unsigned int f,bool refr = false) { update |= f; if(refr) Refresh(); } - - //! return 0...invalid, 1...changed, -1...unchanged - int ChkBuffer(bool refr = false); - - typedef flext::buffer::lock_t lock_t; - - //! Lock buffer (buffer must be checked ok) - lock_t Lock() { return buf.Lock(); } - //! Unlock buffer (buffer must be checked ok) - void Unlock(lock_t l) { buf.Unlock(l); } - - void ResetRange() - { - curmin = 0; - curmax = buf.Frames(); - Update(xsc_range); - } - - virtual void DoReset(); - virtual void DoUpdate(unsigned int flags); - - virtual void CbLoadbang(); - virtual bool CbDsp(); - - virtual void m_help() = 0; - virtual void m_print() = 0; - -private: - - unsigned int update; - - static void setup(t_classid c); - - FLEXT_CALLBACK(m_help) - FLEXT_CALLBACK_V(m_set) - FLEXT_CALLBACK(m_print) - FLEXT_CALLBACK(m_refresh) - FLEXT_CALLBACK(m_reset) - - FLEXT_CALLVAR_V(mg_buffer,ms_buffer) - - FLEXT_CALLSET_E(m_units,xs_unit) - FLEXT_ATTRGET_E(unitmode,xs_unit) - FLEXT_CALLSET_E(m_sclmode,xs_sclmd) - FLEXT_ATTRGET_E(sclmode,xs_sclmd) - - FLEXT_ATTRGET_F(s2u) - - FLEXT_CALLSET_B(m_wrap) - FLEXT_ATTRGET_B(wrap) - -protected: - FLEXT_CALLGET_F(mg_min) - FLEXT_CALLGET_F(mg_max) -}; - - -// defines which are used in the derived classes -#ifdef SIGSTATIC - #ifdef TMPLOPT - #define TMPLFUN(FUN,BCHNS,IOCHNS) &thisType::st_##FUN - #define TMPLSTF(FUN,BCHNS,IOCHNS) &thisType::FUN - #define SIGFUN(FUN) &thisType::st_##FUN - #define TMPLDEF template - #define TMPLCALL <_BCHNS_,_IOCHNS_> - #else - #define TMPLFUN(FUN,BCHNS,IOCHNS) &thisType::st_##FUN - #define TMPLSTF(FUN,BCHNS,IOCHNS) &thisType::FUN - #define SIGFUN(FUN) &thisType::st_##FUN - #define TMPLDEF - #define TMPLCALL - #endif - - #define DEFSIGFUN(NAME) \ - static void st_##NAME(thisType *obj,int n,t_sample *const *in,t_sample *const *out) { obj->NAME (n,in,out); } \ - void NAME(int n,t_sample *const *in,t_sample *const *out) - - #define TMPLSIGFUN(NAME) \ - TMPLDEF static void st_##NAME(thisType *obj,int n,t_sample *const *in,t_sample *const *out) { obj->NAME TMPLCALL (n,in,out); } \ - TMPLDEF void NAME(int n,t_sample *const *in,t_sample *const *out) - - #define TMPLSTFUN(NAME) TMPLDEF static void NAME(const t_sample *bdt,const int smin,const int smax,const int n,const int inchns,const int outchns,t_sample *const *invecs,t_sample *const *outvecs) - - #define SETSIGFUN(VAR,FUN) v_##VAR = FUN - - #define SETSTFUN(VAR,FUN) VAR = FUN - - #define DEFSIGCALL(NAME) \ - inline void NAME(int n,t_sample *const *in,t_sample *const *out) { (*v_##NAME)(this,n,in,out); } \ - void (*v_##NAME)(thisType *obj,int n,t_sample *const *in,t_sample *const *out) - - #define DEFSTCALL(NAME) \ - void (*NAME)(const t_sample *bdt,const int smin,const int smax,const int n,const int inchns,const int outchns,t_sample *const *invecs,t_sample *const *outvecs) - -#else - #ifdef TMPLOPT - #define TMPLFUN(FUN,BCHNS,IOCHNS) &thisType::FUN - #define SIGFUN(FUN) &thisType::FUN - #define TMPLDEF template - #define TMPLCALL <_BCHNS_,_IOCHNS_> - #else - #define TMPLFUN(FUN,BCHNS,IOCHNS) &thisType::FUN - #define SIGFUN(FUN) &thisType::FUN - #define TMPLDEF - #define TMPLCALL - #endif - - #define TMPLSTF(FUN,BCHNS,IOCHNS) TMPLFUN(FUN,BCHNS,IOCHNS) - - #define DEFSIGFUN(NAME) void NAME(int n,t_sample *const *in,t_sample *const *out) - #define TMPLSIGFUN(NAME) TMPLDEF void NAME(int n,t_sample *const *in,t_sample *const *out) - #define TMPLSTFUN(NAME) TMPLDEF static void NAME(const t_sample *bdt,const int smin,const int smax,const int n,const int inchns,const int outchns,t_sample *const *invecs,t_sample *const *outvecs,bool looped) - - #define SETSIGFUN(VAR,FUN) v_##VAR = FUN - - #define DEFSIGCALL(NAME) \ - inline void NAME(int n,t_sample *const *in,t_sample *const *out) { (this->*v_##NAME)(n,in,out); } \ - void (thisType::*v_##NAME)(int n,t_sample *const *invecs,t_sample *const *outvecs) - - #define SETSTFUN(VAR,FUN) VAR = FUN - - #define DEFSTCALL(NAME) \ - void (*NAME)(const t_sample *bdt,const int smin,const int smax,const int n,const int inchns,const int outchns,t_sample *const *invecs,t_sample *const *outvecs,bool looped) -#endif - - - - - -#ifndef MIN -#define MIN(x,y) ((x) < (y)?(x):(y)) -#endif - -// in the signal functions -#ifdef TMPLOPT - // optimization by using constants for channel numbers - #define SIGCHNS(BCHNS,bchns,IOCHNS,iochns) \ - const int BCHNS = _BCHNS_ < 0?(bchns):_BCHNS_; \ - const int IOCHNS = _IOCHNS_ < 0?MIN(iochns,BCHNS):MIN(_IOCHNS_,BCHNS) -#else - // no template optimization - #if FLEXT_SYS == FLEXT_SYS_PD // only mono buffers - #define SIGCHNS(BCHNS,bchns,IOCHNS,iochns) \ - const int BCHNS = 1; \ - const int IOCHNS = MIN(iochns,BCHNS) - #else // MAXMSP - #define SIGCHNS(BCHNS,bchns,IOCHNS,iochns) \ - const int BCHNS = bchns; \ - const int IOCHNS = MIN(iochns,BCHNS) - #endif -#endif - - -class xinter: - public xsample -{ - FLEXT_HEADER_S(xinter,xsample,setup) - -public: - - enum xs_loop { - xsl_once = 0,xsl_loop,xsl_bidir - }; - - xinter() - : outchns(1),doplay(false) - , interp(xsi_4p),loopmode(xsl_loop) - {} - - void m_start() - { - ChkBuffer(); - doplay = true; - Update(xsc_startstop,true); - } - - void m_stop() - { - ChkBuffer(); - doplay = false; - Update(xsc_startstop,true); - } - - void m_interp(xs_intp mode) - { - interp = mode; - Update(xsc_intp,true); - } - -protected: - - int outchns; - bool doplay; - xs_intp interp; - xs_loop loopmode; - - TMPLSIGFUN(s_play0); - TMPLSIGFUN(s_play1); - TMPLSIGFUN(s_play2); - TMPLSIGFUN(s_play4); - - TMPLSTFUN(st_play0); - TMPLSTFUN(st_play1); - TMPLSTFUN(st_play2); - TMPLSTFUN(st_play4); - - DEFSIGCALL(playfun); - DEFSIGCALL(zerofun); - - virtual void DoUpdate(unsigned int flags); - - FLEXT_CALLBACK(m_start) - FLEXT_CALLBACK(m_stop) - - FLEXT_CALLSET_E(m_interp,xs_intp) - FLEXT_ATTRGET_E(interp,xs_intp) - - FLEXT_ATTRGET_E(loopmode,xs_loop) - -private: - static void setup(t_classid c); -}; - -#ifdef TMPLOPT -#include "inter.h" -#endif - -} - -#endif diff --git a/externals/grill/xsample/source/play.cpp b/externals/grill/xsample/source/play.cpp deleted file mode 100644 index 0f6fec5e..00000000 --- a/externals/grill/xsample/source/play.cpp +++ /dev/null @@ -1,151 +0,0 @@ -/* -xsample - extended sample objects for Max/MSP and pd (pure data) - -Copyright (c) 2001-2007 Thomas Grill (gr@grrrr.org) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. -*/ - -#include "main.h" -#include - -#ifdef _MSC_VER -#pragma warning (disable:4244) -#endif - - -class xplay: - public xinter -{ - FLEXT_HEADER_S(xplay,xinter,setup) - -public: - xplay(int argc,const t_atom *argv); - - void m_loop(xs_loop lp) - { - loopmode = lp; - Update(xsc_loop,true); - } - -protected: - - virtual void CbSignal(); - - virtual void m_help(); - virtual void m_print(); - -private: - static void setup(t_classid c); - - FLEXT_CALLSET_E(m_loop,xs_loop) -}; - -FLEXT_LIB_DSP_V("xplay~",xplay) - -void xplay::setup(t_classid c) -{ - DefineHelp(c,"xplay~"); - - FLEXT_CADDATTR_VAR_E(c,"loop",loopmode,m_loop); -} - -xplay::xplay(int argc,const t_atom *argv) -{ - // set the loopmode to non-wrapping (for sample interpolation) - loopmode = xsl_once; - - int argi = 0; -#if FLEXT_SYS == FLEXT_SYS_MAX - if(argc > argi && CanbeInt(argv[argi])) { - outchns = GetAInt(argv[argi]); - argi++; - } -#endif - - if(argc > argi && IsSymbol(argv[argi])) { - buf.Set(GetSymbol(argv[argi]),true); - argi++; - -#if FLEXT_SYS == FLEXT_SYS_MAX - // oldstyle command line? - if(argi == 1 && argc == 2 && CanbeInt(argv[argi])) { - outchns = GetAInt(argv[argi]); - argi++; - post("%s: old style command line detected - please change to '%s [channels] [buffer]'",thisName(),thisName()); - } -#endif - } - - AddInSignal("Messages and Signal of playing position"); // pos signal - for(int ci = 0; ci < outchns; ++ci) { - char tmp[30]; - STD::sprintf(tmp,"Audio signal channel %i",ci+1); - AddOutSignal(tmp); - } -} - -void xplay::CbSignal() -{ - int ret = ChkBuffer(true); - int n = Blocksize(); - const t_sample *const *in = InSig(); - t_sample *const *out = OutSig(); - - // check whether buffer is invalid or changed - if(ret) { - const lock_t l = Lock(); - - // convert position units to frames - arrmul(n,in[0],out[0]); - // call resample routine - playfun(n,out,out); - - Unlock(l); - - Refresh(); - } - else - zerofun(n,out,out); -} - - - -void xplay::m_help() -{ - post("%s - part of xsample objects, version " XSAMPLE_VERSION,thisName()); -#ifdef FLEXT_DEBUG - post("compiled on " __DATE__ " " __TIME__); -#endif - post("(C) Thomas Grill, 2001-2007"); -#if FLEXT_SYS == FLEXT_SYS_MAX - post("Arguments: %s [channels=1] [buffer]",thisName()); -#else - post("Arguments: %s [buffer]",thisName()); -#endif - post("Inlets: 1:Messages/Position signal"); - post("Outlets: 1:Audio signal"); - post("Methods:"); - post("\thelp: shows this help"); - post("\tset name: set buffer"); - post("\tenable 0/1: turn dsp calculation off/on"); - post("\tprint: print current settings"); - post("\tbang/start: begin playing"); - post("\tstop: stop playing"); - post("\treset: checks buffer"); - post("\trefresh: checks buffer and refreshes outlets"); - post("\t@units 0/1/2/3: set units to samples/buffer size/ms/s"); - post("\t@interp 0/1/2: set interpolation to off/4-point/linear"); - post("\t@loop 0/1/2: sets looping (interpolation) to off/forward/bidirectional"); - post(""); -} - -void xplay::m_print() -{ - const char *interp_txt[] = {"off","4-point","linear"}; - // print all current settings - post("%s - current settings:",thisName()); - post("bufname = '%s', length = %.3f, channels = %i",buf.Name(),(float)(buf.Frames()*s2u),buf.Channels()); - post("out channels = %i, samples/unit = %.3f, interpolation = %s",outchns,(float)(1./s2u),interp_txt[interp >= xsi_none && interp <= xsi_lin?interp:xsi_none]); - post(""); -} diff --git a/externals/grill/xsample/source/prefix.h b/externals/grill/xsample/source/prefix.h deleted file mode 100644 index 415f07c3..00000000 --- a/externals/grill/xsample/source/prefix.h +++ /dev/null @@ -1,15 +0,0 @@ -/* - -xsample - extended sample objects for Max/MSP and pd (pure data) - -Copyright (c) 2001-2004 Thomas Grill (xovo@gmx.net) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. - -*/ - -#define FLEXT_ATTRIBUTES 1 - -#include - -#include diff --git a/externals/grill/xsample/source/record.cpp b/externals/grill/xsample/source/record.cpp deleted file mode 100644 index 07c94b45..00000000 --- a/externals/grill/xsample/source/record.cpp +++ /dev/null @@ -1,497 +0,0 @@ -/* -xsample - extended sample objects for Max/MSP and pd (pure data) - -Copyright (c) 2001-2007 Thomas Grill (gr@grrrr.org) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. -*/ - -#include "main.h" -#include - -#ifdef _MSC_VER -#pragma warning (disable:4244) -#endif - -extern "C++" { - -class xrecord: - public xsample -{ - FLEXT_HEADER_S(xrecord,xsample,setup) - -public: - xrecord(int argc,const t_atom *argv); - - void m_pos(float pos) - { - curpos = LIKELY(pos)?CASTINT(pos/s2u+.5):0; - Update(xsc_pos); - Refresh(); - } - - inline void mg_pos(float &v) const { v = curpos*s2u; } - - void m_start(); - void m_stop(); - - inline void m_append(bool app) - { - appmode = app; - Update(xsc_play); - if(!appmode) m_pos(0); - } - - void m_draw(int argc,const t_atom *argv); - -protected: - int inchns; - bool sigmode,appmode; - float drintv; - - bool dorec,doloop; - int mixmode; - long curpos; // in samples - - virtual void DoReset(); - virtual void DoUpdate(unsigned int flags); - - virtual void CbSignal(); - - virtual void m_help(); - virtual void m_print(); - -private: - static void setup(t_classid c); - - TMPLSIGFUN(s_rec); - - DEFSIGCALL(recfun); - - FLEXT_CALLBACK(m_start) - FLEXT_CALLBACK(m_stop) - - FLEXT_CALLVAR_F(mg_pos,m_pos) - FLEXT_CALLBACK(m_all) - FLEXT_CALLSET_F(m_min) - FLEXT_CALLSET_F(m_max) - FLEXT_CALLBACK_F(m_min) - FLEXT_CALLBACK_F(m_max) - - FLEXT_ATTRVAR_B(doloop) - FLEXT_ATTRVAR_I(mixmode) - FLEXT_ATTRVAR_B(sigmode) - FLEXT_CALLSET_B(m_append) - FLEXT_ATTRGET_B(appmode) - - FLEXT_CALLBACK_V(m_draw) -}; - -} - - -FLEXT_LIB_DSP_V("xrecord~",xrecord) - - -void xrecord::setup(t_classid c) -{ - DefineHelp(c,"xrecord~"); - - FLEXT_CADDBANG(c,0,m_start); - FLEXT_CADDMETHOD_(c,0,"start",m_start); - FLEXT_CADDMETHOD_(c,0,"stop",m_stop); - - FLEXT_CADDATTR_VAR(c,"pos",mg_pos,m_pos); - FLEXT_CADDATTR_VAR(c,"min",mg_min,m_min); - FLEXT_CADDATTR_VAR(c,"max",mg_max,m_max); - FLEXT_CADDMETHOD_(c,0,"all",m_all); - - FLEXT_CADDMETHOD_(c,0,"draw",m_draw); - - FLEXT_CADDATTR_VAR1(c,"loop",doloop); - FLEXT_CADDATTR_VAR1(c,"mixmode",mixmode); - FLEXT_CADDATTR_VAR1(c,"sigmode",sigmode); - FLEXT_CADDATTR_VAR(c,"append",appmode,m_append); -} - -xrecord::xrecord(int argc,const t_atom *argv): - inchns(1), - sigmode(false),appmode(true), - drintv(0), - dorec(false),doloop(false), - mixmode(0) -{ - int argi = 0; -#if FLEXT_SYS == FLEXT_SYS_MAX - if(argc > argi && CanbeInt(argv[argi])) { - inchns = GetAInt(argv[argi]); - argi++; - } -#endif - - if(argc > argi && IsSymbol(argv[argi])) { - buf.Set(GetSymbol(argv[argi]),true); - argi++; - -#if FLEXT_SYS == FLEXT_SYS_MAX - // oldstyle command line? - if(argi == 1 && argc == 2 && CanbeInt(argv[argi])) { - inchns = GetAInt(argv[argi]); - argi++; - post("%s: old style command line detected - please change to '%s [channels] [buffer]'",thisName(),thisName()); - } -#endif - } - - for(int ci = 0; ci < inchns; ++ci) { - char tmp[40]; - STD::sprintf(tmp,ci == 0?"Messages/audio channel %i":"Audio channel %i",ci+1); - AddInSignal(tmp); // audio signals - } - AddInSignal("On/Off/Fade/Mix signal (0..1)"); // on/off signal - AddInFloat("Starting point of recording"); // min - AddInFloat("Ending point of recording"); // max - AddOutSignal("Current position of recording"); // pos signal - AddOutFloat("Starting point (rounded to frame)"); // min - AddOutFloat("Ending point (rounded to frame)"); // max - AddOutBang("Bang on loop end/rollover"); // loop bang - - FLEXT_ADDMETHOD(inchns+1,m_min); - FLEXT_ADDMETHOD(inchns+2,m_max); -} - -void xrecord::m_start() -{ - ChkBuffer(); - - if(!sigmode && !appmode) { curpos = 0; Update(xsc_pos); } - - dorec = true; - Update(xsc_startstop); - Refresh(); -} - -void xrecord::m_stop() -{ - ChkBuffer(); - dorec = false; - Update(xsc_startstop); - Refresh(); -} - -void xrecord::DoReset() -{ - xsample::DoReset(); - curpos = 0; -} - -void xrecord::m_draw(int argc,const t_atom *argv) -{ - if(argc >= 1) { - drintv = GetAInt(argv[0]); - if(dorec) buf.SetRefrIntv(drintv); - } - else - buf.Dirty(true); -} - -TMPLDEF void xrecord::s_rec(int n,t_sample *const *invecs,t_sample *const *outvecs) -{ - SIGCHNS(BCHNS,buf.Channels(),ICHNS,inchns); - - const t_sample *const *sig = invecs; - register int si = 0; - const t_sample *on = invecs[inchns]; - t_sample *pos = outvecs[0]; - - bool lpbang = false; - register const float pf = sclmul; - register long o = curpos; - - if(o < curmin) o = curmin; - - if(dorec && LIKELY(curmax > curmin)) { - while(n) { - long ncur = curmax-o; // at max to buffer or recording end - - if(UNLIKELY(ncur <= 0)) { // end of buffer - if(doloop) { - ncur = curmax-(o = curmin); - } - else { - // loop expired; - dorec = false; - Update(xsc_startstop); - } - - lpbang = true; - } - - if(UNLIKELY(!dorec)) break; - - if(UNLIKELY(ncur > n)) ncur = n; - - register int i; - register t_sample *bf = buf.Data()+o*BCHNS; - register float p = scale(o); - - if(sigmode) { - if(appmode) { - // append to current position - - switch(mixmode) { - case 0: - for(i = 0; i < ncur; ++i,++si) { - if(!(*(on++) < 0)) { - for(int ci = 0; ci < ICHNS; ++ci) - bf[ci] = sig[ci][si]; - bf += BCHNS; - *(pos++) = p,p += pf,++o; - } - else - *(pos++) = p; - } - break; - case 1: - for(i = 0; i < ncur; ++i,++si) { - register const t_sample g = *(on++); - if(!(g < 0)) { - for(int ci = 0; ci < ICHNS; ++ci) - bf[ci] = bf[ci]*(1.-g)+sig[ci][si]*g; - bf += BCHNS; - *(pos++) = p,p += pf,++o; - } - else - *(pos++) = p; - } - break; - case 2: - for(i = 0; i < ncur; ++i,++si) { - if(!(*(on++) < 0)) { - for(int ci = 0; ci < ICHNS; ++ci) - bf[ci] += sig[ci][si]; - bf += BCHNS; - *(pos++) = p,p += pf,++o; - } - else - *(pos++) = p; - } - break; - } - } - else { - // don't append - switch(mixmode) { - case 0: { - for(i = 0; i < ncur; ++i,++si) { - if(!(*(on++) < 0)) - { - for(int ci = 0; ci < ICHNS; ++ci) - bf[ci] = sig[ci][si]; - bf += BCHNS; - *(pos++) = p,p += pf,++o; - } - else { - *(pos++) = p = scale(o = 0); - bf = buf.Data(); - } - } - break; - } - case 1: { - for(i = 0; i < ncur; ++i,++si) { - register const t_sample g = *(on++); - if(!(g < 0)) { - for(int ci = 0; ci < ICHNS; ++ci) - bf[ci] = bf[ci]*(1.-g)+sig[ci][si]*g; - bf += BCHNS; - *(pos++) = p,p += pf,++o; - } - else { - *(pos++) = p = scale(o = 0); - bf = buf.Data(); - } - } - break; - } - case 2: { - for(i = 0; i < ncur; ++i,++si) { - if(!(*(on++) < 0)) - { - for(int ci = 0; ci < ICHNS; ++ci) - bf[ci] += sig[ci][si]; - bf += BCHNS; - *(pos++) = p,p += pf,++o; - } - else { - *(pos++) = p = scale(o = 0); - bf = buf.Data(); - } - } - break; - } - } - } - } - else { - // message mode - - // Altivec optimization for that! - switch(mixmode) { - case 0: { - for(int ci = 0; ci < ICHNS; ++ci) { - register t_sample *b = bf+ci; - register const float *s = sig[ci]+si; - for(i = 0; i < ncur; ++i,b += BCHNS,++s) - *b = *s; - } - si += ncur; - break; - } - case 1: { - for(i = 0; i < ncur; ++i,++si) { - register const t_sample w = *(on++); - for(int ci = 0; ci < ICHNS; ++ci) - bf[ci] = bf[ci]*(1.-w)+sig[ci][si]*w; - bf += BCHNS; - } - break; - } - case 2: { - for(int ci = 0; ci < ICHNS; ++ci) { - register t_sample *b = bf+ci; - register const float *s = sig[ci]+si; - for(i = 0; i < ncur; ++i,b += BCHNS,++s) - *b += *s; - } - si += ncur; - break; - } - } - - for(i = 0; i < ncur; ++i) { - *(pos++) = p,p += pf,++o; - } - } - - n -= ncur; - } - curpos = o; - - buf.Dirty(); - } - - if(n) { - register float p = scale(o); - while(n--) *(pos++) = p; - } - - if(lpbang) ToOutBang(3); -} - -void xrecord::CbSignal() -{ - int ret = ChkBuffer(true); - - if(ret) { - // call the appropriate dsp function - - const lock_t l = Lock(); - recfun(Blocksize(),InSig(),OutSig()); - Unlock(l); - - Refresh(); - } - else - // set position signal to zero - ZeroSamples(OutSig()[0],Blocksize()); -} - -void xrecord::DoUpdate(unsigned int flags) -{ - xsample::DoUpdate(flags); - - if(flags&(xsc_pos|xsc_range)) { - if(curpos < curmin) curpos = curmin; - else if(curpos > curmax) curpos = curmax; - } - - if(flags&xsc_range) { - ToOutFloat(1,curmin*s2u); - ToOutFloat(2,curmax*s2u); - } - - if(flags&xsc_transport && buf.Ok()) { - if(dorec) - buf.SetRefrIntv(drintv); - else { - buf.Dirty(true); - buf.SetRefrIntv(0); - } - } - - if(flags&xsc_play) { - switch(buf.Channels()*1000+inchns) { - case 1001: SETSIGFUN(recfun,TMPLFUN(s_rec,1,1)); break; - case 1002: SETSIGFUN(recfun,TMPLFUN(s_rec,1,2)); break; - case 2001: SETSIGFUN(recfun,TMPLFUN(s_rec,2,1)); break; - case 2002: SETSIGFUN(recfun,TMPLFUN(s_rec,2,2)); break; - case 4001: - case 4002: - case 4003: SETSIGFUN(recfun,TMPLFUN(s_rec,4,-1)); break; - case 4004: SETSIGFUN(recfun,TMPLFUN(s_rec,4,4)); break; - default: SETSIGFUN(recfun,TMPLFUN(s_rec,-1,-1)); break; - } - } -} - - -void xrecord::m_help() -{ - post("%s - part of xsample objects, version " XSAMPLE_VERSION,thisName()); -#ifdef FLEXT_DEBUG - post("compiled on " __DATE__ " " __TIME__); -#endif - post("(C) Thomas Grill, 2001-2007"); -#if FLEXT_SYS == FLEXT_SYS_MAX - post("Arguments: %s [channels=1] [buffer]",thisName()); -#else - post("Arguments: %s [buffer]",thisName()); -#endif - post("Inlets: 1:Messages/Audio signal, 2:Trigger signal, 3:Min point, 4: Max point"); - post("Outlets: 1:Position signal, 2:Min point, 3:Max point"); - post("Methods:"); - post("\thelp: shows this help"); - post("\tset [name]: set buffer or reinit"); - post("\tenable 0/1: turn dsp calculation off/on"); - post("\treset: reset min/max recording points and recording offset"); - post("\tprint: print current settings"); - post("\t@sigmode 0/1: specify message or signal triggered recording"); - post("\t@append 0/1: reset recording position or append to current position"); - post("\t@loop 0/1: switches looping off/on"); - post("\t@mixmode 0/1/2: specify how audio signal should be mixed in (none,mixed,added)"); - post("\tmin {unit}: set minimum recording point"); - post("\tmax {unit}: set maximum recording point"); - post("\tall: select entire buffer length"); - post("\tpos {unit}: set recording position (obeying the current scale mode)"); - post("\tbang/start: start recording"); - post("\tstop: stop recording"); - post("\trefresh: checks buffer and refreshes outlets"); - post("\t@units 0/1/2/3: set units to frames/buffer size/ms/s"); - post("\t@sclmode 0/1/2/3: set range of position to units/units in loop/buffer/loop"); - post("\tdraw [{float}]: redraw buffer immediately (arg omitted) or periodic (in ms)"); - post(""); -} - -void xrecord::m_print() -{ - static const char sclmode_txt[][20] = {"units","units in loop","buffer","loop"}; - - // print all current settings - post("%s - current settings:",thisName()); - post("bufname = '%s', length = %.3f, channels = %i",buf.Name(),(float)(buf.Frames()*s2u),buf.Channels()); - post("in channels = %i, frames/unit = %.3f, scale mode = %s",inchns,(float)(1./s2u),sclmode_txt[sclmode]); - post("sigmode = %s, append = %s, loop = %s, mixmode = %i",sigmode?"yes":"no",appmode?"yes":"no",doloop?"yes":"no",mixmode); - post(""); -} - diff --git a/externals/grill/xsample/source/xsample-Info.plist b/externals/grill/xsample/source/xsample-Info.plist deleted file mode 100644 index 3d1bc4c8..00000000 --- a/externals/grill/xsample/source/xsample-Info.plist +++ /dev/null @@ -1,22 +0,0 @@ - - - - - CFBundleDevelopmentRegion - English - CFBundleExecutable - xsample - CFBundleIdentifier - org.grrrr.xsample - CFBundleInfoDictionaryVersion - 6.0 - CFBundlePackageType - iLaX - CFBundleSignature - ???? - CFBundleVersion - 1.0 - CSResourcesFileMapped - yes - - diff --git a/externals/grill/xsample/source/xsample.rsrc b/externals/grill/xsample/source/xsample.rsrc deleted file mode 100755 index eb62e523..00000000 --- a/externals/grill/xsample/source/xsample.rsrc +++ /dev/null @@ -1,29 +0,0 @@ -(This file must be converted with BinHex 4.0) -:!!"bFh*M8P0&4!#3#!8hIF-!N!3"!!!!"-!!!!2!!!!!Gb"MEfjdB@PZC@3JE@9 -cFf&RC5"TEL"LD@jKFRNJ+Lm0$@KcE'PNCA+j,R*cFQ-#!!)!FR0bBe*6483"!2q -3"!)!FR0bBe*6483"!2q3"!#3%U((pmm!N!B%Z#TLAhC`D@il#3N[+L"`BA4MD'P -ZE'9d)'PZ)(4SDA-JF'&dBfKPFLGc)(CTFfpLDL!U,`d*#94&5'&ZC'aP)'*IG'9 -S1`Q3"#mU)(4PH(3JC@4TG'pb)'KKEQ4XC5!U,`d*I5"LAh9Z1`ep1`d0,bSJBQp -i)'CXB@Gc)#S[$3dMC!!!!1aJ#J!!E8&i6!a#!!"1qJ!`6R8LAb!I,S"R%L"!F!! -3%'!%%1J!!9()rrT#%%l4@8m[,`!)6VVrh#"I)!K1G8j@r[T)j`!`*Qi!#&P2,ca -Y3AK-2c`!!DJ1)&mN5#!+Cbi[#NKZr[T)E[lm5'lr!+QS5'lr!%kkrlK)E[m!3IS -!,NK3)'X!N!"1N!"2l`!-B!j"qJ!f5&!JD`#3!%k3!&K260m-!%jH6R@%E@&TEJ! -!3#9c1L"ZEh3JBACKD@aKBQaP)'C[FL!f1%X!G'KTFb"[BQTPBh3JDA-JEQpd)'& -fB@PXB@*XC5"QEh)J0MK,!*!&l'!+!!"Y3AK-$%)!!%lk!$"1G5*I)"mZJ'F5)%" -`!"!3B!33k!!"8FMrqN)36Y&C6bm[!!K1Z[rF)&mJ#%je6PEqqNMR!$!QEJ!)@8m -[2'e"H%`r2!!"U!iJAb4))!TR,Lm+5'lqqNKZr[a)E[m!UDK)E[m!6VVrZ%KZr`" -"qJ!Z5&!JD`#3!%k3!%r[!!aJ$N(k!$C)8#"V!*!!6T!!@%p-h``!6Pj1GB4YB@P -Z!!"!*A-k)'j[G#"KGQ&TE'&LE'8JCQpb)$Bi5`"dD'Pc)'pLDQ9MG#"TFb"ZEh3 -JBACKD@aKBQaP)'C[FL!f1%X!N!AXB!S!!'e"H%`-3J!!6[S!-%je)PmJ(bk!Ca) -J3(!!%""J""$S!!&4b2rk3K"1d9P2,bm!#%kkrp`JAb!)6R919[lk51F!-#CZ!!K -C6bmmE8&i6$mm!!'S$L"I*%JJ#QFZ,`T)E[lk5'lqr%KZr`#TU%KZr`"1Z[qi5'l -r!%(k!#j)8#"V!*!!6T!!6qm!$'!13IS!0NK3)'X!N!"1N!"B6dcI$!"1ANjeK'e -KD@i!!%!PFcSJEQpd)'&fB@PXB@*XC5"QEh)J0MK,!(4SDA-JEf*UC@0d)'Pc)'j -[G#"KGQ&TE'&LE'8JCQpb)$Bi5`#3"HaJ#J!!E8&i6!a#!!"1qJ!`6R8LAb!I,S" -R%L"!F!!3%'!%%1J!!9()rrT#%%l4@8m[,`!)6VVrh#"I)!K1G8j@r[T)j`!`*Qi -!#&P2,caY3AK-2c`!!DJ1)&mN5#!+Cbi[#NKZr[T)E[lm5'lr!+QS5'lr!%kkrlK -)E[m!3IS!,NK3)'X!N!"1N!"2l`!-B!j"qJ!f5&!JD`#3!%k3!&K260m-!%jH6R@ -%E@&TEJ!!3#9c1L"ZEh3JBACKD@aKBQaP)'C[FL!f1%X!G'KTFb"[BQTPBh3JDA- -JEQpd)'&fB@PXB@*XC5"QEh)J0MK,!*!%!3!!!!6!!!!$`!!!!(F9906%"6i!!!! -F!&B!!'e"H%`!!`!+(d!!N!B9901`(d%!#!!!!2!9901X(d)!%3!!!H!9901S(d- -!'!!!!Y!9901N"hKcB@e`E'8)H'GbEfpfCAi'H("XBAPq#(KbC@0[FQ4qq+N: diff --git a/externals/grill/xsample/xsample.mcp b/externals/grill/xsample/xsample.mcp deleted file mode 100755 index 5fbc3068..00000000 Binary files a/externals/grill/xsample/xsample.mcp and /dev/null differ diff --git a/externals/grill/xsample/xsample.vcproj b/externals/grill/xsample/xsample.vcproj deleted file mode 100644 index e978ee7e..00000000 --- a/externals/grill/xsample/xsample.vcproj +++ /dev/null @@ -1,683 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/externals/grill/xsample/xsample.xcode/project.pbxproj b/externals/grill/xsample/xsample.xcode/project.pbxproj deleted file mode 100644 index bffba804..00000000 --- a/externals/grill/xsample/xsample.xcode/project.pbxproj +++ /dev/null @@ -1,625 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 39; - objects = { - 034768DDFF38A45A11DB9C8B = { - children = ( - D2AAC09D05546B4700DB518D, - E9974E53077083C700206F68, - ); - isa = PBXGroup; - name = Products; - refType = 4; - sourceTree = ""; - }; -//030 -//031 -//032 -//033 -//034 -//080 -//081 -//082 -//083 -//084 - 0867D690FE84028FC02AAC07 = { - buildSettings = { - }; - buildStyles = ( - 4F0BB7EC011F40E904CA0E50, - 4F0BB7ED011F40E904CA0E50, - ); - hasScannedForEncodings = 1; - isa = PBXProject; - mainGroup = 0867D691FE84028FC02AAC07; - productRefGroup = 034768DDFF38A45A11DB9C8B; - projectDirPath = ""; - targets = ( - D2AAC09C05546B4700DB518D, - E9974E52077083C700206F68, - ); - }; - 0867D691FE84028FC02AAC07 = { - children = ( - E9974EC507708CFA00206F68, - 08FB77ACFE841707C02AAC07, - 0867D69AFE84028FC02AAC07, - 034768DDFF38A45A11DB9C8B, - ); - isa = PBXGroup; - name = xsample; - refType = 4; - sourceTree = ""; - }; - 0867D69AFE84028FC02AAC07 = { - children = ( - E98C3076078D948800EC0264, - E94AC9630789EEA300AE1770, - E94AC9610789EE8700AE1770, - E9974DFA0770750400206F68, - E9974DFB0770750400206F68, - ); - isa = PBXGroup; - name = "External Frameworks and Libraries"; - refType = 4; - sourceTree = ""; - }; - 08FB77ACFE841707C02AAC07 = { - children = ( - E9974EAF07708BF700206F68, - E9974E58077084DA00206F68, - E9974E2B07707D1400206F68, - E9974DE50770749400206F68, - E9974DE60770749400206F68, - E9974DE70770749400206F68, - E9974DE80770749400206F68, - E9974DE90770749400206F68, - E9974DEA0770749400206F68, - E9974DEB0770749400206F68, - ); - isa = PBXGroup; - name = Source; - refType = 4; - sourceTree = ""; - }; -//080 -//081 -//082 -//083 -//084 -//4F0 -//4F1 -//4F2 -//4F3 -//4F4 - 4F0BB7EC011F40E904CA0E50 = { - buildSettings = { - COPY_PHASE_STRIP = NO; - DEBUGGING_SYMBOLS = YES; - GCC_ALTIVEC_EXTENSIONS = YES; - GCC_DYNAMIC_NO_PIC = NO; - GCC_ENABLE_FIX_AND_CONTINUE = YES; - GCC_GENERATE_DEBUGGING_SYMBOLS = YES; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = source/prefix.h; - GCC_PREPROCESSOR_DEFINITIONS = "$(GCC_PREPROCESSOR_DEFINITIONS) _DEBUG FLEXT_USESIMD"; - OPTIMIZATION_CFLAGS = "-O0"; - ZERO_LINK = YES; - }; - isa = PBXBuildStyle; - name = Development; - }; - 4F0BB7ED011F40E904CA0E50 = { - buildSettings = { - COPY_PHASE_STRIP = YES; - GCC_ALTIVEC_EXTENSIONS = YES; - GCC_ENABLE_FIX_AND_CONTINUE = NO; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = source/prefix.h; - GCC_PREPROCESSOR_DEFINITIONS = "$(GCC_PREPROCESSOR_DEFINITIONS) NDEBUG FLEXT_USESIMD"; - ZERO_LINK = NO; - }; - isa = PBXBuildStyle; - name = Deployment; - }; -//4F0 -//4F1 -//4F2 -//4F3 -//4F4 -//D20 -//D21 -//D22 -//D23 -//D24 - D2AAC09905546B4700DB518D = { - buildActionMask = 2147483647; - files = ( - E9974DF50770749400206F68, - E9974DF70770749400206F68, - E9974E2D07707D1400206F68, - ); - isa = PBXHeadersBuildPhase; - runOnlyForDeploymentPostprocessing = 0; - }; - D2AAC09A05546B4700DB518D = { - buildActionMask = 2147483647; - files = ( - E9974DF30770749400206F68, - E9974DF40770749400206F68, - E9974DF60770749400206F68, - E9974DF80770749400206F68, - E9974DF90770749400206F68, - ); - isa = PBXSourcesBuildPhase; - runOnlyForDeploymentPostprocessing = 0; - }; - D2AAC09B05546B4700DB518D = { - buildActionMask = 2147483647; - files = ( - E94AC9640789EEA300AE1770, - E98C3077078D948800EC0264, - ); - isa = PBXFrameworksBuildPhase; - runOnlyForDeploymentPostprocessing = 0; - }; - D2AAC09C05546B4700DB518D = { - buildPhases = ( - D2AAC09905546B4700DB518D, - D2AAC09B05546B4700DB518D, - D2AAC09A05546B4700DB518D, - ); - buildRules = ( - ); - buildSettings = { - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - EXECUTABLE_EXTENSION = pd_darwin; - GCC_GENERATE_DEBUGGING_SYMBOLS = NO; - GCC_INPUT_FILETYPE = sourcecode.cpp.cpp; - GCC_PREPROCESSOR_DEFINITIONS = "FLEXT_SYS=2"; - HEADER_SEARCH_PATHS = "$(PDApp)/src $(flext)/source"; - INSTALL_PATH = "$(PD)/extra"; - LIBRARY_SEARCH_PATHS = "$(flext)/build"; - LIBRARY_STYLE = BUNDLE; - OTHER_LDFLAGS = "-bundle_loader $(PDApp)/bin/pd"; - PRODUCT_NAME = xsample; - }; - dependencies = ( - ); - isa = PBXNativeTarget; - name = "pd static"; - productName = xsample; - productReference = D2AAC09D05546B4700DB518D; - productType = "com.apple.product-type.library.dynamic"; - }; - D2AAC09D05546B4700DB518D = { - explicitFileType = "compiled.mach-o.dylib"; - includeInIndex = 0; - isa = PBXFileReference; - path = xsample.pd_darwin; - refType = 3; - sourceTree = BUILT_PRODUCTS_DIR; - }; -//D20 -//D21 -//D22 -//D23 -//D24 -//E90 -//E91 -//E92 -//E93 -//E94 - E94AC9610789EE8700AE1770 = { - isa = PBXFileReference; - lastKnownFileType = archive.ar; - name = "libflext-max_sd.a"; - path = "/usr/local/lib/libflext-max_sd.a"; - refType = 0; - sourceTree = ""; - }; - E94AC9630789EEA300AE1770 = { - isa = PBXFileReference; - lastKnownFileType = archive.ar; - name = "libflext-pd_sd.a"; - path = "/usr/local/lib/libflext-pd_sd.a"; - refType = 0; - sourceTree = ""; - }; - E94AC9640789EEA300AE1770 = { - fileRef = E94AC9630789EEA300AE1770; - isa = PBXBuildFile; - settings = { - }; - }; - E98C3076078D948800EC0264 = { - isa = PBXFileReference; - lastKnownFileType = wrapper.framework; - name = vecLib.framework; - path = /System/Library/Frameworks/vecLib.framework; - refType = 0; - sourceTree = ""; - }; - E98C3077078D948800EC0264 = { - fileRef = E98C3076078D948800EC0264; - isa = PBXBuildFile; - settings = { - }; - }; - E98C3078078D948800EC0264 = { - fileRef = E98C3076078D948800EC0264; - isa = PBXBuildFile; - settings = { - }; - }; - E9974DE50770749400206F68 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.cpp.cpp; - name = groove.cpp; - path = source/groove.cpp; - refType = 4; - sourceTree = ""; - }; - E9974DE60770749400206F68 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.cpp.cpp; - name = inter.cpp; - path = source/inter.cpp; - refType = 4; - sourceTree = ""; - }; - E9974DE70770749400206F68 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - name = inter.h; - path = source/inter.h; - refType = 4; - sourceTree = ""; - }; - E9974DE80770749400206F68 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.cpp.cpp; - name = main.cpp; - path = source/main.cpp; - refType = 4; - sourceTree = ""; - }; - E9974DE90770749400206F68 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - name = main.h; - path = source/main.h; - refType = 4; - sourceTree = ""; - }; - E9974DEA0770749400206F68 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.cpp.cpp; - name = play.cpp; - path = source/play.cpp; - refType = 4; - sourceTree = ""; - }; - E9974DEB0770749400206F68 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.cpp.cpp; - name = record.cpp; - path = source/record.cpp; - refType = 4; - sourceTree = ""; - }; - E9974DF30770749400206F68 = { - fileRef = E9974DE50770749400206F68; - isa = PBXBuildFile; - settings = { - }; - }; - E9974DF40770749400206F68 = { - fileRef = E9974DE60770749400206F68; - isa = PBXBuildFile; - settings = { - }; - }; - E9974DF50770749400206F68 = { - fileRef = E9974DE70770749400206F68; - isa = PBXBuildFile; - settings = { - }; - }; - E9974DF60770749400206F68 = { - fileRef = E9974DE80770749400206F68; - isa = PBXBuildFile; - settings = { - }; - }; - E9974DF70770749400206F68 = { - fileRef = E9974DE90770749400206F68; - isa = PBXBuildFile; - settings = { - }; - }; - E9974DF80770749400206F68 = { - fileRef = E9974DEA0770749400206F68; - isa = PBXBuildFile; - settings = { - }; - }; - E9974DF90770749400206F68 = { - fileRef = E9974DEB0770749400206F68; - isa = PBXBuildFile; - settings = { - }; - }; - E9974DFA0770750400206F68 = { - isa = PBXFileReference; - lastKnownFileType = wrapper.framework; - name = MaxAPI.framework; - path = /Library/Frameworks/MaxAPI.framework; - refType = 0; - sourceTree = ""; - }; - E9974DFB0770750400206F68 = { - isa = PBXFileReference; - lastKnownFileType = wrapper.framework; - name = MaxAudioAPI.framework; - path = /Library/Frameworks/MaxAudioAPI.framework; - refType = 0; - sourceTree = ""; - }; - E9974E2B07707D1400206F68 = { - fileEncoding = 4; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - name = prefix.h; - path = source/prefix.h; - refType = 4; - sourceTree = ""; - }; - E9974E2D07707D1400206F68 = { - fileRef = E9974E2B07707D1400206F68; - isa = PBXBuildFile; - settings = { - }; - }; - E9974E4F077083C700206F68 = { - buildActionMask = 2147483647; - files = ( - E9974E59077084DA00206F68, - E9974EB007708BF700206F68, - ); - isa = PBXResourcesBuildPhase; - runOnlyForDeploymentPostprocessing = 0; - }; - E9974E50077083C700206F68 = { - buildActionMask = 2147483647; - files = ( - E9974E5E0770852000206F68, - E9974E5F0770852000206F68, - E9974E600770852000206F68, - E9974E610770852000206F68, - E9974E620770852000206F68, - E9974E630770852000206F68, - E9974E640770852000206F68, - E9974E650770852000206F68, - ); - isa = PBXSourcesBuildPhase; - runOnlyForDeploymentPostprocessing = 0; - }; - E9974E51077083C700206F68 = { - buildActionMask = 2147483647; - files = ( - E9B5873A08E6F228002DA49F, - E9974E5C0770851700206F68, - E9974E5B0770851500206F68, - E98C3078078D948800EC0264, - ); - isa = PBXFrameworksBuildPhase; - runOnlyForDeploymentPostprocessing = 0; - }; - E9974E52077083C700206F68 = { - buildPhases = ( - E9974E4F077083C700206F68, - E9974E50077083C700206F68, - E9974E51077083C700206F68, - E9974EC207708C9300206F68, - ); - buildRules = ( - ); - buildSettings = { - GCC_PREPROCESSOR_DEFINITIONS = "FLEXT_SYS=1"; - GENERATE_PKGINFO_FILE = YES; - HEADER_SEARCH_PATHS = "$(MaxSDK)/max-includes $(MaxSDK)/msp-includes $(flext)/source"; - INFOPLIST_FILE = "source/xsample-Info.plist"; - INSTALL_PATH = "/Library/Application Support/Cycling 74/externals/flext"; - LIBRARY_SEARCH_PATHS = "$(flext)/build"; - LIBRARY_STYLE = DYNAMIC; - OTHER_CFLAGS = ""; - OTHER_REZFLAGS = ""; - PRODUCT_NAME = xsample; - SECTORDER_FLAGS = ""; - WARNING_CFLAGS = "-Wmost -Wno-four-char-constants -Wno-unknown-pragmas"; - WRAPPER_EXTENSION = mxo; - }; - dependencies = ( - ); - isa = PBXNativeTarget; - name = "max static"; - productName = "Max xsample static"; - productReference = E9974E53077083C700206F68; - productSettingsXML = " - - - - CFBundleDevelopmentRegion - English - CFBundleExecutable - Max xsample static - CFBundleIdentifier - com.yourcompany.Max_xsample_static - CFBundleInfoDictionaryVersion - 6.0 - CFBundlePackageType - APPL - CFBundleSignature - ???? - CFBundleVersion - 1.0 - CSResourcesFileMapped - yes - - -"; - productType = "com.apple.product-type.bundle"; - }; - E9974E53077083C700206F68 = { - explicitFileType = wrapper.cfbundle; - includeInIndex = 0; - isa = PBXFileReference; - path = xsample.mxo; - refType = 3; - sourceTree = BUILT_PRODUCTS_DIR; - }; - E9974E58077084DA00206F68 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = text.xml; - name = "xsample-Info.plist"; - path = "source/xsample-Info.plist"; - refType = 4; - sourceTree = ""; - }; - E9974E59077084DA00206F68 = { - fileRef = E9974E58077084DA00206F68; - isa = PBXBuildFile; - settings = { - }; - }; - E9974E5B0770851500206F68 = { - fileRef = E9974DFA0770750400206F68; - isa = PBXBuildFile; - settings = { - }; - }; - E9974E5C0770851700206F68 = { - fileRef = E9974DFB0770750400206F68; - isa = PBXBuildFile; - settings = { - }; - }; - E9974E5E0770852000206F68 = { - fileRef = E9974E2B07707D1400206F68; - isa = PBXBuildFile; - settings = { - }; - }; - E9974E5F0770852000206F68 = { - fileRef = E9974DE50770749400206F68; - isa = PBXBuildFile; - settings = { - }; - }; - E9974E600770852000206F68 = { - fileRef = E9974DE60770749400206F68; - isa = PBXBuildFile; - settings = { - }; - }; - E9974E610770852000206F68 = { - fileRef = E9974DE70770749400206F68; - isa = PBXBuildFile; - settings = { - }; - }; - E9974E620770852000206F68 = { - fileRef = E9974DE80770749400206F68; - isa = PBXBuildFile; - settings = { - }; - }; - E9974E630770852000206F68 = { - fileRef = E9974DE90770749400206F68; - isa = PBXBuildFile; - settings = { - }; - }; - E9974E640770852000206F68 = { - fileRef = E9974DEA0770749400206F68; - isa = PBXBuildFile; - settings = { - }; - }; - E9974E650770852000206F68 = { - fileRef = E9974DEB0770749400206F68; - isa = PBXBuildFile; - settings = { - }; - }; - E9974EAF07708BF700206F68 = { - isa = PBXFileReference; - lastKnownFileType = archive.rsrc; - name = xsample.rsrc; - path = source/xsample.rsrc; - refType = 4; - sourceTree = ""; - }; - E9974EB007708BF700206F68 = { - fileRef = E9974EAF07708BF700206F68; - isa = PBXBuildFile; - settings = { - }; - }; - E9974EC207708C9300206F68 = { - buildActionMask = 8; - dstPath = "/Library/Application Support/Cycling '74/init"; - dstSubfolderSpec = 0; - files = ( - E9974EC607708D0C00206F68, - ); - isa = PBXCopyFilesBuildPhase; - runOnlyForDeploymentPostprocessing = 1; - }; - E9974EC307708CED00206F68 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = text; - name = "xsample-objectmappings.txt"; - path = "maxmsp/xsample-objectmappings.txt"; - refType = 4; - sourceTree = ""; - }; - E9974EC507708CFA00206F68 = { - children = ( - E9974EC307708CED00206F68, - ); - isa = PBXGroup; - name = Max; - refType = 4; - sourceTree = ""; - }; - E9974EC607708D0C00206F68 = { - fileRef = E9974EC307708CED00206F68; - isa = PBXBuildFile; - settings = { - }; - }; - E9B5873A08E6F228002DA49F = { - fileRef = E94AC9610789EE8700AE1770; - isa = PBXBuildFile; - settings = { - }; - }; - }; - rootObject = 0867D690FE84028FC02AAC07; -} diff --git a/externals/grill/xsample/xsample.xcodeproj/project.pbxproj b/externals/grill/xsample/xsample.xcodeproj/project.pbxproj deleted file mode 100644 index 90e0aa55..00000000 --- a/externals/grill/xsample/xsample.xcodeproj/project.pbxproj +++ /dev/null @@ -1,529 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 42; - objects = { - -/* Begin PBXBuildFile section */ - E94AC9640789EEA300AE1770 /* libflext-pd_sd.a in Frameworks */ = {isa = PBXBuildFile; fileRef = E94AC9630789EEA300AE1770 /* libflext-pd_sd.a */; }; - E98C3077078D948800EC0264 /* vecLib.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E98C3076078D948800EC0264 /* vecLib.framework */; }; - E98C3078078D948800EC0264 /* vecLib.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E98C3076078D948800EC0264 /* vecLib.framework */; }; - E9974DF30770749400206F68 /* groove.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E9974DE50770749400206F68 /* groove.cpp */; }; - E9974DF40770749400206F68 /* inter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E9974DE60770749400206F68 /* inter.cpp */; }; - E9974DF50770749400206F68 /* inter.h in Headers */ = {isa = PBXBuildFile; fileRef = E9974DE70770749400206F68 /* inter.h */; }; - E9974DF60770749400206F68 /* main.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E9974DE80770749400206F68 /* main.cpp */; }; - E9974DF70770749400206F68 /* main.h in Headers */ = {isa = PBXBuildFile; fileRef = E9974DE90770749400206F68 /* main.h */; }; - E9974DF80770749400206F68 /* play.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E9974DEA0770749400206F68 /* play.cpp */; }; - E9974DF90770749400206F68 /* record.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E9974DEB0770749400206F68 /* record.cpp */; }; - E9974E2D07707D1400206F68 /* prefix.h in Headers */ = {isa = PBXBuildFile; fileRef = E9974E2B07707D1400206F68 /* prefix.h */; }; - E9974E59077084DA00206F68 /* xsample-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = E9974E58077084DA00206F68 /* xsample-Info.plist */; }; - E9974E5B0770851500206F68 /* MaxAPI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E9974DFA0770750400206F68 /* MaxAPI.framework */; }; - E9974E5C0770851700206F68 /* MaxAudioAPI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E9974DFB0770750400206F68 /* MaxAudioAPI.framework */; }; - E9974E5E0770852000206F68 /* prefix.h in Sources */ = {isa = PBXBuildFile; fileRef = E9974E2B07707D1400206F68 /* prefix.h */; }; - E9974E5F0770852000206F68 /* groove.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E9974DE50770749400206F68 /* groove.cpp */; }; - E9974E600770852000206F68 /* inter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E9974DE60770749400206F68 /* inter.cpp */; }; - E9974E610770852000206F68 /* inter.h in Sources */ = {isa = PBXBuildFile; fileRef = E9974DE70770749400206F68 /* inter.h */; }; - E9974E620770852000206F68 /* main.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E9974DE80770749400206F68 /* main.cpp */; }; - E9974E630770852000206F68 /* main.h in Sources */ = {isa = PBXBuildFile; fileRef = E9974DE90770749400206F68 /* main.h */; }; - E9974E640770852000206F68 /* play.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E9974DEA0770749400206F68 /* play.cpp */; }; - E9974E650770852000206F68 /* record.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E9974DEB0770749400206F68 /* record.cpp */; }; - E9974EB007708BF700206F68 /* xsample.rsrc in Resources */ = {isa = PBXBuildFile; fileRef = E9974EAF07708BF700206F68 /* xsample.rsrc */; }; - E9974EC607708D0C00206F68 /* xsample-objectmappings.txt in CopyFiles */ = {isa = PBXBuildFile; fileRef = E9974EC307708CED00206F68 /* xsample-objectmappings.txt */; }; - E9B5873A08E6F228002DA49F /* libflext-max_sd.a in Frameworks */ = {isa = PBXBuildFile; fileRef = E94AC9610789EE8700AE1770 /* libflext-max_sd.a */; }; -/* End PBXBuildFile section */ - -/* Begin PBXCopyFilesBuildPhase section */ - E9974EC207708C9300206F68 /* CopyFiles */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 8; - dstPath = "/Library/Application Support/Cycling '74/init"; - dstSubfolderSpec = 0; - files = ( - E9974EC607708D0C00206F68 /* xsample-objectmappings.txt in CopyFiles */, - ); - runOnlyForDeploymentPostprocessing = 1; - }; -/* End PBXCopyFilesBuildPhase section */ - -/* Begin PBXFileReference section */ - D2AAC09D05546B4700DB518D /* xsample.pd_darwin */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.dylib"; includeInIndex = 0; path = xsample.pd_darwin; sourceTree = BUILT_PRODUCTS_DIR; }; - E94AC9610789EE8700AE1770 /* libflext-max_sd.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = "libflext-max_sd.a"; path = "/usr/local/lib/libflext-max_sd.a"; sourceTree = ""; }; - E94AC9630789EEA300AE1770 /* libflext-pd_sd.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = "libflext-pd_sd.a"; path = "/usr/local/lib/libflext-pd_sd.a"; sourceTree = ""; }; - E98C3076078D948800EC0264 /* vecLib.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = vecLib.framework; path = /System/Library/Frameworks/vecLib.framework; sourceTree = ""; }; - E9974DE50770749400206F68 /* groove.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = groove.cpp; path = source/groove.cpp; sourceTree = ""; }; - E9974DE60770749400206F68 /* inter.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = inter.cpp; path = source/inter.cpp; sourceTree = ""; }; - E9974DE70770749400206F68 /* inter.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = inter.h; path = source/inter.h; sourceTree = ""; }; - E9974DE80770749400206F68 /* main.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = main.cpp; path = source/main.cpp; sourceTree = ""; }; - E9974DE90770749400206F68 /* main.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = main.h; path = source/main.h; sourceTree = ""; }; - E9974DEA0770749400206F68 /* play.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = play.cpp; path = source/play.cpp; sourceTree = ""; }; - E9974DEB0770749400206F68 /* record.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = record.cpp; path = source/record.cpp; sourceTree = ""; }; - E9974DFA0770750400206F68 /* MaxAPI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MaxAPI.framework; path = /Library/Frameworks/MaxAPI.framework; sourceTree = ""; }; - E9974DFB0770750400206F68 /* MaxAudioAPI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MaxAudioAPI.framework; path = /Library/Frameworks/MaxAudioAPI.framework; sourceTree = ""; }; - E9974E2B07707D1400206F68 /* prefix.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = prefix.h; path = source/prefix.h; sourceTree = ""; }; - E9974E53077083C700206F68 /* xsample.mxo */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = xsample.mxo; sourceTree = BUILT_PRODUCTS_DIR; }; - E9974E58077084DA00206F68 /* xsample-Info.plist */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.xml; name = "xsample-Info.plist"; path = "source/xsample-Info.plist"; sourceTree = ""; }; - E9974EAF07708BF700206F68 /* xsample.rsrc */ = {isa = PBXFileReference; lastKnownFileType = archive.rsrc; name = xsample.rsrc; path = source/xsample.rsrc; sourceTree = ""; }; - E9974EC307708CED00206F68 /* xsample-objectmappings.txt */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; name = "xsample-objectmappings.txt"; path = "maxmsp/xsample-objectmappings.txt"; sourceTree = ""; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - D2AAC09B05546B4700DB518D /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - E94AC9640789EEA300AE1770 /* libflext-pd_sd.a in Frameworks */, - E98C3077078D948800EC0264 /* vecLib.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - E9974E51077083C700206F68 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - E9B5873A08E6F228002DA49F /* libflext-max_sd.a in Frameworks */, - E9974E5C0770851700206F68 /* MaxAudioAPI.framework in Frameworks */, - E9974E5B0770851500206F68 /* MaxAPI.framework in Frameworks */, - E98C3078078D948800EC0264 /* vecLib.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 034768DDFF38A45A11DB9C8B /* Products */ = { - isa = PBXGroup; - children = ( - D2AAC09D05546B4700DB518D /* xsample.pd_darwin */, - E9974E53077083C700206F68 /* xsample.mxo */, - ); - name = Products; - sourceTree = ""; - }; - 0867D691FE84028FC02AAC07 /* xsample */ = { - isa = PBXGroup; - children = ( - E9974EC507708CFA00206F68 /* Max */, - 08FB77ACFE841707C02AAC07 /* Source */, - 0867D69AFE84028FC02AAC07 /* External Frameworks and Libraries */, - 034768DDFF38A45A11DB9C8B /* Products */, - ); - name = xsample; - sourceTree = ""; - }; - 0867D69AFE84028FC02AAC07 /* External Frameworks and Libraries */ = { - isa = PBXGroup; - children = ( - E98C3076078D948800EC0264 /* vecLib.framework */, - E94AC9630789EEA300AE1770 /* libflext-pd_sd.a */, - E94AC9610789EE8700AE1770 /* libflext-max_sd.a */, - E9974DFA0770750400206F68 /* MaxAPI.framework */, - E9974DFB0770750400206F68 /* MaxAudioAPI.framework */, - ); - name = "External Frameworks and Libraries"; - sourceTree = ""; - }; - 08FB77ACFE841707C02AAC07 /* Source */ = { - isa = PBXGroup; - children = ( - E9974EAF07708BF700206F68 /* xsample.rsrc */, - E9974E58077084DA00206F68 /* xsample-Info.plist */, - E9974E2B07707D1400206F68 /* prefix.h */, - E9974DE50770749400206F68 /* groove.cpp */, - E9974DE60770749400206F68 /* inter.cpp */, - E9974DE70770749400206F68 /* inter.h */, - E9974DE80770749400206F68 /* main.cpp */, - E9974DE90770749400206F68 /* main.h */, - E9974DEA0770749400206F68 /* play.cpp */, - E9974DEB0770749400206F68 /* record.cpp */, - ); - name = Source; - sourceTree = ""; - }; - E9974EC507708CFA00206F68 /* Max */ = { - isa = PBXGroup; - children = ( - E9974EC307708CED00206F68 /* xsample-objectmappings.txt */, - ); - name = Max; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXHeadersBuildPhase section */ - D2AAC09905546B4700DB518D /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - E9974DF50770749400206F68 /* inter.h in Headers */, - E9974DF70770749400206F68 /* main.h in Headers */, - E9974E2D07707D1400206F68 /* prefix.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXHeadersBuildPhase section */ - -/* Begin PBXNativeTarget section */ - D2AAC09C05546B4700DB518D /* pd static */ = { - isa = PBXNativeTarget; - buildConfigurationList = E9A5BC8A0A33819900AD9F03 /* Build configuration list for PBXNativeTarget "pd static" */; - buildPhases = ( - D2AAC09905546B4700DB518D /* Headers */, - D2AAC09B05546B4700DB518D /* Frameworks */, - D2AAC09A05546B4700DB518D /* Sources */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = "pd static"; - productName = xsample; - productReference = D2AAC09D05546B4700DB518D /* xsample.pd_darwin */; - productType = "com.apple.product-type.library.dynamic"; - }; - E9974E52077083C700206F68 /* max static */ = { - isa = PBXNativeTarget; - buildConfigurationList = E9A5BC8E0A33819900AD9F03 /* Build configuration list for PBXNativeTarget "max static" */; - buildPhases = ( - E9974E4F077083C700206F68 /* Resources */, - E9974E50077083C700206F68 /* Sources */, - E9974E51077083C700206F68 /* Frameworks */, - E9974EC207708C9300206F68 /* CopyFiles */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = "max static"; - productName = "Max xsample static"; - productReference = E9974E53077083C700206F68 /* xsample.mxo */; - productType = "com.apple.product-type.bundle"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - 0867D690FE84028FC02AAC07 /* Project object */ = { - isa = PBXProject; - buildConfigurationList = E9A5BC920A33819900AD9F03 /* Build configuration list for PBXProject "xsample" */; - hasScannedForEncodings = 1; - mainGroup = 0867D691FE84028FC02AAC07 /* xsample */; - productRefGroup = 034768DDFF38A45A11DB9C8B /* Products */; - projectDirPath = ""; - targets = ( - D2AAC09C05546B4700DB518D /* pd static */, - E9974E52077083C700206F68 /* max static */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXResourcesBuildPhase section */ - E9974E4F077083C700206F68 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - E9974E59077084DA00206F68 /* xsample-Info.plist in Resources */, - E9974EB007708BF700206F68 /* xsample.rsrc in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - D2AAC09A05546B4700DB518D /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - E9974DF30770749400206F68 /* groove.cpp in Sources */, - E9974DF40770749400206F68 /* inter.cpp in Sources */, - E9974DF60770749400206F68 /* main.cpp in Sources */, - E9974DF80770749400206F68 /* play.cpp in Sources */, - E9974DF90770749400206F68 /* record.cpp in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - E9974E50077083C700206F68 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - E9974E5E0770852000206F68 /* prefix.h in Sources */, - E9974E5F0770852000206F68 /* groove.cpp in Sources */, - E9974E600770852000206F68 /* inter.cpp in Sources */, - E9974E610770852000206F68 /* inter.h in Sources */, - E9974E620770852000206F68 /* main.cpp in Sources */, - E9974E630770852000206F68 /* main.h in Sources */, - E9974E640770852000206F68 /* play.cpp in Sources */, - E9974E650770852000206F68 /* record.cpp in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin XCBuildConfiguration section */ - E9A5BC8B0A33819900AD9F03 /* Development */ = { - isa = XCBuildConfiguration; - buildSettings = { - COPY_PHASE_STRIP = NO; - DEBUGGING_SYMBOLS = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - EXECUTABLE_EXTENSION = pd_darwin; - GCC_ALTIVEC_EXTENSIONS = YES; - GCC_DYNAMIC_NO_PIC = NO; - GCC_ENABLE_FIX_AND_CONTINUE = YES; - GCC_GENERATE_DEBUGGING_SYMBOLS = YES; - GCC_INPUT_FILETYPE = sourcecode.cpp.cpp; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = source/prefix.h; - GCC_PREPROCESSOR_DEFINITIONS = ( - "FLEXT_SYS=2", - _DEBUG, - FLEXT_USESIMD, - ); - HEADER_SEARCH_PATHS = ( - "$(PD-devel)/src", - /usr/local/include/flext, - ); - INSTALL_PATH = "$(PD)/extra"; - LIBRARY_SEARCH_PATHS = ""; - LIBRARY_STYLE = BUNDLE; - MACH_O_TYPE = mh_dylib; - MACOSX_DEPLOYMENT_TARGET = 10.3; - OPTIMIZATION_CFLAGS = "-O0"; - OTHER_LDFLAGS = ( - "-undefined", - dynamic_lookup, - ); - PRODUCT_NAME = xsample; - ZERO_LINK = YES; - }; - name = Development; - }; - E9A5BC8C0A33819900AD9F03 /* Deployment */ = { - isa = XCBuildConfiguration; - buildSettings = { - COPY_PHASE_STRIP = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - EXECUTABLE_EXTENSION = pd_darwin; - GCC_ALTIVEC_EXTENSIONS = YES; - GCC_AUTO_VECTORIZATION = YES; - GCC_ENABLE_FIX_AND_CONTINUE = NO; - GCC_ENABLE_SSE3_EXTENSIONS = YES; - GCC_FAST_MATH = YES; - GCC_GENERATE_DEBUGGING_SYMBOLS = YES; - GCC_OPTIMIZATION_LEVEL = s; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = source/prefix.h; - GCC_PREPROCESSOR_DEFINITIONS = ( - "FLEXT_SYS=2", - NDEBUG, - FLEXT_USESIMD, - ); - HEADER_SEARCH_PATHS = ( - "$(PD)/src", - "$(flext)/source", - ); - INSTALL_PATH = "$(PD)/extra"; - LIBRARY_SEARCH_PATHS = "$(flext)/build"; - LIBRARY_STYLE = BUNDLE; - MACH_O_TYPE = mh_dylib; - MACOSX_DEPLOYMENT_TARGET = 10.3; - OTHER_LDFLAGS = ( - "-lflext-pd_s", - "-undefined", - dynamic_lookup, - ); - PRODUCT_NAME = xsample; - ZERO_LINK = NO; - }; - name = Deployment; - }; - E9A5BC8D0A33819900AD9F03 /* Default */ = { - isa = XCBuildConfiguration; - buildSettings = { - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - EXECUTABLE_EXTENSION = pd_darwin; - GCC_GENERATE_DEBUGGING_SYMBOLS = NO; - GCC_INPUT_FILETYPE = sourcecode.cpp.cpp; - GCC_PREPROCESSOR_DEFINITIONS = "FLEXT_SYS=2"; - HEADER_SEARCH_PATHS = ( - "$(PDApp)/src", - "$(flext)/source", - ); - INSTALL_PATH = "$(PD)/extra"; - LIBRARY_SEARCH_PATHS = "$(flext)/build"; - LIBRARY_STYLE = BUNDLE; - MACH_O_TYPE = mh_bundle; - OTHER_LDFLAGS = ( - "-bundle_loader", - "$(PDApp)/bin/pd", - ); - PRODUCT_NAME = xsample; - }; - name = Default; - }; - E9A5BC8F0A33819900AD9F03 /* Development */ = { - isa = XCBuildConfiguration; - buildSettings = { - COPY_PHASE_STRIP = NO; - DEBUGGING_SYMBOLS = YES; - GCC_ALTIVEC_EXTENSIONS = YES; - GCC_DYNAMIC_NO_PIC = NO; - GCC_ENABLE_FIX_AND_CONTINUE = YES; - GCC_GENERATE_DEBUGGING_SYMBOLS = YES; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = source/prefix.h; - GCC_PREPROCESSOR_DEFINITIONS = ( - "FLEXT_SYS=1", - _DEBUG, - FLEXT_USESIMD, - ); - GENERATE_PKGINFO_FILE = YES; - HEADER_SEARCH_PATHS = ( - "$(maxsdk)/max-includes", - "$(maxsdk)/msp-includes", - "$(flext)/source", - ); - INFOPLIST_FILE = "source/xsample-Info.plist"; - INSTALL_PATH = "/Library/Application Support/Cycling 74/externals/flext"; - LIBRARY_SEARCH_PATHS = "$(flext)/build"; - LIBRARY_STYLE = DYNAMIC; - OPTIMIZATION_CFLAGS = "-O0"; - OTHER_CFLAGS = ""; - OTHER_REZFLAGS = ""; - PRODUCT_NAME = xsample; - SECTORDER_FLAGS = ""; - WARNING_CFLAGS = ( - "-Wmost", - "-Wno-four-char-constants", - "-Wno-unknown-pragmas", - ); - WRAPPER_EXTENSION = mxo; - ZERO_LINK = YES; - }; - name = Development; - }; - E9A5BC900A33819900AD9F03 /* Deployment */ = { - isa = XCBuildConfiguration; - buildSettings = { - COPY_PHASE_STRIP = YES; - GCC_ALTIVEC_EXTENSIONS = YES; - GCC_ENABLE_FIX_AND_CONTINUE = NO; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = source/prefix.h; - GCC_PREPROCESSOR_DEFINITIONS = ( - "FLEXT_SYS=1", - NDEBUG, - FLEXT_USESIMD, - ); - GENERATE_PKGINFO_FILE = YES; - HEADER_SEARCH_PATHS = ( - "$(maxsdk)/max-includes", - "$(maxsdk)/msp-includes", - "$(flext)/source", - ); - INFOPLIST_FILE = "source/xsample-Info.plist"; - INSTALL_PATH = "/Library/Application Support/Cycling 74/externals/flext"; - LIBRARY_SEARCH_PATHS = "$(flext)/build"; - LIBRARY_STYLE = DYNAMIC; - OTHER_CFLAGS = ""; - OTHER_LDFLAGS = "-lflext-max_s"; - OTHER_REZFLAGS = ""; - PRODUCT_NAME = xsample; - SECTORDER_FLAGS = ""; - WARNING_CFLAGS = ( - "-Wmost", - "-Wno-four-char-constants", - "-Wno-unknown-pragmas", - ); - WRAPPER_EXTENSION = mxo; - ZERO_LINK = NO; - }; - name = Deployment; - }; - E9A5BC910A33819900AD9F03 /* Default */ = { - isa = XCBuildConfiguration; - buildSettings = { - GCC_PREPROCESSOR_DEFINITIONS = "FLEXT_SYS=1"; - GENERATE_PKGINFO_FILE = YES; - HEADER_SEARCH_PATHS = ( - "$(maxsdk)/max-includes", - "$(maxsdk)/msp-includes", - "$(flext)/source", - ); - INFOPLIST_FILE = "source/xsample-Info.plist"; - INSTALL_PATH = "/Library/Application Support/Cycling 74/externals/flext"; - LIBRARY_SEARCH_PATHS = "$(flext)/build"; - LIBRARY_STYLE = DYNAMIC; - OTHER_CFLAGS = ""; - OTHER_REZFLAGS = ""; - PRODUCT_NAME = xsample; - SECTORDER_FLAGS = ""; - WARNING_CFLAGS = ( - "-Wmost", - "-Wno-four-char-constants", - "-Wno-unknown-pragmas", - ); - WRAPPER_EXTENSION = mxo; - }; - name = Default; - }; - E9A5BC930A33819900AD9F03 /* Development */ = { - isa = XCBuildConfiguration; - buildSettings = { - }; - name = Development; - }; - E9A5BC940A33819900AD9F03 /* Deployment */ = { - isa = XCBuildConfiguration; - buildSettings = { - }; - name = Deployment; - }; - E9A5BC950A33819900AD9F03 /* Default */ = { - isa = XCBuildConfiguration; - buildSettings = { - }; - name = Default; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - E9A5BC8A0A33819900AD9F03 /* Build configuration list for PBXNativeTarget "pd static" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - E9A5BC8B0A33819900AD9F03 /* Development */, - E9A5BC8C0A33819900AD9F03 /* Deployment */, - E9A5BC8D0A33819900AD9F03 /* Default */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Default; - }; - E9A5BC8E0A33819900AD9F03 /* Build configuration list for PBXNativeTarget "max static" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - E9A5BC8F0A33819900AD9F03 /* Development */, - E9A5BC900A33819900AD9F03 /* Deployment */, - E9A5BC910A33819900AD9F03 /* Default */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Default; - }; - E9A5BC920A33819900AD9F03 /* Build configuration list for PBXProject "xsample" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - E9A5BC930A33819900AD9F03 /* Development */, - E9A5BC940A33819900AD9F03 /* Deployment */, - E9A5BC950A33819900AD9F03 /* Default */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Default; - }; -/* End XCConfigurationList section */ - }; - rootObject = 0867D690FE84028FC02AAC07 /* Project object */; -} -- cgit v1.2.1