aboutsummaryrefslogtreecommitdiff
path: root/externals/grill/xsample
diff options
context:
space:
mode:
authorThomas Grill <xovo@users.sourceforge.net>2009-04-01 21:13:09 +0000
committerThomas Grill <xovo@users.sourceforge.net>2009-04-01 21:13:09 +0000
commit0ed7a8b68dd73e2b0473b8127aeca99f3bac9061 (patch)
tree5c67818b38a5cc2f9caa5ca7f8640ca356adf02b /externals/grill/xsample
parentbb4c7f6a245394d09dac9adfb2efb093d3d98452 (diff)
cleaned up grill externals - replaced with svn:externals to svn.grrrr.org/ext/trunk/
svn path=/trunk/; revision=10951
Diffstat (limited to 'externals/grill/xsample')
-rw-r--r--externals/grill/xsample/.DS_Storebin6148 -> 0 bytes
-rw-r--r--externals/grill/xsample/gpl.txt346
-rw-r--r--externals/grill/xsample/license.txt51
-rw-r--r--externals/grill/xsample/maxmsp/xsample-objectmappings.txt7
-rwxr-xr-xexternals/grill/xsample/maxmsp/xsample.helpbin19194 -> 0 bytes
-rw-r--r--externals/grill/xsample/package.txt23
-rw-r--r--externals/grill/xsample/pd-ex/xplaydemo.pd79
-rw-r--r--externals/grill/xsample/pd-ex/xsampledemo.pd68
-rw-r--r--externals/grill/xsample/pd/xgroove~-help.pd250
-rw-r--r--externals/grill/xsample/pd/xplay~-help.pd123
-rw-r--r--externals/grill/xsample/pd/xrecord~-help.pd168
-rw-r--r--externals/grill/xsample/readme.txt172
-rw-r--r--externals/grill/xsample/source/groove.cpp810
-rw-r--r--externals/grill/xsample/source/inter.cpp82
-rw-r--r--externals/grill/xsample/source/inter.h420
-rw-r--r--externals/grill/xsample/source/main.cpp220
-rw-r--r--externals/grill/xsample/source/main.h464
-rw-r--r--externals/grill/xsample/source/play.cpp151
-rw-r--r--externals/grill/xsample/source/prefix.h15
-rw-r--r--externals/grill/xsample/source/record.cpp497
-rw-r--r--externals/grill/xsample/source/xsample-Info.plist22
-rwxr-xr-xexternals/grill/xsample/source/xsample.rsrc29
-rwxr-xr-xexternals/grill/xsample/xsample.mcpbin456081 -> 0 bytes
-rw-r--r--externals/grill/xsample/xsample.vcproj683
-rw-r--r--externals/grill/xsample/xsample.xcode/project.pbxproj625
-rw-r--r--externals/grill/xsample/xsample.xcodeproj/project.pbxproj529
26 files changed, 0 insertions, 5834 deletions
diff --git a/externals/grill/xsample/.DS_Store b/externals/grill/xsample/.DS_Store
deleted file mode 100644
index 55eaa8bc..00000000
--- a/externals/grill/xsample/.DS_Store
+++ /dev/null
Binary files 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.
-
- <one line to give the program's name and a brief idea of what it does.>
- Copyright (C) 19yy <name of author>
-
- 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.
-
- <signature of Ty Coon>, 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
--- a/externals/grill/xsample/maxmsp/xsample.help
+++ /dev/null
Binary files 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&currency_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 <math.h>
-#include <stdio.h>
-
-#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<long>(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<long>(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<long>(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<long>(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 <math.h>
-
-#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<long>(*(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<long>(*(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<long>(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<long>(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<long>(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<long>(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<long>(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<long>(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 <int,int> 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 <int,int> 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 <vBasicOps.h>
- #include <vectorOps.h>
-#elif FLEXT_CPU == FLEXT_CPU_PPC && defined(__GNUG__)
- #include <vecLib/vBasicOps.h>
- #include <vecLib/vectorOps.h>
-#endif
- // this is for the UInt32 prototype (thanks to Jamie)
- // \TODO we'd rather not use Carbon but some other framework
- #ifdef __MACH__
- #include <Carbon/Carbon.h>
- #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 <ppc_intrinsics.h>
-template<typename I,typename F>
-inline I CASTINT( F f )
-{
- int i;
- __stfiwx(__fctiwz(f),0,&i);
- return i;
-}
-#elif FLEXT_CPU == FLEXT_CPU_INTEL && defined(_MSC_VER)
-template<typename I,typename F>
-inline I CASTINT(F x) {
-// by Laurent de Soras (http://ldesoras.free.fr)
-// assert (x > static_cast <double> (INT_MIN / 2) + 1.0);
-// assert (x < static_cast <double> (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<typename I,typename F> inline I CASTINT(F o) { return static_cast<I>(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<BCHNS,IOCHNS>
- #define TMPLSTF(FUN,BCHNS,IOCHNS) &thisType::FUN<BCHNS,IOCHNS>
- #define SIGFUN(FUN) &thisType::st_##FUN
- #define TMPLDEF template <int _BCHNS_,int _IOCHNS_>
- #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<BCHNS,IOCHNS>
- #define SIGFUN(FUN) &thisType::FUN
- #define TMPLDEF template <int _BCHNS_,int _IOCHNS_>
- #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 <stdio.h>
-
-#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 <flext.h>
-
-#include <math.h>
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 <stdio.h>
-
-#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<long>(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 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>CFBundleDevelopmentRegion</key>
- <string>English</string>
- <key>CFBundleExecutable</key>
- <string>xsample</string>
- <key>CFBundleIdentifier</key>
- <string>org.grrrr.xsample</string>
- <key>CFBundleInfoDictionaryVersion</key>
- <string>6.0</string>
- <key>CFBundlePackageType</key>
- <string>iLaX</string>
- <key>CFBundleSignature</key>
- <string>????</string>
- <key>CFBundleVersion</key>
- <string>1.0</string>
- <key>CSResourcesFileMapped</key>
- <string>yes</string>
-</dict>
-</plist>
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
--- a/externals/grill/xsample/xsample.mcp
+++ /dev/null
Binary files 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 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="7.10"
- Name="xsample"
- ProjectGUID="{7A2856E0-6DC1-4CD7-8A05-E6BA1DF8CA22}"
- Keyword="Win32Proj">
- <Platforms>
- <Platform
- Name="Win32"/>
- </Platforms>
- <Configurations>
- <Configuration
- Name="PD Release|Win32"
- OutputDirectory=".\pd-msvc\r"
- IntermediateDirectory=".\pd-msvc\r"
- ConfigurationType="2"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- GlobalOptimizations="TRUE"
- InlineFunctionExpansion="0"
- FavorSizeOrSpeed="1"
- OmitFramePointers="TRUE"
- OptimizeForProcessor="3"
- AdditionalIncludeDirectories="c:\programme\audio\pd\src;..\flext\source"
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;FLEXT_SYS=2"
- StringPooling="TRUE"
- RuntimeLibrary="4"
- EnableFunctionLevelLinking="TRUE"
- EnableEnhancedInstructionSet="1"
- UsePrecompiledHeader="2"
- PrecompiledHeaderThrough="prefix.h"
- WarningLevel="3"
- SuppressStartupBanner="TRUE"
- DebugInformationFormat="3"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="pd.lib "
- OutputFile="pd-msvc\xsample.dll"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="c:\programme\audio\pd\bin"
- ImportLibrary=".\pd-msvc\r/xsample.lib"
- TargetMachine="1"/>
- <Tool
- Name="VCMIDLTool"
- PreprocessorDefinitions="NDEBUG"
- MkTypLibCompatible="TRUE"
- SuppressStartupBanner="TRUE"
- TargetEnvironment="1"
- TypeLibraryName=".\pd-msvc\r/xsample.tlb"
- HeaderFileName=""/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="3079"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="PD Debug|Win32"
- OutputDirectory=".\pd-msvc\d"
- IntermediateDirectory=".\pd-msvc\d"
- ConfigurationType="2"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- OptimizeForProcessor="2"
- AdditionalIncludeDirectories="c:\data\pd\pd-cvs\src;..\flext\source"
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;FLEXT_SYS=2"
- BasicRuntimeChecks="3"
- RuntimeLibrary="5"
- RuntimeTypeInfo="TRUE"
- UsePrecompiledHeader="2"
- PrecompiledHeaderThrough="prefix.h"
- BrowseInformation="1"
- WarningLevel="3"
- SuppressStartupBanner="TRUE"
- DebugInformationFormat="4"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="pd.lib"
- OutputFile="$(outdir)/xsample.dll"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="c:\data\pd\pd-cvs\bin\"
- GenerateDebugInformation="TRUE"
- ImportLibrary=".\pd-msvc\d/xsample.lib"
- TargetMachine="1"/>
- <Tool
- Name="VCMIDLTool"
- PreprocessorDefinitions="_DEBUG"
- MkTypLibCompatible="TRUE"
- SuppressStartupBanner="TRUE"
- TargetEnvironment="1"
- TypeLibraryName=".\pd-msvc\d/xsample.tlb"
- HeaderFileName=""/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="3079"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="PD Shared Release|Win32"
- OutputDirectory=".\pd-msvc\sr"
- IntermediateDirectory=".\pd-msvc\sr"
- ConfigurationType="2"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- InlineFunctionExpansion="1"
- OptimizeForProcessor="2"
- AdditionalIncludeDirectories="&quot;c:\data\prog\pd\pd-cvs\src&quot;;c:\data\prog\packs\pthreads;..\flext\source"
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;FLEXT_SYS=2;FLEXT_SHARED"
- StringPooling="TRUE"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="TRUE"
- UsePrecompiledHeader="2"
- PrecompiledHeaderThrough="prefix.h"
- WarningLevel="3"
- SuppressStartupBanner="TRUE"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="pd.lib"
- OutputFile="$(outdir)\xsample.dll"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="&quot;c:\data\prog\pd\pd-cvs\bin&quot;;&quot;..\flext\pd-msvc&quot;"
- ImportLibrary=".\pd-msvc\s/xsample.lib"
- TargetMachine="1"/>
- <Tool
- Name="VCMIDLTool"
- PreprocessorDefinitions="NDEBUG"
- MkTypLibCompatible="TRUE"
- SuppressStartupBanner="TRUE"
- TargetEnvironment="1"
- TypeLibraryName=".\pd-msvc\r/xsample.tlb"
- HeaderFileName=""/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="3079"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="Max Shared Release|Win32"
- OutputDirectory=".\max-msvc\s"
- IntermediateDirectory=".\max-msvc\s"
- ConfigurationType="2"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- InlineFunctionExpansion="1"
- OptimizeForProcessor="2"
- AdditionalIncludeDirectories="F:\prog\audio\MaxWinSDK\c74support\max-includes,F:\prog\audio\MaxWinSDK\c74support\msp-includes,f:\prog\packs\pthreads;..\flext\source"
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;FLEXT_SYS=1;FLEXT_SHARED"
- StringPooling="TRUE"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="TRUE"
- UsePrecompiledHeader="2"
- WarningLevel="3"
- SuppressStartupBanner="TRUE"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="maxapi.lib maxext.lib maxaudio.lib "
- OutputFile="max-msvc\s\xsample.mxe"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="&quot;F:\prog\audio\MaxWinSDK\c74support\max-includes\win-includes\release&quot;;&quot;F:\prog\audio\MaxWinSDK\c74support\msp-includes\win-includes\release&quot;;..\flext\max-msvc"
- ImportLibrary=".\max-msvc\d/xsample.lib"
- TargetMachine="1"/>
- <Tool
- Name="VCMIDLTool"
- PreprocessorDefinitions="NDEBUG"
- MkTypLibCompatible="TRUE"
- SuppressStartupBanner="TRUE"
- TargetEnvironment="1"
- TypeLibraryName=".\pd-msvc\r/xsample.tlb"
- HeaderFileName=""/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="3079"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="Max Debug|Win32"
- OutputDirectory=".\max-msvc\d"
- IntermediateDirectory=".\max-msvc\d"
- ConfigurationType="2"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- InlineFunctionExpansion="0"
- OptimizeForProcessor="0"
- AdditionalIncludeDirectories="&quot;C:\data\prog\audio\maxmspsdk_win\4.5 headers\c74support\max-includes&quot;;&quot;C:\data\prog\audio\maxmspsdk_win\4.5 headers\c74support\msp-includes&quot;;..\flext\source"
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;FLEXT_SYS=1"
- StringPooling="TRUE"
- RuntimeLibrary="0"
- StructMemberAlignment="2"
- UsePrecompiledHeader="2"
- PrecompiledHeaderThrough="prefix.h"
- WarningLevel="3"
- SuppressStartupBanner="TRUE"
- DebugInformationFormat="3"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="maxapi.lib maxaudio.lib "
- OutputFile="max-msvc\d\xsample.mxe"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="&quot;C:\data\prog\audio\maxmspsdk_win\4.5 headers\c74support\max-includes&quot;;&quot;C:\data\prog\audio\maxmspsdk_win\4.5 headers\c74support\msp-includes&quot;;&quot;..\flext\max-msvc&quot;"
- GenerateDebugInformation="TRUE"
- TargetMachine="1"/>
- <Tool
- Name="VCMIDLTool"
- PreprocessorDefinitions="NDEBUG"
- MkTypLibCompatible="TRUE"
- SuppressStartupBanner="TRUE"
- TargetEnvironment="1"
- TypeLibraryName=".\pd-msvc\r/xsample.tlb"
- HeaderFileName=""/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="3079"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="Max Release|Win32"
- OutputDirectory=".\max-msvc\r"
- IntermediateDirectory=".\max-msvc\r"
- ConfigurationType="2"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- GlobalOptimizations="TRUE"
- InlineFunctionExpansion="0"
- FavorSizeOrSpeed="1"
- OmitFramePointers="TRUE"
- OptimizeForProcessor="3"
- AdditionalIncludeDirectories="&quot;C:\data\prog\audio\maxmspsdk_win\4.5 headers\c74support\max-includes&quot;;&quot;C:\data\prog\audio\maxmspsdk_win\4.5 headers\c74support\msp-includes&quot;;..\flext\source"
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;FLEXT_SYS=1"
- StringPooling="TRUE"
- RuntimeLibrary="0"
- StructMemberAlignment="2"
- BufferSecurityCheck="FALSE"
- EnableEnhancedInstructionSet="1"
- UsePrecompiledHeader="2"
- PrecompiledHeaderThrough="prefix.h"
- WarningLevel="3"
- SuppressStartupBanner="TRUE"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="maxapi.lib maxaudio.lib "
- OutputFile="max-msvc\xsample.mxe"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="&quot;C:\data\prog\audio\maxmspsdk_win\4.5 headers\c74support\max-includes&quot;;&quot;C:\data\prog\audio\maxmspsdk_win\4.5 headers\c74support\msp-includes&quot;;&quot;..\flext\max-msvc&quot;"
- ImportLibrary=".\max-msvc\r/xsample.lib"
- TargetMachine="1"/>
- <Tool
- Name="VCMIDLTool"
- PreprocessorDefinitions="NDEBUG"
- MkTypLibCompatible="TRUE"
- SuppressStartupBanner="TRUE"
- TargetEnvironment="1"
- TypeLibraryName=".\pd-msvc\r/xsample.tlb"
- HeaderFileName=""/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="3079"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="doc"
- Filter="">
- <File
- RelativePath="readme.txt">
- </File>
- </Filter>
- <File
- RelativePath="source\groove.cpp">
- <FileConfiguration
- Name="PD Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;FLEXT_SHARED"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Shared Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;FLEXT_SHARED"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;FLEXT_SYS=1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="source\inter.cpp">
- <FileConfiguration
- Name="PD Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;FLEXT_SHARED"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Shared Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;FLEXT_SHARED"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;FLEXT_SYS=1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="source\inter.h">
- </File>
- <File
- RelativePath="source\main.cpp">
- <FileConfiguration
- Name="PD Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;FLEXT_SHARED"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Shared Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;FLEXT_SHARED"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;FLEXT_SYS=1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="source\main.h">
- </File>
- <File
- RelativePath="source\play.cpp">
- <FileConfiguration
- Name="PD Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;FLEXT_SHARED"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Shared Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;FLEXT_SHARED"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;FLEXT_SYS=1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- </File>
- <File
- RelativePath="source\record.cpp">
- <FileConfiguration
- Name="PD Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;$(NoInherit)"
- BasicRuntimeChecks="3"
- BrowseInformation="1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="PD Shared Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;FLEXT_SHARED"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Shared Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;FLEXT_SYS=2;FLEXT_SHARED"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;FLEXT_SYS=1"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Max Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""/>
- </FileConfiguration>
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
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 = "<group>";
- };
-//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 = "<group>";
- };
- 0867D69AFE84028FC02AAC07 = {
- children = (
- E98C3076078D948800EC0264,
- E94AC9630789EEA300AE1770,
- E94AC9610789EE8700AE1770,
- E9974DFA0770750400206F68,
- E9974DFB0770750400206F68,
- );
- isa = PBXGroup;
- name = "External Frameworks and Libraries";
- refType = 4;
- sourceTree = "<group>";
- };
- 08FB77ACFE841707C02AAC07 = {
- children = (
- E9974EAF07708BF700206F68,
- E9974E58077084DA00206F68,
- E9974E2B07707D1400206F68,
- E9974DE50770749400206F68,
- E9974DE60770749400206F68,
- E9974DE70770749400206F68,
- E9974DE80770749400206F68,
- E9974DE90770749400206F68,
- E9974DEA0770749400206F68,
- E9974DEB0770749400206F68,
- );
- isa = PBXGroup;
- name = Source;
- refType = 4;
- sourceTree = "<group>";
- };
-//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 = "<absolute>";
- };
- E94AC9630789EEA300AE1770 = {
- isa = PBXFileReference;
- lastKnownFileType = archive.ar;
- name = "libflext-pd_sd.a";
- path = "/usr/local/lib/libflext-pd_sd.a";
- refType = 0;
- sourceTree = "<absolute>";
- };
- E94AC9640789EEA300AE1770 = {
- fileRef = E94AC9630789EEA300AE1770;
- isa = PBXBuildFile;
- settings = {
- };
- };
- E98C3076078D948800EC0264 = {
- isa = PBXFileReference;
- lastKnownFileType = wrapper.framework;
- name = vecLib.framework;
- path = /System/Library/Frameworks/vecLib.framework;
- refType = 0;
- sourceTree = "<absolute>";
- };
- 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 = "<group>";
- };
- E9974DE60770749400206F68 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.cpp.cpp;
- name = inter.cpp;
- path = source/inter.cpp;
- refType = 4;
- sourceTree = "<group>";
- };
- E9974DE70770749400206F68 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.h;
- name = inter.h;
- path = source/inter.h;
- refType = 4;
- sourceTree = "<group>";
- };
- E9974DE80770749400206F68 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.cpp.cpp;
- name = main.cpp;
- path = source/main.cpp;
- refType = 4;
- sourceTree = "<group>";
- };
- E9974DE90770749400206F68 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.h;
- name = main.h;
- path = source/main.h;
- refType = 4;
- sourceTree = "<group>";
- };
- E9974DEA0770749400206F68 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.cpp.cpp;
- name = play.cpp;
- path = source/play.cpp;
- refType = 4;
- sourceTree = "<group>";
- };
- E9974DEB0770749400206F68 = {
- fileEncoding = 30;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.cpp.cpp;
- name = record.cpp;
- path = source/record.cpp;
- refType = 4;
- sourceTree = "<group>";
- };
- 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 = "<absolute>";
- };
- E9974DFB0770750400206F68 = {
- isa = PBXFileReference;
- lastKnownFileType = wrapper.framework;
- name = MaxAudioAPI.framework;
- path = /Library/Frameworks/MaxAudioAPI.framework;
- refType = 0;
- sourceTree = "<absolute>";
- };
- E9974E2B07707D1400206F68 = {
- fileEncoding = 4;
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.h;
- name = prefix.h;
- path = source/prefix.h;
- refType = 4;
- sourceTree = "<group>";
- };
- 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 = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>
-<!DOCTYPE plist PUBLIC \"-//Apple Computer//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">
-<plist version=\"1.0\">
-<dict>
- <key>CFBundleDevelopmentRegion</key>
- <string>English</string>
- <key>CFBundleExecutable</key>
- <string>Max xsample static</string>
- <key>CFBundleIdentifier</key>
- <string>com.yourcompany.Max_xsample_static</string>
- <key>CFBundleInfoDictionaryVersion</key>
- <string>6.0</string>
- <key>CFBundlePackageType</key>
- <string>APPL</string>
- <key>CFBundleSignature</key>
- <string>????</string>
- <key>CFBundleVersion</key>
- <string>1.0</string>
- <key>CSResourcesFileMapped</key>
- <string>yes</string>
-</dict>
-</plist>
-";
- 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 = "<group>";
- };
- 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 = "<group>";
- };
- 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 = "<group>";
- };
- E9974EC507708CFA00206F68 = {
- children = (
- E9974EC307708CED00206F68,
- );
- isa = PBXGroup;
- name = Max;
- refType = 4;
- sourceTree = "<group>";
- };
- 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 = "<absolute>"; };
- E94AC9630789EEA300AE1770 /* libflext-pd_sd.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = "libflext-pd_sd.a"; path = "/usr/local/lib/libflext-pd_sd.a"; sourceTree = "<absolute>"; };
- E98C3076078D948800EC0264 /* vecLib.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = vecLib.framework; path = /System/Library/Frameworks/vecLib.framework; sourceTree = "<absolute>"; };
- E9974DE50770749400206F68 /* groove.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = groove.cpp; path = source/groove.cpp; sourceTree = "<group>"; };
- E9974DE60770749400206F68 /* inter.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = inter.cpp; path = source/inter.cpp; sourceTree = "<group>"; };
- E9974DE70770749400206F68 /* inter.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = inter.h; path = source/inter.h; sourceTree = "<group>"; };
- E9974DE80770749400206F68 /* main.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = main.cpp; path = source/main.cpp; sourceTree = "<group>"; };
- E9974DE90770749400206F68 /* main.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = main.h; path = source/main.h; sourceTree = "<group>"; };
- E9974DEA0770749400206F68 /* play.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = play.cpp; path = source/play.cpp; sourceTree = "<group>"; };
- E9974DEB0770749400206F68 /* record.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = record.cpp; path = source/record.cpp; sourceTree = "<group>"; };
- E9974DFA0770750400206F68 /* MaxAPI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MaxAPI.framework; path = /Library/Frameworks/MaxAPI.framework; sourceTree = "<absolute>"; };
- E9974DFB0770750400206F68 /* MaxAudioAPI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MaxAudioAPI.framework; path = /Library/Frameworks/MaxAudioAPI.framework; sourceTree = "<absolute>"; };
- E9974E2B07707D1400206F68 /* prefix.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = prefix.h; path = source/prefix.h; sourceTree = "<group>"; };
- 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 = "<group>"; };
- E9974EAF07708BF700206F68 /* xsample.rsrc */ = {isa = PBXFileReference; lastKnownFileType = archive.rsrc; name = xsample.rsrc; path = source/xsample.rsrc; sourceTree = "<group>"; };
- E9974EC307708CED00206F68 /* xsample-objectmappings.txt */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; name = "xsample-objectmappings.txt"; path = "maxmsp/xsample-objectmappings.txt"; sourceTree = "<group>"; };
-/* 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 = "<group>";
- };
- 0867D691FE84028FC02AAC07 /* xsample */ = {
- isa = PBXGroup;
- children = (
- E9974EC507708CFA00206F68 /* Max */,
- 08FB77ACFE841707C02AAC07 /* Source */,
- 0867D69AFE84028FC02AAC07 /* External Frameworks and Libraries */,
- 034768DDFF38A45A11DB9C8B /* Products */,
- );
- name = xsample;
- sourceTree = "<group>";
- };
- 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 = "<group>";
- };
- 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 = "<group>";
- };
- E9974EC507708CFA00206F68 /* Max */ = {
- isa = PBXGroup;
- children = (
- E9974EC307708CED00206F68 /* xsample-objectmappings.txt */,
- );
- name = Max;
- sourceTree = "<group>";
- };
-/* 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 */;
-}